Jelajahi Sumber

Merge pull request #22415 from ibrahn/fix-late-segfault-hang

Fixed hang when segfaulting after OS object destroyed (OSX and X11)
Rémi Verschelde 7 tahun lalu
induk
melakukan
cac3f44f6e
2 mengubah file dengan 8 tambahan dan 4 penghapusan
  1. 4 2
      platform/osx/crash_handler_osx.mm
  2. 4 2
      platform/x11/crash_handler_x11.cpp

+ 4 - 2
platform/osx/crash_handler_osx.mm

@@ -68,8 +68,9 @@ static uint64_t load_address() {
 }
 
 static void handle_crash(int sig) {
-	if (OS::get_singleton() == NULL)
-		return;
+	if (OS::get_singleton() == NULL) {
+		abort();
+	}
 
 	void *bt_buffer[256];
 	size_t size = backtrace(bt_buffer, 256);
@@ -151,6 +152,7 @@ CrashHandler::CrashHandler() {
 }
 
 CrashHandler::~CrashHandler() {
+	disable();
 }
 
 void CrashHandler::disable() {

+ 4 - 2
platform/x11/crash_handler_x11.cpp

@@ -45,8 +45,9 @@
 #include <stdlib.h>
 
 static void handle_crash(int sig) {
-	if (OS::get_singleton() == NULL)
-		return;
+	if (OS::get_singleton() == NULL) {
+		abort();
+	}
 
 	void *bt_buffer[256];
 	size_t size = backtrace(bt_buffer, 256);
@@ -119,6 +120,7 @@ CrashHandler::CrashHandler() {
 }
 
 CrashHandler::~CrashHandler() {
+	disable();
 }
 
 void CrashHandler::disable() {