Closed KoBeWi closed 8 months ago
What if you open it in a new self-contained instance of the editor? Sounds like another deadlock though.
PS. If it's a deadlock, you can manually pause the debugger pretty much at any point and it's likely to stop around the code that is locked.
Seems like it worked in a self-contained mode 🤔 Which probably means that the bug can't be reproduced reliably even with the same project 🙄
inb4 it's EditorResourcePreview deadlocking while trying to generate a preview for GDScripts with unresolved class names or circular deps..
I think we should get rid of GDScript previews, or at least of the highlighting part that requires loading/parsing.
I used debugger to see what is it doing in the background and seems like it's loading random scenes across the project. It's not stuck on a single one, but the memory usage steadily increases.
EDIT: Seems like it hangs when loading TileSet, idk.
Apparently the culprit is 958699a0c42320c5266540278a4c967ee6476623 After removing these two lines https://github.com/godotengine/godot/blob/da945ce6266ce27ba63b6b08dc0eb2414594f7cb/editor/editor_file_system.cpp#L1687-L1688 the project opens normally. It's only a problem if group cache does not exist.
CC @DarkMessiah
I found more info and I was right that it's related to TileSet.
[repeats million times]
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
EditorNode::_print_handler(void * p_this, const String & p_string, bool p_error, bool p_rich) Line 6125 (c:\godot_source\editor\editor_node.cpp:6125)
__print_line(const String & p_string) Line 82 (c:\godot_source\core\string\print_string.cpp:82)
print_line(const Variant & v) Line 73 (c:\godot_source\core\string\print_string.h:73)
CallQueue::statistics() Line 466 (c:\godot_source\core\object\message_queue.cpp:466)
CallQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 100 (c:\godot_source\core\object\message_queue.cpp:100)
Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41 (c:\godot_source\core\variant\callable.cpp:41)
Callable::call_deferred<>() Line 85 (c:\godot_source\core\variant\callable.h:85)
TileSetAtlasSource::_queue_update_padded_texture() Line 5573 (c:\godot_source\scene\resources\2d\tile_set.cpp:5573)
TileSetAtlasSource::create_tile(const Vector2i p_atlas_coords, const Vector2i p_size) Line 4984 (c:\godot_source\scene\resources\2d\tile_set.cpp:4984)
TileSetAtlasSource::_set(const StringName & p_name, const Variant & p_value) Line 4746 (c:\godot_source\scene\resources\2d\tile_set.cpp:4746)
TileSetAtlasSource::_setv(const StringName & p_name, const Variant & p_property) Line 607 (c:\godot_source\scene\resources\2d\tile_set.h:607)
Object::set(const StringName & p_name, const Variant & p_value, bool * r_valid) Line 302 (c:\godot_source\core\object\object.cpp:302)
ResourceLoaderBinary::load() Line 838 (c:\godot_source\core\io\resource_format_binary.cpp:838)
ResourceFormatLoaderBinary::load(const String & p_path, const String & p_original_path, Error * r_error, bool p_use_sub_threads, float * r_progress, ResourceFormatLoader::CacheMode p_cache_mode) Line 1215 (c:\godot_source\core\io\resource_format_binary.cpp:1215)
ResourceLoader::_load(const String & p_path, const String & p_original_path, const String & p_type_hint, ResourceFormatLoader::CacheMode p_cache_mode, Error * r_error, bool p_use_sub_threads, float * r_progress) Line 264 (c:\godot_source\core\io\resource_loader.cpp:264)
ResourceLoader::_thread_load_function(void * p_userdata) Line 322 (c:\godot_source\core\io\resource_loader.cpp:322)
ResourceLoader::_load_start(const String & p_path, const String & p_type_hint, ResourceLoader::LoadThreadMode p_thread_mode, ResourceFormatLoader::CacheMode p_cache_mode) Line 525 (c:\godot_source\core\io\resource_loader.cpp:525)
ResourceLoaderText::load() Line 474 (c:\godot_source\scene\resources\resource_format_text.cpp:474)
ResourceFormatLoaderText::load(const String & p_path, const String & p_original_path, Error * r_error, bool p_use_sub_threads, float * r_progress, ResourceFormatLoader::CacheMode p_cache_mode) Line 1681 (c:\godot_source\scene\resources\resource_format_text.cpp:1681)
ResourceLoader::_load(const String & p_path, const String & p_original_path, const String & p_type_hint, ResourceFormatLoader::CacheMode p_cache_mode, Error * r_error, bool p_use_sub_threads, float * r_progress) Line 264 (c:\godot_source\core\io\resource_loader.cpp:264)
ResourceLoader::_thread_load_function(void * p_userdata) Line 322 (c:\godot_source\core\io\resource_loader.cpp:322)
ResourceLoader::_load_start(const String & p_path, const String & p_type_hint, ResourceLoader::LoadThreadMode p_thread_mode, ResourceFormatLoader::CacheMode p_cache_mode) Line 525 (c:\godot_source\core\io\resource_loader.cpp:525)
ResourceLoader::load(const String & p_path, const String & p_type_hint, ResourceFormatLoader::CacheMode p_cache_mode, Error * r_error) Line 442 (c:\godot_source\core\io\resource_loader.cpp:442)
EditorFileSystem::_get_scene_groups(const String & p_path) Line 1713 (c:\godot_source\editor\editor_file_system.cpp:1713)
EditorFileSystem::_update_scene_groups() Line 1674 (c:\godot_source\editor\editor_file_system.cpp:1674)
EditorFileSystem::_update_pending_scene_groups() Line 1688 (c:\godot_source\editor\editor_file_system.cpp:1688)
EditorFileSystem::_notification(int p_what) Line 1301 (c:\godot_source\editor\editor_file_system.cpp:1301)
EditorFileSystem::_notificationv(int p_notification, bool p_reversed) Line 146 (c:\godot_source\editor\editor_file_system.h:146)
Object::notification(int p_notification, bool p_reversed) Line 902 (c:\godot_source\core\object\object.cpp:902)
SceneTree::_process_group(SceneTree::ProcessGroup * p_group, bool p_physics) Line 958 (c:\godot_source\scene\main\scene_tree.cpp:958)
SceneTree::_process(bool p_physics) Line 1035 (c:\godot_source\scene\main\scene_tree.cpp:1035)
SceneTree::process(double p_time) Line 512 (c:\godot_source\scene\main\scene_tree.cpp:512)
Main::iteration() Line 4015 (c:\godot_source\main\main.cpp:4015)
OS_Windows::run() Line 1476 (c:\godot_source\platform\windows\os_windows.cpp:1476)
widechar_main(int argc, wchar_t * * argv) Line 182 (c:\godot_source\platform\windows\godot_windows.cpp:182)
_main() Line 204 (c:\godot_source\platform\windows\godot_windows.cpp:204)
main(int argc, char * * argv) Line 218 (c:\godot_source\platform\windows\godot_windows.cpp:218)
WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 232 (c:\godot_source\platform\windows\godot_windows.cpp:232)
[Inline Frame] invoke_main() Line 102 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:102)
__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
kernel32.dll!00007ff916067344() (Nieznane źródło:0)
ntdll.dll!00007ff9166226b1() (Nieznane źródło:0)
First, the reason why it hangs itself in the first place: when you load a TileSet, it does a call_deferred()
to _update_padded_texture
. Since the scene is freed after scanning, the TileSet is loaded for every scene and queues the texture update every time (even if the object that waits for the update is gone...). Scene scanning happens in a single frame, so the queue is never flushed, which means that after enough scenes are loaded, the TileSet updates will clog it up, which causes queue error to print and calls statistics()
function.
I assume what happens next is that statistics()
tries to access the already deleted resource and goes here:
https://github.com/godotengine/godot/blob/da945ce6266ce27ba63b6b08dc0eb2414594f7cb/core/object/message_queue.cpp#L464-L469
And print_line()
is deferred :D Which means that it will try to use already full queue and recursively call the same function until everything dies.
There are 2 separate solutions to apply here:
print_line()
from statistics()
to avoid recursively destroying the message queueAlso since group scanning is so long, it should use EditorProgress and possibly happen over a few frames, to avoid clogging message queue.
EDIT:
Another thing I just realized is that TileSet will do _update_padded_texture()
for every single tile...
remove print_line() from statistics() to avoid recursively destroying the message queue
This was done elsewhere, so makes sense here too, will open a PR for that
Remaining problems mentioned here:
Tested versions
4.3 dev2 4.3 5034478 Works correctly in 4.2.1
System information
Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; 30.0.15.1403) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)
Issue description
I had some script errors due to deleted scripts, so I deleted script cache, but my project could no longer run. So I decided to delete the whole .godot folder and I can't open the project anymore. The RAM usage skyrockets to over 8GB and then either editor dies or the system freezes and then editor dies.
There is nothing useful in the output, even in verbose mode.
Steps to reproduce
Minimal reproduction project (MRP)
I can share the project privately. It does not happen in a minimal one and I don't know which part causes the problem.