[613/906] window_cocoa: fix segfault with gst-launch-1.0 -e ... and sending SIGINT...
authorMatthew Waters <ystreet00@gmail.com>
Sat, 17 Nov 2012 14:16:44 +0000 (01:16 +1100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:26 +0000 (19:31 +0000)
GNUstep has a signal handler for SIGINT which runs in the main thread.
However that thread has never been 'registered' with GNUstep so
the autorelease magic of objective-c causes a segfault from accessing
a null NSThread object somewhere deep in GNUstep.

gst-libs/gst/gl/gstglwindow_cocoa.m

index c25c002..2c657da 100755 (executable)
@@ -588,6 +588,17 @@ gst_gl_window_cocoa_send_message (GstGLWindow * window, GstGLWindowCB callback,
 }
 
 - (void) applicationWillTerminate:(NSNotification *)aNotification {
+#ifdef GNUSTEP
+  /* fixes segfault with gst-launch-1.0 -e ... and sending SIGINT (Ctrl-C)
+   * which causes GNUstep to run a signal handler in the main thread.
+   * However that thread has never been 'registered' with GNUstep so
+   * the autorelease magic of objective-c causes a segfault from accessing
+   * a null NSThread object somewhere deep in GNUstep.
+   *
+   * I put it here because this is the first time we can register the thread.
+   */
+  GSRegisterCurrentThread();
+#endif
 }
 
 @end