-
-
Notifications
You must be signed in to change notification settings - Fork 21.2k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Engine and/or entire computer crashes when resizing the game window and rendering/driver/threads/thread_model
= Multi-Threaded
#64766
Comments
I'm on Fedora 36, Radeon R9 390X with the amdgpu driver, also using Plasma. For me, resizing the window freezes the application on multi-threaded on X11. On Wayland it does crash, but with no stacktrace, it just prints |
I can confirm this on 4.0.alpha ff04cb827 (Fedora 36, KDE Plasma + KWin on X11, NVIDIA 515.65.01). Crash does not always happen when resizing, but dragging the resize handle slowly is a sure way to make it happen. X11 will appear to freeze for ~10 seconds when the engine crashes. The default backtrace isn't very informative:
gdb gives a more complete backtrace: (gdb) bt
#0 0x00007fffdd6be1cc in ?? () from /lib64/libnvidia-glcore.so.515.65.01
#1 0x00007fffdd69f344 in ?? () from /lib64/libnvidia-glcore.so.515.65.01
#2 0x00007fffdd5e5a96 in ?? () from /lib64/libnvidia-glcore.so.515.65.01
#3 0x00007fffdd5e5ba1 in ?? () from /lib64/libnvidia-glcore.so.515.65.01
#4 0x00007fffdd5e5d31 in ?? () from /lib64/libnvidia-glcore.so.515.65.01
#5 0x00007fffdf2a4a9b in ?? () from /lib64/libGLX_nvidia.so.0
#6 0x0000000005a8a438 in VulkanContext::_clean_up_swap_chain (this=0xa9902f0,
window=0xaba9548) at drivers/vulkan/vulkan_context.cpp:1538
#7 0x0000000005a888ad in VulkanContext::_update_swap_chain (this=0xa9902f0, window=0xaba9548)
at drivers/vulkan/vulkan_context.cpp:1560
#8 0x0000000005a8aced in VulkanContext::prepare_buffers (this=0xa9902f0)
at drivers/vulkan/vulkan_context.cpp:2056
#9 0x0000000005a17171 in RenderingDeviceVulkan::prepare_screen_for_drawing (this=0xad7d4f0)
at drivers/vulkan/rendering_device_vulkan.cpp:9151
#10 0x0000000008a6238d in RendererCompositorRD::prepare_for_blitting_render_targets (
this=0xa8f0830) at servers/rendering/renderer_rd/renderer_compositor_rd.cpp:37
#11 0x00000000088c2d10 in RendererViewport::draw_viewports (this=0xb25bc50)
at servers/rendering/renderer_viewport.cpp:740
#12 0x0000000008939713 in RenderingServerDefault::_draw (this=0xb228e10, p_swap_buffers=true,
frame_step=0.0013591249999259595) at servers/rendering/rendering_server_default.cpp:91
#13 0x000000000893b07f in RenderingServerDefault::_thread_draw (this=0xb228e10,
p_swap_buffers=true, frame_step=0.0013591249999259595)
at servers/rendering/rendering_server_default.cpp:336
#14 0x000000000898bff9 in CommandQueueMT::Command2<RenderingServerDefault, void (RenderingServerDefault::*)(bool, double), bool, double>::call (this=0xd9dfde8)
at ./core/templates/command_queue_mt.h:322
#15 0x000000000848833c in CommandQueueMT::_flush (this=0xb229050)
at ./core/templates/command_queue_mt.h:373
#16 0x0000000008481ee0 in CommandQueueMT::wait_and_flush (this=0xb229050)
at ./core/templates/command_queue_mt.h:414
#17 0x000000000893b13d in RenderingServerDefault::_thread_loop (this=0xb228e10)
at servers/rendering/rendering_server_default.cpp:358
#18 0x000000000893ab0d in RenderingServerDefault::_thread_callback (_instance=0xb228e10)
at servers/rendering/rendering_server_default.cpp:345
#19 0x0000000009018f8f in Thread::callback (p_self=0xb2293e0, p_settings=...,
p_callback=0x893aaf0 <RenderingServerDefault::_thread_callback(void*)>,
p_userdata=0xb228e10) at core/os/thread.cpp:75
#20 0x0000000009019e3a in std::__invoke_impl<void, void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> (
__f=@0xd04ec78: 0x9018f10 <Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*)>, __args=@0xd04ec58: 0xb228e10, __args=@0xd04ec58: 0xb228e10,
__args=@0xd04ec58: 0xb228e10, __args=@0xd04ec58: 0xb228e10)
at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/invoke.h:61
#21 0x0000000009019cb1 in std::__invoke<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> (
__fn=@0xd04ec78: 0x9018f10 <Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*)>, __args=@0xd04ec58: 0xb228e10, __args=@0xd04ec58: 0xb228e10,
__args=@0xd04ec58: 0xb228e10, __args=@0xd04ec58: 0xb228e10)
at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/invoke.h:96
#22 0x0000000009019c2d in std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul> (this=0xd04ec58)
at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/std_thread.h:252
#23 0x0000000009019b95 in std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::operator() (this=0xd04ec58)
at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/std_thread.h:259
#24 0x0000000009019809 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(Th--Type <RET> for more, q to quit, c to continue without paging--
read*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> > >::_M_run (this=0xd04ec50)
at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/std_thread.h:210
#25 0x0000000009b31403 in execute_native_thread_routine ()
#26 0x00007ffff7a8ce2d in start_thread () from /lib64/libc.so.6
#27 0x00007ffff7b121b0 in clone3 () from /lib64/libc.so.6 |
Same/similar issue still in Godot v4.0.beta2.mono.official (f8745f2)
|
Removing |
I'm having the same issue in a project that isn't using the multi-threaded model; it's instead using I'm not sure if they are two different issues, as it seems if I switch to System Info
|
@RobTheFiveNine I can also reproduce this crash with Although I can only reproduce the crash when using Wayland. X11 seems to work fine (Godot 4.1.1) |
So this is interesting, using GodotSteam "macos-g413-s158-gs4421" Godot 4.1.3, I get the resize freeze when thread mode is set to Single Safe. If I set it to multi threaded - resizing works and the scenes run (from the editor) a lot nicer too. The editor continues to be responsive, only the game window hangs. If I use the stop option in the editor, it ends the game process successfully. MBP Apple M1, 32GB ram, macOS Sonoma 14.1 (23B74) |
I think there's been some work on the multi-threaded renderer recently, and I can now only reproduce this crash (on Windows/NVIDIA) when vsync is disabled. Here's an automatically-resizing MRP which crashes within seconds on a current build (5675c76). It doesn't crash on macOS, haven't tested Linux. |
Godot version
v4.0.alpha.custom_build [61f045245]
System information
Arch Linux x86_64, Kernel 5.15.61-1-lts, AMD RX 6800 XT, Mesa 22.1.6, Plasma 5.25.4, KWin+X11
Issue description
Similar to #58606
Steps to reproduce
Minimal reproduction project
empty.zip
The text was updated successfully, but these errors were encountered: