Zylann / godot_voxel

Voxel module for Godot Engine
MIT License
2.61k stars 245 forks source link

Connecting a SDFPreview directly to a input node that is connected to the output crashes the editor #364

Open Mai-Lapyst opened 2 years ago

Mai-Lapyst commented 2 years ago

When connecting an SDFPreview directly to an input node when editing an generator graph, godot crashes with following trace:

handle_crash: Program crashed with signal 11
Engine version: Godot Engine v3.5.beta.custom_build (cec7fc4ffeba4de992436ed9c7f8fe428c22a6b1)
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x42560) [0x7f88ddb76560] (??:0)
[2] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x1165d5b] (/home/mai/projects/github/godot/modules/voxel/editor/graph/voxel_graph_editor.cpp:895)
[3] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x116acc9] (/home/mai/projects/github/godot/modules/voxel/editor/graph/voxel_graph_editor.cpp:115)
[4] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x117322f] (/home/mai/projects/github/godot/modules/voxel/editor/graph/voxel_graph_editor.cpp:293)
[5] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x35799e4] (/home/mai/projects/github/godot/core/object.cpp:929)
[6] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x24fa402] (/home/mai/projects/github/godot/scene/main/scene_tree.cpp:1073)
[7] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x2505d7e] (/home/mai/projects/github/godot/scene/main/scene_tree.cpp:604 (discriminator 3))
[8] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x8506c4] (/home/mai/projects/github/godot/main/main.cpp:2274)
[9] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x833821] (/home/mai/projects/github/godot/platform/x11/os_x11.cpp:3835)
[10] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x81a56f] (/home/mai/projects/github/godot/platform/x11/godot_x11.cpp:55)
[11] /usr/lib/libc.so.6(+0x2d310) [0x7f88ddb61310] (??:0)
[12] /usr/lib/libc.so.6(__libc_start_main+0x81) [0x7f88ddb613c1] (??:0)
[13] /home/mai/projects/github/godot/bin/godot.x11.opt.tools.64() [0x8202f5] (??:?)
-- END OF BACKTRACE --

If however, you either connect the input only to the preview, or the input does not effect the output node, the editor does not crash.

Steps to reproduce:

Godot version: 3.x; commit cec7fc4ffeba4de992436ed9c7f8fe428c22a6b1 GodotVoxel commit: 07c756dbb2909c9a7db39cfd64a38f8df1cb54e2

Zylann commented 2 years ago

Looks like due to how inputs are implemented it is actually not possible to plug a debug view on them. Their output is only valid for a very short time during execution of the graph but gets unbound after that (and there is no safe way to "not unbind" them), so when the preview tries to update the data is no longer available.

I'll push a fix for the editor not to crash, but will look for a way to make this case work properly later.

Zylann commented 2 years ago

It should no longer crash in master and godot3.x branches.

Mai-Lapyst commented 2 years ago

Can confirm that the current godot3.x branch dosn't produce a crash anymore