godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.22k stars 21.22k forks source link

Editor crash without any logs when opening a scene containing a noise shader #95466

Closed robbiesaurus closed 3 months ago

robbiesaurus commented 3 months ago

Tested versions

Reproducible in v4.2.2-stable_mono_win64

System information

Windows 10 - Godot 4.2.2 Stable Mono - Vulkan Forward+ - NVIDIA 3070

Issue description

Attempting to open a packed scene containing a noise shader crashes the editor without any logging.

However if this scene is created from scratch (creating the mesh then assigning the noise shader), it works fine.

The editor will only crash after this scene has been created, saved to the file system as a packed scene, restarting your PC then trying to open the packed scene.

Steps to reproduce

  1. Open the attached project.
  2. Open the packed scene Assets/Scenes/noise_clouds.tscn

Minimal reproduction project (MRP)

ShaderBug.zip

clayjohn commented 3 months ago

I can reproduce the crash on master with the following backtrace:

handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.rc.custom_build (a7a124a57d643103c882a781dfe1f3772363ecc7)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x42520) [0x7bec5c242520] (??:0)
[2] DynamicBVH::_remove_leaf(DynamicBVH::Node*) (/home/clayjohn/dev/godot/core/math/dynamic_bvh.cpp:105)
[3] DynamicBVH::remove(DynamicBVH::ID const&) (/home/clayjohn/dev/godot/core/math/dynamic_bvh.cpp:392)
[4] RendererSceneCull::_unpair_instance(RendererSceneCull::Instance*) (/home/clayjohn/dev/godot/servers/rendering/renderer_scene_cull.cpp:1880)
[5] RendererSceneCull::instance_set_base(RID, RID) (/home/clayjohn/dev/godot/servers/rendering/renderer_scene_cull.cpp:537)
[6] RenderingServerDefault::instance_set_base(RID, RID) (/home/clayjohn/dev/godot/servers/rendering/rendering_server_default.h:800)
[7] VisualInstance3D::set_base(RID const&) (/home/clayjohn/dev/godot/scene/3d/visual_instance_3d.cpp:148)
[8] CSGShape3D::_update_shape() (/home/clayjohn/dev/godot/modules/csg/csg_shape.cpp:304)
[9] void call_with_variant_args_helper<CSGShape3D>(CSGShape3D*, void (CSGShape3D::*)(), Variant const**, Callable::CallError&, IndexSequence<>) (/home/clayjohn/dev/godot/./core/variant/binder_common.h:309)
[10] void call_with_variant_args<CSGShape3D>(CSGShape3D*, void (CSGShape3D::*)(), Variant const**, int, Callable::CallError&) (/home/clayjohn/dev/godot/./core/variant/binder_common.h:419)
[11] CallableCustomMethodPointer<CSGShape3D>::call(Variant const**, int, Variant&, Callable::CallError&) const (/home/clayjohn/dev/godot/./core/object/callable_method_pointer.h:104)
[12] Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const (/home/clayjohn/dev/godot/core/variant/callable.cpp:58)
[13] CallQueue::_call_function(Callable const&, Variant const*, int, bool) (/home/clayjohn/dev/godot/core/object/message_queue.cpp:221)
[14] CallQueue::flush() (/home/clayjohn/dev/godot/core/object/message_queue.cpp:270)
[15] SceneTree::physics_process(double) (/home/clayjohn/dev/godot/scene/main/scene_tree.cpp:492)
[16] Main::iteration() (/home/clayjohn/dev/godot/main/main.cpp:4070)
[17] OS_LinuxBSD::run() (/home/clayjohn/dev/godot/platform/linuxbsd/os_linuxbsd.cpp:962)
[18] /home/clayjohn/dev/godot/bin/godot.linuxbsd.editor.dev.x86_64.llvm(main+0x18e) [0x5e7572e5497e] (/home/clayjohn/dev/godot/platform/linuxbsd/godot_linuxbsd.cpp:86)
[19] /lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7bec5c229d90] (??:0)
[20] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7bec5c229e40] (??:0)
[21] /home/clayjohn/dev/godot/bin/godot.linuxbsd.editor.dev.x86_64.llvm(_start+0x25) [0x5e7572e54725] (??:?)
-- END OF BACKTRACE --
clayjohn commented 3 months ago

Based on the stack trace, this might be a duplicate of https://github.com/godotengine/godot/issues/80749 which might be fixed by https://github.com/godotengine/godot/pull/81069

It seems that https://github.com/godotengine/godot/issues/92615 and https://github.com/godotengine/godot/issues/69258 might also stem from the same problem

robbiesaurus commented 3 months ago

Hey @clayjohn thanks for the information. For future reference, how do I get a backtrace like the one you posted? I wasn't able to find logs anywhere...

clayjohn commented 3 months ago

Hey @clayjohn thanks for the information. For future reference, how do I get a backtrace like the one you posted? I wasn't able to find logs anywhere...

You get a backtrace like this from running a development build of the engine from the command line. I.e. a version you compiled manually

Calinou commented 3 months ago

Superseded by https://github.com/godotengine/godot/issues/80749.