Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Godot freezes when pop up appears under X #42971

Closed
DavidHusicka opened this issue Oct 21, 2020 · 19 comments
Closed

Godot freezes when pop up appears under X #42971

DavidHusicka opened this issue Oct 21, 2020 · 19 comments

Comments

@DavidHusicka
Copy link

DavidHusicka commented Oct 21, 2020

Godot version:
built from commit: c97dea4
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 --

@pouleyKetchoupp
Copy link
Contributor

pouleyKetchoupp commented Oct 22, 2020

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
  • 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.
  • 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.

@Calinou
Copy link
Member

Calinou commented Oct 22, 2020

Duplicate of #41614.

@Calinou Calinou closed this as completed Oct 22, 2020
@Calinou Calinou removed this from the 4.0 milestone Oct 22, 2020
@akien-mga
Copy link
Member

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.

@pouleyKetchoupp
Copy link
Contributor

pouleyKetchoupp commented Oct 22, 2020

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/beta5

I guess you meant to reference 3.2.4-beta1 and not 3.2-beta5? :)

Yes, fixed! Thanks :)

@DavidHusicka
Copy link
Author

DavidHusicka commented Oct 22, 2020

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 8a84b3c 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.

@pouleyKetchoupp
Copy link
Contributor

@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.json
  • godot.linuxbsd.tools.64 instead of godot.x11.tools.64 in launch.json

Then 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.

@Michael-Sjogren
Copy link

Michael-Sjogren commented Oct 23, 2020

@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.

Godot version

build from commit: 32be929
Godot Engine v4.0 master

OS/device including version:

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:

Stack Trace:

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)

Terminal Output:

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.

@pouleyKetchoupp
Copy link
Contributor

@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

@Michael-Sjogren
Copy link

So i set a breakpoint on DisplayServerX11::process_events when im about to open a popup?

@pouleyKetchoupp
Copy link
Contributor

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.

@Michael-Sjogren
Copy link

Im watching them in my watch tab in vscode, but they have no value unfortunately perhaps i wrote the expression wrong?
watchvariables

@pouleyKetchoupp
Copy link
Contributor

@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!

@Michael-Sjogren
Copy link

Michael-Sjogren commented Oct 25, 2020

Process event variables

window_id: 1
wd.x11_window: 75497553
wd.event_callback.object: 385610464

call stack

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"

@pouleyKetchoupp
Copy link
Contributor

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.

@Darkheron
Copy link

Darkheron commented Oct 26, 2020

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.

@Calinou
Copy link
Member

Calinou commented Oct 26, 2020

@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 🙂

@DavidHusicka
Copy link
Author

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).

@DavidHusicka
Copy link
Author

There are multiple call stacks so I send them all

  1. godot.linuxbsd PAUSED ON PAUSE
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)

  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. godot.linuxbsd PAUSED
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)
  1. CPMMListener
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' 

@pouleyKetchoupp
Copy link
Contributor

pouleyKetchoupp commented Oct 27, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants