osxvideosink crashes on start, OSX 10.13 Beta (17A330h)
Submitted by Kirill Novichikhin
Link to original bug (#786047)
Description
Created attachment 357262
High Sierra crash workaround
Crash in _CFRunLoopSetCurrent when running osxvideosink on last MacOS beta
Assert "Attempting to deallocate CFRunLoop outside of thread destructor -- this is likely an over-release of the run loop"
Apparently releasing previous runloop outside of thread destructor is now frowned upon.
Workaround: retain previous thread runloop before switching (see patch)
$ lldb -- gst-launch-1.0 tcpserversrc port=5001 ! gdpdepay ! h264parse ! avdec_h264 ! osxvideosink
(lldb) target create "gst-launch-1.0"
ruCurrent executable set to 'gst-launch-1.0' (x86_64).
(lldb) settings set -- target.run-args "tcpserversrc" "port=5001" "!" "gdpdepay" "!" "h264parse" "!" "avdec_h264" "!" "osxvideosink"
(lldb) run
Process 33630 launched: '/usr/local/bin/gst-launch-1.0' (x86_64)
Setting pipeline to PAUSED ...
Process 33630 stopped
* thread #4, stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
frame #0: 0x00007fff29b73fe5 CoreFoundation`__CFRunLoopDeallocate + 485
CoreFoundation`__CFRunLoopDeallocate:
-> 0x7fff29b73fe5 <+485>: ud2
0x7fff29b73fe7 <+487>: nopw (%rax,%rax)
CoreFoundation`__CFRunLoopCleanseSources:
0x7fff29b73ff0 <+0>: pushq %rbp
0x7fff29b73ff1 <+1>: movq %rsp, %rbp
Target 0: (gst-launch-1.0) stopped.
(lldb) bt
* thread #4, stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
* frame #0: 0x00007fff29b73fe5 CoreFoundation`__CFRunLoopDeallocate + 485
frame #1: 0x00007fff29c08f9c CoreFoundation`_CFRelease + 300
frame #2: 0x00007fff29b505a6 CoreFoundation`_CFRunLoopSetCurrent + 134
frame #3: 0x00000001007de83e libgstosxvideo.so`-[GstOSXVideoSinkObject nsAppThread] + 30
frame #4: 0x00007fff2bc6c4f8 Foundation`__NSThread__start__ + 1197
frame #5: 0x00007fff517ae6c1 libsystem_pthread.dylib`_pthread_body + 340
frame #6: 0x00007fff517ae56d libsystem_pthread.dylib`_pthread_start + 377
frame #7: 0x00007fff517adc5d libsystem_pthread.dylib`thread_start + 13
0x7fff29b73fd7 <+471>: leaq 0x310d5e(%rip), %rax ; "Attempting to deallocate CFRunLoop outside of thread destructor -- this is likely an over-release of the run loop"
0x7fff29b73fde <+478>: movq %rax, 0x5a372ac3(%rip) ; gCRAnnotations + 8
-> 0x7fff29b73fe5 <+485>: ud2
0x7fff29b73fe7 <+487>: nopw (%rax,%rax)
Patch 357262, "High Sierra crash workaround":
runloop.patch