File tree Expand file tree Collapse file tree 4 files changed +52
-0
lines changed
Expand file tree Collapse file tree 4 files changed +52
-0
lines changed Original file line number Diff line number Diff line change 3131#include " crash_handler_linuxbsd.h"
3232
3333#include " core/config/project_settings.h"
34+ #include " core/object/script_language.h"
3435#include " core/os/os.h"
3536#include " core/string/print_string.h"
3637#include " core/version.h"
@@ -146,6 +147,18 @@ static void handle_crash(int sig) {
146147 print_error (" -- END OF BACKTRACE --" );
147148 print_error (" ================================================================" );
148149
150+ Vector<Ref<ScriptBacktrace>> script_backtraces;
151+ if (ScriptServer::are_languages_initialized ()) {
152+ script_backtraces = ScriptServer::capture_script_backtraces (false );
153+ }
154+ if (!script_backtraces.is_empty ()) {
155+ for (const Ref<ScriptBacktrace> &backtrace : script_backtraces) {
156+ print_error (backtrace->format ());
157+ }
158+ print_error (" -- END OF SCRIPT BACKTRACE --" );
159+ print_error (" ================================================================" );
160+ }
161+
149162 // Abort to pass the error to the OS
150163 abort ();
151164}
Original file line number Diff line number Diff line change 3131#import " crash_handler_macos.h"
3232
3333#include " core/config/project_settings.h"
34+ #include " core/object/script_language.h"
3435#include " core/os/os.h"
3536#include " core/string/print_string.h"
3637#include " core/version.h"
@@ -177,6 +178,18 @@ static void handle_crash(int sig) {
177178 print_error (" -- END OF BACKTRACE --" );
178179 print_error (" ================================================================" );
179180
181+ Vector<Ref<ScriptBacktrace>> script_backtraces;
182+ if (ScriptServer::are_languages_initialized ()) {
183+ script_backtraces = ScriptServer::capture_script_backtraces (false );
184+ }
185+ if (!script_backtraces.is_empty ()) {
186+ for (const Ref<ScriptBacktrace> &backtrace : script_backtraces) {
187+ print_error (backtrace->format ());
188+ }
189+ print_error (" -- END OF SCRIPT BACKTRACE --" );
190+ print_error (" ================================================================" );
191+ }
192+
180193 // Abort to pass the error to the OS
181194 abort ();
182195}
Original file line number Diff line number Diff line change 3131#include " crash_handler_windows.h"
3232
3333#include " core/config/project_settings.h"
34+ #include " core/object/script_language.h"
3435#include " core/os/os.h"
3536#include " core/string/print_string.h"
3637#include " core/version.h"
@@ -230,6 +231,18 @@ DWORD CrashHandlerException(EXCEPTION_POINTERS *ep) {
230231
231232 SymCleanup (process);
232233
234+ Vector<Ref<ScriptBacktrace>> script_backtraces;
235+ if (ScriptServer::are_languages_initialized ()) {
236+ script_backtraces = ScriptServer::capture_script_backtraces (false );
237+ }
238+ if (!script_backtraces.is_empty ()) {
239+ for (const Ref<ScriptBacktrace> &backtrace : script_backtraces) {
240+ print_error (backtrace->format ());
241+ }
242+ print_error (" -- END OF SCRIPT BACKTRACE --" );
243+ print_error (" ================================================================" );
244+ }
245+
233246 // Pass the exception to the OS
234247 return EXCEPTION_CONTINUE_SEARCH;
235248}
Original file line number Diff line number Diff line change 3131#include " crash_handler_windows.h"
3232
3333#include " core/config/project_settings.h"
34+ #include " core/object/script_language.h"
3435#include " core/os/os.h"
3536#include " core/string/print_string.h"
3637#include " core/version.h"
@@ -183,6 +184,18 @@ extern void CrashHandlerException(int signal) {
183184
184185 print_error (" -- END OF BACKTRACE --" );
185186 print_error (" ================================================================" );
187+
188+ Vector<Ref<ScriptBacktrace>> script_backtraces;
189+ if (ScriptServer::are_languages_initialized ()) {
190+ script_backtraces = ScriptServer::capture_script_backtraces (false );
191+ }
192+ if (!script_backtraces.is_empty ()) {
193+ for (const Ref<ScriptBacktrace> &backtrace : script_backtraces) {
194+ print_error (backtrace->format ());
195+ }
196+ print_error (" -- END OF SCRIPT BACKTRACE --" );
197+ print_error (" ================================================================" );
198+ }
186199}
187200#endif
188201
You can’t perform that action at this time.
0 commit comments