Godot version:
built from commit: c97dea47b582ec66df4d0565df83902826df7829
Godot Engine v4.0.dev.custom_build.c97dea47b
(also happens on Godot Engine v4.0.dev.calinou.c3964b6c8 and Godot Engine v4.0.dev.custom_build.c3964b6c8, didn't test other)
OS/device including version:
Pop!_OS 20.04 LTS (64bit)
Nvidia GTX 960
Driver version: 455.28
Kernel: 5.4.0-7642-generic
DE/WM: dwm (also tested on Pop shell (variation of GNOME) with same results)
Issue description:
Whenever pop up appears, Godot hangs.
Steps to reproduce:
Start Godot and click on anything that causes pop up to appear.
Video:
https://youtu.be/MtH823uUKew
Minimal reproduction project:
Doesn't apply
Logs (I killed Godot with xkill when became unresponsive):
./godot.linuxbsd.tools.64
Godot Engine v4.0.dev.custom_build.c97dea47b - https://godotengine.org
ERROR: Can't find layer: VK_LAYER_KHRONOS_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_LUNARG_standard_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_GOOGLE_threading
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
DisplayServer::_create_window 0 want rect: 448, 240, 1024, 600 got rect 448, 240, 1024
, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1024, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1052, 1057
Editing project: /home/dave/Work/godot/test (::home::dave::Work::godot::test)
Godot Engine v4.0.dev.custom_build.c97dea47b - https://godotengine.org
ERROR: Can't find layer: VK_LAYER_KHRONOS_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_LUNARG_standard_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_GOOGLE_threading
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
DisplayServer::_create_window 0 want rect: 448, 240, 1024, 600 got rect 448, 240, 1024, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1024, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1052, 1057
ERROR: Some texture bindings were not properly freed (leaked CanvasItems?)
at: ~RasterizerCanvasRD (servers/rendering/rasterizer_rd/rasterizer_canvas_rd.cpp:2500)
ERROR: Attempted to free invalid ID: 0
at: _free_internal (drivers/vulkan/rendering_device_vulkan.cpp:6956)
DisplayServer::_create_window 1 want r
ect: 66, 55, 373, 241 got rect 66, 55, 373, 241
X connection to :1 broken (explicit kill or server shutdown).
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7fe93616f210] (??:0)
[2] Object::get(StringName c
onst&, bool*) const (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/object.cpp:456)
[3] EditorExportPlatformAndroid::_check_for_changes_poll_thread(void*) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/android/export/export.cpp:303 (discriminator 3))
[4] ThreadPosix::thread_callback(void*) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/g
odot/drivers/unix/thread_posix.cpp:73)
[5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x9609) [0x7fe936677609] (??:0)
[6] /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7fe93624b293] (??:0)
-- END OF BACKTRACE --
I'm not able to reproduce the issue on Ubuntu 20.04 with either Gnome or dwm.
If you don't mind spending more time to check, there are a few other things that might help investigating:
--single-window? You need to start your project directly using -e --path [path_to_your_project] for this option to work properly.Duplicate of https://github.com/godotengine/godot/issues/41614.
Can you reproduce the issue on 3.2.5 beta?
https://downloads.tuxfamily.org/godotengine/3.2/beta5
I guess you meant to reference 3.2.4-beta1 and not 3.2-beta5? :)
Duplicate of #41614.
While it might also be caused by the Nvidia driver, there's a crash stacktrace here, I'm not sure it's exactly the same.
It looks like it could be a different issue, possibly due to #41910. This one is a complete softlock on the main thread after the popup appears, while the issue with the nvidia driver is a freeze for some time before the popup is rendered.
Can you reproduce the issue on 3.2.5 beta?
https://downloads.tuxfamily.org/godotengine/3.2/beta5I guess you meant to reference 3.2.4-beta1 and not 3.2-beta5? :)
Yes, fixed! Thanks :)
I'm not able to reproduce the issue on Ubuntu 20.04 with either Gnome or dwm.
If you don't mind spending more time to check, there are a few other things that might help investigating:
* Can you reproduce the issue on 3.2.4 beta? https://downloads.tuxfamily.org/godotengine/3.2.4/beta1
Doesn't freeze on Godot Engine v3.2.4.beta1.official
* Can you reproduce the issue when starting Godot master with `--single-window`? You need to start your project directly using `-e --path [path_to_your_project]` for this option to work properly.
Doesn't freeze with --single-window option.
It looks like it could be a different issue, possibly due to #41910. This one is a complete softlock on the main thread after the popup appears, while the issue with the nvidia driver is a freeze for some time before the popup is rendered.
Tried 8a84b3cfd352adac4c5a35d599be8d83db3ba8d9 which is before #41910 and Godot still becomes unresponsive. (Godot Engine v4.0.dev.custom_build.8a84b3cfd)
While it might also be caused by the Nvidia driver, there's a crash stacktrace here, I'm not sure it's exactly the same.
I killed with xkill. That's why there's crash stacktrace. In the stacktrace is mentioned that it was killed.
* Would you be able to run Godot from vs code or another debugger? I'm interested in pausing Godot from the debugger while it's freezing to check the call stack on the main thread. Let me know in case you'd like to try that and need more details.
This would be interesting. Tell me all the tools I need to set up for it. I don't mind sharing my screen on for example Godot's Discord server.
@DavidHusicka Thanks for testing! Since it's not due to #41910 it's probably not the threading issue I was thinking about. And it's nice to know it doesn't affect the incoming 3.2 release.
For the debugger, you just need to install Visual Studio Code (there are probably alternatives but I haven't tried). This is how you set it up for Godot:
https://docs.godotengine.org/en/3.2/development/cpp/configuring_an_ide/visual_studio_code.html
There are a few differences though for master compared to 3.2:
platform=linux instead of platform=x11 in tasks.jsongodot.linuxbsd.tools.64 instead of godot.x11.tools.64 in launch.jsonThen when you experience the freeze, press pause in the run bar:

And on the left side panel, go to the run tag, open the callstack on the main thread, right click in the callstack and select "Copy Call Stack".

One last thing I'm interested in, is to get extra log about x server events. For that, open platform/linuxbsd/display_server_x11.cpp, uncomment line 87:
#define DISPLAY_SERVER_X11_DEBUG_LOGS_ENABLED
After compiling again, you will see more log in the console. I'd like to see what you get when the freezing occurs.
@pouleyKetchoupp
Hey i'm having the same exact problem as OP has, with the difference of the popup window showing but it dosen't seem to render(transparent with borders and contents behind it are inside the window like a image).
that the the whole application softlocks and i cant click or interact with anything in the application and i have to manually shut it down via htop.
build from commit: 32be929
Godot Engine v4.0 master
Pop!_OS 20.04 LTS (64bit)
Nvidia GTX 980
Driver version: 455.28
Kernel: 5.4.0-7642-generic
So i did as you instructed with debugging via vscode. I also uncommented line 87 from platform/linuxbsd/display_server_x11.cpp and this is the output that i got:
libc.so.6!__GI_raise(int sig) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/raise.c:50)
libc.so.6!__GI_abort() (/build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:79)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libstdc++.so.6!std::terminate() (Unknown Source:0)
libstdc++.so.6!__cxa_pure_virtual (Unknown Source:0)
Callable::call(const Callable * const this, const Variant ** p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) (/mnt/sdb1/gitworkspace/godot/core/callable.cpp:50)
DisplayServerX11::_send_window_event(DisplayServerX11 * const this, const DisplayServerX11::WindowData & wd, DisplayServer::WindowEvent p_event) (/mnt/sdb1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:2443)
DisplayServerX11::process_events(DisplayServerX11 * const this) (/mnt/sdb1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:2847)
OS_LinuxBSD::run(OS_LinuxBSD * const this) (/mnt/sdb1/gitworkspace/godot/platform/linuxbsd/os_linuxbsd.cpp:236)
main(int argc, char ** argv) (/mnt/sdb1/gitworkspace/godot/platform/linuxbsd/godot_linuxbsd.cpp:58)
Godot Engine v4.0.dev.custom_build.d5073c6b4 - https://godotengine.org
ERROR: Can't find layer: VK_LAYER_KHRONOS_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_LUNARG_standard_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_GOOGLE_threading
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
DisplayServer::_create_window 0 want rect: 448, 240, 1024, 600 got rect 448, 240, 1024, 600
[1] ConfigureNotify window=46137348 (0), event=46137348, above=0, override_redirect=0
DisplayServer::_window_changed: 0 rect: 0, 37, 1024, 600
[1] ConfigureNotify window=46137348 (0), event=46137348, above=0, override_redirect=0
[1] MapNotify window=46137348 (0)
[1] VisibilityNotify window=46137348 (0), state=0
[1] Expose window=46137348 (0), count='0'
[1] FocusIn window=46137348 (0), mode='0'
[1] EnterNotify window=46137348 (0), mode='0'
[1] ConfigureNotify window=46137348 (0), event=46137348, above=0, override_redirect=0
DisplayServer::_window_changed: 0 rect: 0, 37, 1920, 1043
[1] VisibilityNotify window=46137348 (0), state=1
[1] Expose window=46137348 (0), count='0'
[1] VisibilityNotify window=46137348 (0), state=0
[1] Expose window=46137348 (0), count='1'
[1] Expose window=46137348 (0), count='0'
ERROR: Attempted to free invalid ID: 0
at: _free_internal (drivers/vulkan/rendering_device_vulkan.cpp:6956)
[163] LeaveNotify window=46137348 (0), mode='0'
[190] EnterNotify window=46137348 (0), mode='0'
DisplayServer::_create_window 1 want rect: 97, 73, 295, 28 got rect 97, 73, 295, 28
[228] ConfigureNotify window=46137425 (1), event=46137425, above=4194315, override_redirect=1
DisplayServer::_window_changed: 1 rect: 1920, 0, 295, 28
[228] MapNotify window=46137425 (1)
[228] VisibilityNotify window=46137425 (1), state=0
[228] Expose window=46137425 (1), count='0'
[237] LeaveNotify window=46137348 (0), mode='0'
[237] FocusOut window=46137348 (0), mode='0'
[237] EnterNotify window=46137348 (0), mode='0'
[237] FocusIn window=46137348 (0), mode='0'
[237] ButtonPress window=46137348 (0), button_index=1
[237] ButtonRelease window=46137348 (0), button_index=1
[237] LeaveNotify window=46137348 (0), mode='0'
[237] EnterNotify window=46137348 (0), mode='0'
[237] ButtonPress window=46137348 (0), button_index=1
[237] ButtonRelease window=46137348 (0), button_index=1
[237] LeaveNotify window=46137348 (0), mode='0'
DisplayServer::_create_window 2 want rect: 64, 71, 373, 241 got rect 64, 71, 373, 241
DisplayServer::_create_window 3 want rect: 126, 71, 314, 241 got rect 126, 71, 314, 241
delete_sub_window: 46137425 (1)
[1] + Done "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-zhlwq3ao.g8m" 1>"/tmp/Microsoft-MIEngine-Out-zj0stgcz.8ka"
I'm new to contributing online so i apologize beforehand if i left out any information.
@Michael-Sjogren Thanks! That helps a lot. I'm still not sure what happens, but the pure virtual call in the callstack indicates something might be called on a destroyed object. I'm trying to do some guess work but no luck so far.
Do you mind giving me the same information again, but this time with also the value of some variables in DisplayServerX11::process_events (if the debugger allows you to get them)?
window_id
wd.x11_window
wd.event_callback.object
So i set a breakpoint on DisplayServerX11::process_events when im about to open a popup?
So i set a breakpoint on DisplayServerX11::process_events when im about to open a popup?
No, rather by pausing when it's frozen like you did before. It's a few levels up in the call stack you shared.
Im watching them in my watch tab in vscode, but they have no value unfortunately perhaps i wrote the expression wrong?

@Michael-Sjogren Make sure you click on the line that says DisplayServerX11::process_events in the call stack when Godot is paused (the other lines will be a bit different in yours):

Your variables seem ok. You will get something similar to this:

Then please add the terminal output from the same debugging session so I can cross-reference the numbers. Thanks!
window_id: 1
wd.x11_window: 75497553
wd.event_callback.object: 385610464
libc.so.6!__GI___poll(struct pollfd * fds, nfds_t nfds, int timeout) (poll.c:29)
libnvidia-glcore.so.455.28![Unknown/Just-In-Time compiled code] (Unknown Source:0)
vkDeviceWaitIdle(VkDevice device) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/thirdparty/vulkan/loader/trampoline.c:887)
VulkanContext::_clean_up_swap_chain(VulkanContext * const this, VulkanContext::Window * window) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/drivers/vulkan/vulkan_context.cpp:767)
VulkanContext::window_destroy(VulkanContext * const this, DisplayServer::WindowID p_window_id) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/drivers/vulkan/vulkan_context.cpp:758)
DisplayServerX11::delete_sub_window(DisplayServerX11 * const this, DisplayServer::WindowID p_id) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:733)
Window::_clear_window(Window * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/main/window.cpp:278)
Window::set_visible(Window * const this, bool p_visible) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/main/window.cpp:380)
Window::hide(Window * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/main/window.cpp:356)
PopupMenu::activate_item(PopupMenu * const this, int p_item) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/gui/popup_menu.cpp:1146)
PopupMenu::_gui_input(PopupMenu * const this, const Ref<InputEvent> & p_event) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/gui/popup_menu.cpp:331)
call_with_variant_args_helper<PopupMenu, Ref<InputEvent> const&, 0ul>(PopupMenu * p_instance, void (PopupMenu::*)(PopupMenu * const, const Ref<InputEvent> &) p_method, const Variant ** p_args, Callable::CallError & r_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/binder_common.h:212)
call_with_variant_args<PopupMenu, Ref<InputEvent> const&>(PopupMenu * p_instance, void (PopupMenu::*)(PopupMenu * const, const Ref<InputEvent> &) p_method, const Variant ** p_args, int p_argcount, Callable::CallError & r_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/binder_common.h:300)
CallableCustomMethodPointer<PopupMenu, Ref<InputEvent> const&>::call(const CallableCustomMethodPointer<PopupMenu, Ref<InputEvent> const&> * const this, const Variant ** p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/callable_method_pointer.h:97)
Callable::call(const Callable * const this, const Variant ** p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/callable.cpp:50)
Object::emit_signal(Object * const this, const StringName & p_name, const Variant ** p_args, int p_argcount) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/object.cpp:1076)
Object::emit_signal(Object * const this, const StringName & p_name, const Variant & p_arg1, const Variant & p_arg2, const Variant & p_arg3, const Variant & p_arg4, const Variant & p_arg5) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/object.cpp:1131)
Window::_window_input(Window * const this, const Ref<InputEvent> & p_ev) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/scene/main/window.cpp:909)
call_with_variant_args_helper<Window, Ref<InputEvent> const&, 0ul>(Window * p_instance, void (Window::*)(Window * const, const Ref<InputEvent> &) p_method, const Variant ** p_args, Callable::CallError & r_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/binder_common.h:212)
call_with_variant_args<Window, Ref<InputEvent> const&>(Window * p_instance, void (Window::*)(Window * const, const Ref<InputEvent> &) p_method, const Variant ** p_args, int p_argcount, Callable::CallError & r_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/binder_common.h:300)
CallableCustomMethodPointer<Window, Ref<InputEvent> const&>::call(const CallableCustomMethodPointer<Window, Ref<InputEvent> const&> * const this, const Variant ** p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/callable_method_pointer.h:97)
Callable::call(const Callable * const this, const Variant ** p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/callable.cpp:50)
DisplayServerX11::_dispatch_input_event(DisplayServerX11 * const this, const Ref<InputEvent> & p_event) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:2424)
DisplayServerX11::_dispatch_input_events(const Ref<InputEvent> & p_event) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:2407)
Input::_parse_input_event_impl(Input * const this, const Ref<InputEvent> & p_event, bool p_is_emulated) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/input/input.cpp:614)
Input::parse_input_event(Input * const this, const Ref<InputEvent> & p_event) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/input/input.cpp:439)
Input::flush_accumulated_events(Input * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/input/input.cpp:829)
Input::release_pressed_events(Input * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/core/input/input.cpp:839)
DisplayServerX11::process_events(DisplayServerX11 * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/display_server_x11.cpp:2846)
OS_LinuxBSD::run(OS_LinuxBSD * const this) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/os_linuxbsd.cpp:236)
main(int argc, char ** argv) (/mnt/64a188e1-c035-4c74-ba76-cda8929a61e1/gitworkspace/godot/platform/linuxbsd/godot_linuxbsd.cpp:58)
### Terminal Output
Godot Engine v4.0.dev.custom_build.d5073c6b4 - https://godotengine.org
DisplayServer::_create_window 0 want rect: 448, 240, 1024, 600 got rect 448, 240, 1024, 600
DisplayServer::_window_changed: 0 rect: 448, 277, 1024, 600
[1] ConfigureNotify window=75497476 (0), event=75497476, above=0, override_redirect=0
DisplayServer::_window_changed: 0 rect: 0, 37, 1920, 1043
[1] VisibilityNotify window=75497476 (0), state=1
[1] Expose window=75497476 (0), count='0'
[1] VisibilityNotify window=75497476 (0), state=0
[1] Expose window=75497476 (0), count='1'
[1] Expose window=75497476 (0), count='0'
[1] EnterNotify window=75497476 (0), mode='0'
ERROR: Attempted to free invalid ID: 0
at: _free_internal (drivers/vulkan/rendering_device_vulkan.cpp:6956)
[46] LeaveNotify window=75497476 (0), mode='0'
[62] EnterNotify window=75497476 (0), mode='0'
[222] ButtonPress window=75497476 (0), button_index=1
[229] ButtonRelease window=75497476 (0), button_index=1
[287] LeaveNotify window=75497476 (0), mode='0'
[303] EnterNotify window=75497476 (0), mode='0'
[357] ButtonPress window=75497476 (0), button_index=1
DisplayServer::_create_window 1 want rect: 64, 71, 373, 241 got rect 64, 71, 373, 241
[358] MapNotify window=75497553 (1)
[358] VisibilityNotify window=75497553 (1), state=0
[358] Expose window=75497553 (1), count='0'
[358] ButtonRelease window=75497476 (0), button_index=1
[359] FocusOut window=75497476 (0), mode='0'
[359] FocusIn window=75497553 (1), mode='0'
[367] LeaveNotify window=75497476 (0), mode='0'
[367] EnterNotify window=75497553 (1), mode='0'
[367] ButtonPress window=75497553 (1), button_index=1
[367] ButtonRelease window=75497553 (1), button_index=1
[367] LeaveNotify window=75497553 (1), mode='0'
[367] EnterNotify window=75497476 (0), mode='0'
[367] LeaveNotify window=75497476 (0), mode='0'
[367] EnterNotify window=75497476 (0), mode='0'
[367] LeaveNotify window=75497476 (0), mode='0'
[367] EnterNotify window=75497553 (1), mode='0'
[367] LeaveNotify window=75497553 (1), mode='0'
[367] EnterNotify window=75497476 (0), mode='0'
[367] LeaveNotify window=75497476 (0), mode='0'
[367] EnterNotify window=75497553 (1), mode='0'
[367] LeaveNotify window=75497553 (1), mode='0'
[367] EnterNotify window=75497476 (0), mode='0'
[367] FocusOut window=75497553 (1), mode='0'
DisplayServer::_create_window 2 want rect: 510, 190, 900, 700 got rect 510, 190, 900, 700
delete_sub_window: 75497553 (1)
[1] + Done "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-d0kfm29v.v8b" 1>"/tmp/Microsoft-MIEngine-Out-94go8kwu.qeg"
Thanks! This call stack is different from the previous one, and actually points to possibly the same issue as #41614 (it's freezing while rendering, blocked on nvidia side). That means there could be two different issues here, I'm not sure.
If you can change your nvidia driver version, try installing version 450.57. It might help if it's actually due the nvidia driver bug.
Godot version:
4.0
OS/device including version:
Linux version 5.4.0-42-generic (buildd@lgw01-amd64-038) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2))
Nvidia GeForce RGX 2080Ti
Vulkan 1.2
AMD Ryzen Threadripper 2950X 16-Core Processor
Using the nvidia 450 driver.
Having the same problem. Not completely sure what is going on yet, but at first glance it seems to be blocking in vkDeviceWaitIdle for ages.
36 #0 0x00007ffff77c5aff in __GI___poll (fds=0x7fffffffc330, nfds=1, timeout=10) at ../sysdeps/unix/sysv/linux/poll.c:29
35 #1 0x00007fffeaa527e4 in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.450.80.02
34 #2 0x00007fffeae2c329 in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.450.80.02
33 #3 0x00007fffeae4af8d in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.450.80.02
32 #4 0x00007fffeae2b31d in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.450.80.02
31 #5 0x00007fffeae2cdd6 in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.450.80.02
30 #6 0x0000000002dd1176 in vkDeviceWaitIdle (device=0x83fbc70) at thirdparty/vulkan/loader/trampoline.c:894
29 #7 0x0000000002dc8294 in VulkanContext::_clean_up_swap_chain (this=0x8041840, window=0x186ee7e8) at drivers/vulkan/vulkan_context.cpp:830
28 #8 0x0000000002dc8204 in VulkanContext::window_destroy (this=0x8041840, p_window_id=1) at drivers/vulkan/vulkan_context.cpp:821
27 #9 0x0000000001ca9190 in DisplayServerX11::delete_sub_window (this=0x80209b0, p_id=1) at platform/linuxbsd/display_server_x11.cpp:733
26 #10 0x0000000003bfe3d3 in Window::_clear_window (this=0x9dc0a90) at scene/main/window.cpp:278
25 #11 0x0000000003c01226 in Window::_notification (this=0x9dc0a90, p_what=11) at scene/main/window.cpp:772
24 #12 0x0000000002098368 in Window::_notificationv (this=0x9dc0a90, p_notification=11, p_reversed=true) at ./scene/main/window.h:40
23 #13 0x00000000031c49e7 in Popup::_notificationv (this=0x9dc0a90, p_notification=11, p_reversed=true) at ./scene/gui/popup.h:39
22 #14 0x00000000031c510b in PopupPanel::_notificationv (this=0x9dc0a90, p_notification=11, p_reversed=true) at ./scene/gui/popup.h:65
21 #15 0x0000000003be0bf7 in TooltipPanel::_notificationv (this=0x9dc0a90, p_notification=11, p_reversed=true) at scene/main/viewport.cpp:165
20 #16 0x0000000004cbaad5 in Object::notification (this=0x9dc0a90, p_notification=11, p_reversed=true) at core/object.cpp:806
19 #17 0x0000000003b68167 in Node::_propagate_exit_tree (this=0x9dc0a90) at scene/main/node.cpp:269
18 #18 0x0000000003b74ee0 in Node::_set_tree (this=0x9dc0a90, p_tree=0x0) at scene/main/node.cpp:2551
17 #19 0x0000000003b6d52e in Node::remove_child (this=0xf04a360, p_child=0x9dc0a90) at scene/main/node.cpp:1297
16 #20 0x0000000003b6711f in Node::_notification (this=0x9dc0a90, p_notification=1) at scene/main/node.cpp:162
15 #21 0x0000000001fd9954 in Node::_notificationv (this=0x9dc0a90, p_notificaion=1, p_reversed=true) at ./scene/main/node.h:45
14 #22 0x0000000002097c5f in Viewport::_notificationv (this=0x9dc0a90, p_notification=1, p_reversed=true) at ./scene/main/viewport.h:87
13 #23 0x0000000002098383 in Window::_notificationv (this=0x9dc0a90, p_notification=1, p_reversed=true) at ./scene/main/window.h:40
12 #24 0x00000000031c49e7 in Popup::_notificationv (this=0x9dc0a90, p_notification=1, p_reversed=true) at ./scene/gui/popup.h:39
11 #25 0x00000000031c510b in PopupPanel::_notificationv (this=0x9dc0a90, p_notification=1, p_reversed=true) at ./scene/gui/popup.h:65
10 #26 0x0000000003be0bf7 in TooltipPanel::_notificationv (this=0x9dc0a90, p_notification=1, p_reversed=true) at scene/main/viewport.cpp:165
9 #27 0x0000000004cbaad5 in Object::notification (this=0x9dc0a90, p_notification=1, p_reversed=true) at core/object.cpp:806
8 #28 0x0000000004cb887d in Object::_predelete (this=0x9dc0a90) at core/object.cpp:354
7 #29 0x0000000004cc4409 in predelete_handler (p_object=0x9dc0a90) at core/object.cpp:1847
6 #30 0x0000000001cdde34 in memdelete<Object> (p_class=0x9dc0a90) at ./core/os/memory.h:111
5 #31 0x0000000003b9d283 in SceneTree::_flush_delete_queue (this=0x81623d0) at scene/main/scene_tree.cpp:991
4 #32 0x0000000003b99d1d in SceneTree::iteration (this=0x81623d0, p_time=0.0166666675) at scene/main/scene_tree.cpp:419
3 #33 0x0000000001cdb9cc in Main::iteration () at main/main.cpp:2400
2 #34 0x0000000001ca1260 in OS_LinuxBSD::run (this=0x7fffffffcf00) at platform/linuxbsd/os_linuxbsd.cpp:240
1 #35 0x0000000001c9eb6c in main (argc=4, argv=0x7fffffffd3e8) at platform/linuxbsd/godot_linuxbsd.cpp:58
Still looking.
@Darkheron Please surround large blocks of text with triple backticks like this:
```
text here
```
This prevents them from taking too much space and also makes sure issue references aren't accidentally created. I edited your comment, but remember to do this next time :slightly_smiling_face:
I am sorry for being inactive lately. I will try to send my debugger output ASAP. Also, I am interested in finding the commit when this appears for the first time (which might help with some insight).
There are multiple call stacks so I send them all
libc.so.6!__GI___poll(struct pollfd * fds, nfds_t nfds, int timeout) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/poll.c:29)
libnvidia-glcore.so.455.28![Unknown/Just-In-Time compiled code] (Unknown Source:0)
vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence * pFences, VkBool32 waitAll, uint64_t timeout) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/thirdparty/vulkan/loader/trampoline.c:1057)
VulkanContext::prepare_buffers(VulkanContext * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/vulkan/vulkan_context.cpp:1208)
RenderingDeviceVulkan::prepare_screen_for_drawing(RenderingDeviceVulkan * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/vulkan/rendering_device_vulkan.cpp:7168)
RasterizerRD::prepare_for_blitting_render_targets(RasterizerRD * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/servers/rendering/rasterizer_rd/rasterizer_rd.cpp:36)
RenderingServerViewport::draw_viewports(RenderingServerViewport * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/servers/rendering/rendering_server_viewport.cpp:452)
RenderingServerRaster::draw(RenderingServerRaster * const this, bool p_swap_buffers, double frame_step) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/servers/rendering/rendering_server_raster.cpp:115)
RenderingServerWrapMT::draw(RenderingServerWrapMT * const this, bool p_swap_buffers, double frame_step) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/servers/rendering/rendering_server_wrap_mt.cpp:91)
Main::iteration() (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/main/main.cpp:2437)
OS_LinuxBSD::run(OS_LinuxBSD * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/os_linuxbsd.cpp:240)
main(int argc, char ** argv) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/godot_linuxbsd.cpp:58)
(no DisplayServerX11::process_events so couldn't provide more info in this regard even tho X lagged a little before pausing)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
_IP_ResolverPrivate::_thread_function(void * self) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/io/ip.cpp:97)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___select(int nfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/select.c:41)
DisplayServerX11::_poll_events(DisplayServerX11 * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/display_server_x11.cpp:2472)
DisplayServerX11::_poll_events_thread(void * ud) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/display_server_x11.cpp:2449)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
ThreadWorkPool::_thread_function(ThreadWorkPool::ThreadData * p_thread) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/thread_work_pool.cpp:37)
std::__invoke_impl<void, void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __f) (/usr/include/c++/9/bits/invoke.h:60)
std::__invoke<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __fn) (/usr/include/c++/9/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:244)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::operator()(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:251)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > > * const this) (/usr/include/c++/9/thread:195)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
ThreadWorkPool::_thread_function(ThreadWorkPool::ThreadData * p_thread) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/thread_work_pool.cpp:37)
std::__invoke_impl<void, void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __f) (/usr/include/c++/9/bits/invoke.h:60)
std::__invoke<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __fn) (/usr/include/c++/9/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:244)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::operator()(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:251)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > > * const this) (/usr/include/c++/9/thread:195)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
ThreadWorkPool::_thread_function(ThreadWorkPool::ThreadData * p_thread) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/thread_work_pool.cpp:37)
std::__invoke_impl<void, void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __f) (/usr/include/c++/9/bits/invoke.h:60)
std::__invoke<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __fn) (/usr/include/c++/9/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:244)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::operator()(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:251)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > > * const this) (/usr/include/c++/9/thread:195)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
ThreadWorkPool::_thread_function(ThreadWorkPool::ThreadData * p_thread) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/thread_work_pool.cpp:37)
std::__invoke_impl<void, void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __f) (/usr/include/c++/9/bits/invoke.h:60)
std::__invoke<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*>(void (*&&)(ThreadWorkPool::ThreadData *) __fn) (/usr/include/c++/9/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::_M_invoke<0ul, 1ul>(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:244)
std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> >::operator()(std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > * const this) (/usr/include/c++/9/thread:251)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(ThreadWorkPool::ThreadData*), ThreadWorkPool::ThreadData*> > > * const this) (/usr/include/c++/9/thread:195)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___clock_nanosleep(clockid_t clock_id, int flags, const struct timespec * req, struct timespec * rem) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/clock_nanosleep.c:78)
libc.so.6!__GI___nanosleep(const struct timespec * requested_time, struct timespec * remaining) (/build/glibc-ZN95T4/glibc-2.31/posix/nanosleep.c:27)
libc.so.6!usleep(useconds_t useconds) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/posix/usleep.c:32)
JoypadLinux::monitor_joypads(JoypadLinux * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/joypad_linux.cpp:203)
JoypadLinux::run_joypad_thread(JoypadLinux * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/joypad_linux.cpp:110)
JoypadLinux::joy_thread_func(void * p_user) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/linuxbsd/joypad_linux.cpp:98)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___clock_nanosleep(clockid_t clock_id, int flags, const struct timespec * req, struct timespec * rem) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/clock_nanosleep.c:78)
libc.so.6!__GI___nanosleep(const struct timespec * requested_time, struct timespec * remaining) (/build/glibc-ZN95T4/glibc-2.31/posix/nanosleep.c:27)
OS_Unix::delay_usec(const OS_Unix * const this, uint32_t p_usec) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/os_unix.cpp:239)
AudioDriverPulseAudio::thread_func(void * p_udata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/pulseaudio/audio_driver_pulseaudio.cpp:511)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___clock_nanosleep(clockid_t clock_id, int flags, const struct timespec * req, struct timespec * rem) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/clock_nanosleep.c:78)
libc.so.6!__GI___nanosleep(const struct timespec * requested_time, struct timespec * remaining) (/build/glibc-ZN95T4/glibc-2.31/posix/nanosleep.c:27)
OS_Unix::delay_usec(const OS_Unix * const this, uint32_t p_usec) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/os_unix.cpp:239)
EditorExportPlatformAndroid::_check_for_changes_poll_thread(void * ud) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/android/export/export.cpp:418)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___clock_nanosleep(clockid_t clock_id, int flags, const struct timespec * req, struct timespec * rem) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/clock_nanosleep.c:78)
libc.so.6!__GI___nanosleep(const struct timespec * requested_time, struct timespec * remaining) (/build/glibc-ZN95T4/glibc-2.31/posix/nanosleep.c:27)
OS_Unix::delay_usec(const OS_Unix * const this, uint32_t p_usec) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/os_unix.cpp:239)
EditorExportPlatformJavaScript::_server_thread_poll(void * data) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/platform/javascript/export/export.cpp:609)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___clock_nanosleep(clockid_t clock_id, int flags, const struct timespec * req, struct timespec * rem) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/clock_nanosleep.c:78)
libc.so.6!__GI___nanosleep(const struct timespec * requested_time, struct timespec * remaining) (/build/glibc-ZN95T4/glibc-2.31/posix/nanosleep.c:27)
OS_Unix::delay_usec(const OS_Unix * const this, uint32_t p_usec) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/os_unix.cpp:239)
EditorFileServer::_thread_start(void * s) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/editor/fileserver/editor_file_server.cpp:296)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libpthread.so.0!futex_wait_cancelable(unsigned int expected, unsigned int * futex_word) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/nptl/futex-internal.h:183)
libpthread.so.0!__pthread_cond_wait_common(const struct timespec * abstime, clockid_t clockid, pthread_mutex_t * mutex, pthread_cond_t * cond) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:508)
libpthread.so.0!__pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_cond_wait.c:638)
libstdc++.so.6!std::condition_variable::wait(std::unique_lock<std::mutex>&) (Unknown Source:0)
Semaphore::wait(const Semaphore * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/core/os/semaphore.h:58)
EditorResourcePreview::_thread(EditorResourcePreview * const this) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/editor/editor_resource_preview.cpp:211)
EditorResourcePreview::_thread_func(void * ud) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/editor/editor_resource_preview.cpp:99)
ThreadPosix::thread_callback(void * userdata) (/mnt/4a2a9151-8f05-4326-ad0a-f3e087d86a6c/Tools/godot/drivers/unix/thread_posix.cpp:71)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
libc.so.6!__GI___select(int nfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout) (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/select.c:41)
libnvidia-glcore.so.455.28![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)
Console output
Godot Engine v4.0.dev.custom_build.c97dea47b - https://godotengine.org
ERROR: Can't find layer: VK_LAYER_KHRONOS_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_LUNARG_standard_validation
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
ERROR: Can't find layer: VK_LAYER_GOOGLE_threading
at: _check_layers (drivers/vulkan/vulkan_context.cpp:157)
DisplayServer::_create_window 0 want rect: 448, 240, 1024, 600 got rect 448, 240, 1024
, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1024, 600
DisplayServer::_window_changed: 0 rect: 2, 21, 1052, 1057
[1] LeaveNotify window=25165826 (0), mode='0'
ERROR: Attempted to free invalid ID: 0
at: _free_internal (drivers/vulkan/rendering_device_vulkan.cpp:6956)
[83] EnterNotify window=25165826 (0), mode='0'
[202] ButtonPress window=25165826 (0), button_index=5
[202] ButtonRelease window=25165826 (0), button_index=5
[204] ButtonPress window=25165826 (0), button_index=5
[204] ButtonRelease window=25165826 (0), button_index=5
[206] ButtonPress window=25165826 (0), button_index=5
[206] ButtonRelease window=25165826 (0), button_index=5
[208] ButtonPress window=25165826 (0), button_index=5
[208] ButtonRelease window=25165826 (0), button_index=5
[480] ButtonPress window=25165826 (0), button_index=1
DisplayServer::_create_window 1 want rect: 66, 55, 373, 241 got rect 66, 55, 373, 241
[481] MapNotify window=25165831 (1)
[481] VisibilityNotify window=25165831 (1), state=0
[481] VisibilityNotify window=25165826 (0), state=1
[481] Expose window=25165831 (1), count='0'
[481] ButtonRelease window=25165826 (0), button_index=1
[482] FocusOut window=25165826 (0), mode='0'
[482] FocusIn window=25165831 (1), mode='0'
Thanks all for the time spent investigating! All of this points to a freeze during rendering just like #41614 so I'm closing this issue as duplicate again.
The original description suggested it could be something else and the one call stack with __cxa_pure_virtual still seems weird to me but we'll see if that happens again once the nvidia driver issue is fixed.
Edit: Rolling back to nvidia drivers 450.57 might help, it fixed the issue in some similar cases.
Most helpful comment
Thanks all for the time spent investigating! All of this points to a freeze during rendering just like #41614 so I'm closing this issue as duplicate again.
The original description suggested it could be something else and the one call stack with
__cxa_pure_virtualstill seems weird to me but we'll see if that happens again once the nvidia driver issue is fixed.Edit: Rolling back to nvidia drivers 450.57 might help, it fixed the issue in some similar cases.