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

Crash when opening 160 scenes in EditorToaster::_error_handler_impl when MessageQueue runs out of memory #76820

Closed
rakkarage opened this issue May 7, 2023 · 5 comments

Comments

@rakkarage
Copy link
Contributor

rakkarage commented May 7, 2023

Godot version

v4.0.2.stable.official [7a0977c]

System information

Windows 11, Core i5-12400F, RX 6600

Issue description

i have a project with 80 animations, 80 animation scenes, and 80 test scenes
converting to 4 sometimes need to open a scene and save it to trigger a conversion
after doing this and reloading the program crashes and disappears with no message after showing all windows loading in title bar

so i made a simple test project and duplicated a bunch of windows, open them all and same insta-crash

is there some way to close windows from outside of godot? because it stuck in this state where it cannot open because too many windows open but cannot close windows because cannot open?

thanks

Steps to reproduce

  • make a simple scene and duplicate it 160 times (80 is ok)
  • open all scenes
  • if nor crashed yet close and reopen

Minimal reproduction project

https://github.com/rakkarage/TestWindows

@fire
Copy link
Member

fire commented May 8, 2023

Notes on things to try for the development team:

  1. animation issue?
  2. editor issue?

@RedMser
Copy link
Contributor

RedMser commented May 8, 2023

is there some way to close windows from outside of godot? because it stuck in this state where it cannot open because too many windows open but cannot close windows because cannot open?

It's in the project's .godot folder, I believe the editor subfolder. Try renaming it before opening the project.

@rakkarage
Copy link
Contributor Author

rakkarage commented May 8, 2023

i got it debugging in vscode and visual studio to test and get more details

ERROR: Failed method: EditorToaster::_error_handler_impl. Message queue out of memory. Try increasing 'memory/limits/message_queue/max_size_kb' in project settings.
   at: MessageQueue::push_callablep (core\object\message_queue.cpp:120)

shows LOTS of this message in vscode when crashes

half these files have id collisions too i don't think that is related tho because my original used 160 unique scenes and same problem

i don't know what i am talking about but from call stack looks like it is doing infinite calls to EditorToaster::_error_handler when i get the exception

Unhandled exception at 0x05E4CA33 in godot.windows.editor.dev.x86_32.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x0A832FF4).

godot.windows.editor.dev.x86_32.exe!_wctomb_s_l(int * return_value, char * destination, unsigned int destination_count, wchar_t wchar, __crt_locale_pointers * locale) Line 36
	at minkernel\crts\ucrt\src\appcrt\convert\wctomb.cpp(36)
godot.windows.editor.dev.x86_32.exe!wctomb_s(int * return_value, char * destination, unsigned int destination_count, wchar_t wchar) Line 153
	at minkernel\crts\ucrt\src\appcrt\convert\wctomb.cpp(153)
godot.windows.editor.dev.x86_32.exe!_fputwc_nolock(wchar_t c, _iobuf * public_stream) Line 55
	at minkernel\crts\ucrt\src\appcrt\stdio\fputwc.cpp(55)
[Inline Frame] godot.windows.editor.dev.x86_32.exe!__crt_char_traits<wchar_t>::puttc_nolock(const wchar_t &) Line 124
	at minkernel\crts\ucrt\inc\corecrt_internal_traits.h(124)
godot.windows.editor.dev.x86_32.exe!__crt_stdio_output::stream_output_adapter<wchar_t>::write_character_without_count_update(const wchar_t c) Line 166
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h(166)
godot.windows.editor.dev.x86_32.exe!__crt_stdio_output::output_adapter_common<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>>::write_string_impl(const wchar_t * const string, const int length, int * const count_written, __crt_deferred_errno_cache & status) Line 86
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h(86)
godot.windows.editor.dev.x86_32.exe!__crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>>>::write_stored_string_tchar(wchar_t __formal) Line 2735
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h(2735)
godot.windows.editor.dev.x86_32.exe!__crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>>>::state_case_type() Line 2150
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h(2150)
godot.windows.editor.dev.x86_32.exe!__crt_stdio_output::output_processor<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>,__crt_stdio_output::standard_base<wchar_t,__crt_stdio_output::stream_output_adapter<wchar_t>>>::process() Line 1706
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h(1706)
godot.windows.editor.dev.x86_32.exe!common_vfprintf::__l2::<lambda>() Line 49
	at minkernel\crts\ucrt\src\appcrt\stdio\output.cpp(49)
godot.windows.editor.dev.x86_32.exe!__crt_seh_guarded_call<int>::operator()<void <lambda>(void),int <lambda>(void) &,void <lambda>(void)>(__acrt_lock_stream_and_call::__l2::void <lambda>(void) && setup, common_vfprintf::__l2::int <lambda>(void) & action, __acrt_lock_stream_and_call::__l2::void <lambda>(void) && cleanup) Line 204
	at VCCRT\vcruntime\inc\internal_shared.h(204)
[Inline Frame] godot.windows.editor.dev.x86_32.exe!__acrt_lock_stream_and_call(_iobuf * const) Line 252
	at minkernel\crts\ucrt\inc\corecrt_internal_stdio.h(252)
[Inline Frame] godot.windows.editor.dev.x86_32.exe!common_vfprintf(const unsigned __int64 options, _iobuf * const stream, const wchar_t * const format, __crt_locale_pointers * const locale, char * const arglist) Line 37
	at minkernel\crts\ucrt\src\appcrt\stdio\output.cpp(37)
godot.windows.editor.dev.x86_32.exe!__stdio_common_vfwprintf(unsigned __int64 options, _iobuf * stream, const wchar_t * format, __crt_locale_pointers * locale, char * arglist) Line 73
	at minkernel\crts\ucrt\src\appcrt\stdio\output.cpp(73)
[External Code]
godot.windows.editor.dev.x86_32.exe!WindowsTerminalLogger::logv(const char * p_format, char * p_list, bool p_err) Line 66
	at D:\Code\godot\platform\windows\windows_terminal_logger.cpp(66)
godot.windows.editor.dev.x86_32.exe!Logger::logf_error(const char * p_format, ...) Line 116
	at D:\Code\godot\core\io\logger.cpp(116)
godot.windows.editor.dev.x86_32.exe!Logger::log_error(const char * p_function, const char * p_file, int p_line, const char * p_code, const char * p_rationale, bool p_editor_notify, Logger::ErrorType p_type) Line 88
	at D:\Code\godot\core\io\logger.cpp(88)
godot.windows.editor.dev.x86_32.exe!WindowsTerminalLogger::log_error(const char * p_function, const char * p_file, int p_line, const char * p_code, const char * p_rationale, bool p_editor_notify, Logger::ErrorType p_type) Line 89
	at D:\Code\godot\platform\windows\windows_terminal_logger.cpp(89)
godot.windows.editor.dev.x86_32.exe!CompositeLogger::log_error(const char * p_function, const char * p_file, int p_line, const char * p_code, const char * p_rationale, bool p_editor_notify, Logger::ErrorType p_type) Line 257
	at D:\Code\godot\core\io\logger.cpp(257)
godot.windows.editor.dev.x86_32.exe!OS::print_error(const char * p_function, const char * p_file, int p_line, const char * p_code, const char * p_rationale, bool p_editor_notify, Logger::ErrorType p_type) Line 83
	at D:\Code\godot\core\os\os.cpp(83)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 88
	at D:\Code\godot\core\error\error_macros.cpp(88)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
godot.windows.editor.dev.x86_32.exe!EditorToaster::_error_handler(void * p_self, const char * p_func, const char * p_file, int p_line, const char * p_error, const char * p_errorexp, bool p_editor_notify, ErrorHandlerType p_type) Line 150
	at D:\Code\godot\editor\editor_toaster.cpp(150)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const char * p_error, const char * p_message, bool p_editor_notify, ErrorHandlerType p_type) Line 97
	at D:\Code\godot\core\error\error_macros.cpp(97)
godot.windows.editor.dev.x86_32.exe!_err_print_error(const char * p_function, const char * p_file, int p_line, const String & p_error, bool p_editor_notify, ErrorHandlerType p_type) Line 81
	at D:\Code\godot\core\error\error_macros.cpp(81)
godot.windows.editor.dev.x86_32.exe!MessageQueue::push_callablep(const Callable & p_callable, const Variant * * p_args, int p_argcount, bool p_show_error) Line 120
	at D:\Code\godot\core\object\message_queue.cpp(120)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferredp(const Variant * * p_arguments, int p_argcount) Line 41
	at D:\Code\godot\core\variant\callable.cpp(41)
godot.windows.editor.dev.x86_32.exe!Callable::call_deferred<>() Line 83
	at D:\Code\godot\core\variant\callable.h(83)
    Etc...
The maximum number of stack frames supported by Visual Studio has been exceeded.

@akien-mga akien-mga changed the title Crash when opening 160 scenes Crash when opening 160 scenes in EditorToaster::_error_handler_impl when MessageQueue runs out of memory May 9, 2023
@akien-mga
Copy link
Member

This might have been fixed for 4.1 with #75940 which made the MessageQueue growable.

That being said we should still aim to prevent this infinite loop in EditorToaster and not use the toaster to display error messages that originate in itself (like this one about running out of memory). I think we might have one or more existing issues about this but don't have time to do a deep dive right now, so keeping this open.

@rakkarage
Copy link
Contributor Author

thanks ya seems fixed for me in a 4.1 build
can open em all, close em all, open em all again, quit and reload them all no errors
sorry

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