You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OS/device including version:
Windows 10, 19042.928
Vulkan Device: AMD Radeon RX 580 (Driver 20.12.1)
Built with MSVC 14.2
Issue description:
When you try to open the attached project Godot just hangs. This happend to me as I tried to port a project from 3.x to 4.0. I attached Visual Studio and paused the execution. The execution stopps there https://github.com/godotengine/godot/blob/master/servers/rendering/renderer_rd/renderer_storage_rd.cpp#L8606 (material_owner.owns(p_rid)). Following the code you find your code locked by a SpinLock. This is even more interesting as I got the following Stacktrace:
Stack Trace
godot.windows.opt.tools.64.exe!RendererStorageRD::free(RID p_rid) Line 8606 C++
godot.windows.opt.tools.64.exe!RenderingServerDefault::_free(RID p_rid) Line 68 C++
[Inlineframe] godot.windows.opt.tools.64.exe!CommandQueueMT::flush_one(bool) Line 461 C++
godot.windows.opt.tools.64.exe!CommandQueueMT::flush_all() Line 509 C++
[Inlineframe] godot.windows.opt.tools.64.exe!CommandQueueMT::flush_if_pending() Line 503 C++
godot.windows.opt.tools.64.exe!RenderingServerDefault::free(RID p_rid) Line 900 C++
[Inlineframe] godot.windows.opt.tools.64.exe!GradientTexture::{dtor}() Line 1517 C++
godot.windows.opt.tools.64.exe!GradientTexture::`scalar deleting destructor'(unsigned int) C++
godot.windows.opt.tools.64.exe!memdelete<Object>(Object * p_class) Line 118 C++
godot.windows.opt.tools.64.exe!Variant::_clear_internal() Line 1311 C++
[Inlineframe] godot.windows.opt.tools.64.exe!Variant::clear() Line 257 C++
[Inlineframe] godot.windows.opt.tools.64.exe!Variant::{dtor}() Line 669 C++
[Inlineframe] godot.windows.opt.tools.64.exe!memdelete_allocator(Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::Element *) Line127 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 487 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::_cleanup_tree(Map<StringName,VariantComparator<StringName>,DefaultAllocator>::Element * p_element) Line 486 C++
[Inlineframe] godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::clear() Line 647 C++
[Inlineframe] godot.windows.opt.tools.64.exe!Map<StringName,Variant,Comparator<StringName>,DefaultAllocator>::{dtor}() Line 664 C++
godot.windows.opt.tools.64.exe!RendererStorageRD::Material::`scalar deleting destructor'(unsigned int) C++
godot.windows.opt.tools.64.exe!RendererStorageRD::free(RID p_rid) Line 8614 C++
godot.windows.opt.tools.64.exe!RenderingServerDefault::_free(RID p_rid) Line 68 C++
[Inlineframe] godot.windows.opt.tools.64.exe!CommandQueueMT::flush_one(bool) Line 461 C++
godot.windows.opt.tools.64.exe!CommandQueueMT::flush_all() Line 509 C++
[Inlineframe] godot.windows.opt.tools.64.exe!CommandQueueMT::flush_if_pending() Line 503 C++
godot.windows.opt.tools.64.exe!RenderingServerDefault::canvas_item_clear(RID p1) Line 816 C++
godot.windows.opt.tools.64.exe!CanvasItem::_update_callback() Line 420 C++
[Inlineframe] godot.windows.opt.tools.64.exe!call_with_variant_args_helper(WebSocketServer *) Line 209 C++
[Inlineframe] godot.windows.opt.tools.64.exe!call_with_variant_args_dv(WebSocketServer *) Line 356 C++
godot.windows.opt.tools.64.exe!MethodBindT<WebSocketServer>::call(Object * p_object, const Variant * * p_args, int p_arg_count, Callable::CallError& r_error) Line 286 C++
godot.windows.opt.tools.64.exe!Object::call(const StringName & p_method, const Variant * * p_args, int p_argcount, Callable::CallError & r_error)Line 784 C++
godot.windows.opt.tools.64.exe!Callable::call(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError &r_call_error) Line 62 C++
godot.windows.opt.tools.64.exe!MessageQueue::_call_function(const Callable & p_callable, const Variant * p_args, int p_argcount, bool p_show_error)Line 259 C++
godot.windows.opt.tools.64.exe!MessageQueue::flush() Line 321 C++
godot.windows.opt.tools.64.exe!SceneTree::physics_process(float p_time) Line 415 C++
godot.windows.opt.tools.64.exe!Main::iteration() Line 2463 C++
godot.windows.opt.tools.64.exe!OS_Windows::run() Line 622 C++
godot.windows.opt.tools.64.exe!widechar_main(int argc, wchar_t * * argv) Line 163 C++
godot.windows.opt.tools.64.exe!_main() Line 187 C++
godot.windows.opt.tools.64.exe!main(int argc, char * * argv) Line 199 C++
[Inlineframe] godot.windows.opt.tools.64.exe!invoke_main() Line 78 C++
godot.windows.opt.tools.64.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!00007ff80dc87034() Unbekannt
ntdll.dll!00007ff80dea2651() Unbekannt
The stack trace may vary in detail, but the loop taken in the RenderingServer remains (free -> Object::delete -> flush -> free -> deadlock).
Digging deeper, I tried to shrink the project (I was porting 3 gb big game) and found the causing root: preload. If you uncomment the line in Clue.gd you can import the project just fine.
Steps to reproduce:
Open MRP with debugger
Pause execution once Godot hangs
Comment line 5 in Clue.gd and retry
Uncomment line 5 in Clue.gd and replace ClueFound.tscn with spoiler below
I changed all preloads to load and now get an crash in CommandQueueMT::_flush() on line 373 (cmd->call) instead. This may be related, but unrelated (it is happening again in a texture destructor)
Godot version:
9f37456
OS/device including version:
Windows 10, 19042.928
Vulkan Device: AMD Radeon RX 580 (Driver 20.12.1)
Built with MSVC 14.2
Issue description:
When you try to open the attached project Godot just hangs. This happend to me as I tried to port a project from 3.x to 4.0. I attached Visual Studio and paused the execution. The execution stopps there https://github.com/godotengine/godot/blob/master/servers/rendering/renderer_rd/renderer_storage_rd.cpp#L8606 (
material_owner.owns(p_rid)
). Following the code you find your code locked by aSpinLock
. This is even more interesting as I got the following Stacktrace:Stack Trace
The stack trace may vary in detail, but the loop taken in the
RenderingServer
remains (free -> Object::delete -> flush -> free -> deadlock).Digging deeper, I tried to shrink the project (I was porting 3 gb big game) and found the causing root:
preload
. If you uncomment the line inClue.gd
you can import the project just fine.Steps to reproduce:
Clue.gd
and retryClue.gd
and replaceClueFound.tscn
with spoiler belowClueFound.tscn (4.)
ClueFound (1-3)
Minimal reproduction project:
Free Deadlock.zip
The text was updated successfully, but these errors were encountered: