Closed yamyamyamyamyam closed 2 years ago
Is 2. and 3. the OBS settings, or the Teleport Output preference dialog?
The debugger throws weird things when trying to open the preference dialog. I can't make any sense out of it though. It seems to break when the callback for the menu is supposed to be called, but it does not even reach there.
Does this happen with the x86_64 version on either native or running under Rosetta the same?
At the moment I have no idea why this is happening.
2 and 3 are the OBS settings, which is why I found it odd; I was not directly interacting with Teleport to trigger the hang.
I'm using a nightly build with native arm support as well as Apple's new General Capture code. I just tried with the old official 27.2.4 stable x86_64 build, and I can't trigger the hang there. I tried with a nightly x86_64 build, and the issue does occur there.
So there might be some bisecting in order to figure out exactly what's causing the regression. Possibly you'd just want to wait until there is a settled release candidate or something.
Thant\s interesting, thanks for checking.
It may as well be something they have changed and some things need to be done differently than before. Or maybe a dependency they have updated.
If you find something out let me know.
Just for completeness here is the current crash trace:
Process 817 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x000000013fcdd444 obs-teleport.so`notok + 4
obs-teleport.so`notok:
-> 0x13fcdd444 <+4>: str x8, [x8]
0x13fcdd448 <+8>: b 0x13fcdd448 ; <+8>
0x13fcdd44c <+12>: udf #0x0
obs-teleport.so`runtime.open_trampoline.abi0:
0x13fcdd450 <+0>: str x30, [sp, #-0x10]!
Target 0: (OBS) stopped.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x000000013fcdd444 obs-teleport.so`notok + 4
frame #1: 0x000000013fcdda40 obs-teleport.so`runtime.sigaltstack_trampoline.abi0 + 32
frame #2: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #3
frame #0: 0x00000001ac81674c libsystem_kernel.dylib`__workq_kernreturn + 8
thread #4
frame #0: 0x00000001ac81674c libsystem_kernel.dylib`__workq_kernreturn + 8
thread #5
frame #0: 0x00000001ac84d078 libsystem_pthread.dylib`start_wqthread
thread #6, name = 'libobs: hotkey thread'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000101085170 libobs`os_event_timedwait(event=0x000060000330cfc0, milliseconds=25) at threading-posix.c:121:10 [opt]
frame #3: 0x000000010101ce4c libobs`obs_hotkey_thread(arg=<unavailable>) at obs-hotkey.c:1384:9 [opt]
frame #4: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #7, name = 'tiny_tubular_task_thread'
frame #0: 0x00000001ac81490c libsystem_kernel.dylib`semaphore_wait_trap + 8
frame #1: 0x00000001010853b4 libobs`os_sem_wait(sem=<unavailable>) at threading-posix.c:213:10 [opt]
frame #2: 0x00000001010806bc libobs`tiny_tubular_task_thread(param=0x00006000035116c0) at task.c:139:25 [opt]
frame #3: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #8, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #9, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #10, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #11, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #12, name = 'audio-io: audio thread'
frame #0: 0x00000001ac81808c libsystem_kernel.dylib`__semwait_signal + 8
frame #1: 0x00000001ac720fbc libsystem_c.dylib`nanosleep + 220
frame #2: 0x00000001ac720ed4 libsystem_c.dylib`usleep + 68
frame #3: 0x0000000101084858 libobs`os_sleepto_ns_fast(time_target=67965395708) at platform-nix.c:192:3 [opt]
frame #4: 0x0000000101070440 libobs`audio_thread(param=0x00000001201b8020) at audio-io.c:229:3 [opt]
frame #5: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #13, name = 'video-io: video thread'
frame #0: 0x00000001ac81490c libsystem_kernel.dylib`semaphore_wait_trap + 8
frame #1: 0x00000001010853b4 libobs`os_sem_wait(sem=<unavailable>) at threading-posix.c:213:10 [opt]
frame #2: 0x0000000101072b88 libobs`video_thread(param=0x0000000106152c20) at video-io.c:183:9 [opt]
frame #3: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #14, name = 'libobs: graphics thread'
frame #0: 0x00000001ac81808c libsystem_kernel.dylib`__semwait_signal + 8
frame #1: 0x00000001ac720fbc libsystem_c.dylib`nanosleep + 220
frame #2: 0x00000001010847e0 libobs`os_sleepto_ns(time_target=<unavailable>) at platform-nix.c:175:9 [opt]
frame #3: 0x000000010104e398 libobs`obs_graphics_thread_loop [inlined] video_sleep(video=0x000000010603d548, gpu_active=false, p_time=0x000000010603d790, interval_ns=33333333) at obs-video.c:796:6 [opt]
frame #4: 0x000000010104e388 libobs`obs_graphics_thread_loop(context=<unavailable>) at obs-video.c:1072:2 [opt]
frame #5: 0x0000000101082e00 libobs`obs_graphics_thread_loop_autorelease(context=0x0000000170516f50) at obs-cocoa.m:1748:10 [opt]
frame #6: 0x000000010104e750 libobs`obs_graphics_thread(param=0x000000010603d420) at obs-video.c:1132:9 [opt]
frame #7: 0x0000000101082dc4 libobs`obs_graphics_thread_autorelease(param=<unavailable>) at obs-cocoa.m:1741:10 [opt]
frame #8: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #17
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000013fcddca8 obs-teleport.so`runtime.pthread_cond_wait_trampoline.abi0 + 24
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #5: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #18
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac852868 libsystem_pthread.dylib`_pthread_cond_wait + 1280
frame #2: 0x000000013fcddcdc obs-teleport.so`runtime.pthread_cond_timedwait_relative_np_trampoline.abi0 + 28
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #19
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000013fcddca8 obs-teleport.so`runtime.pthread_cond_wait_trampoline.abi0 + 24
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #5: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #20
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000013fcddca8 obs-teleport.so`runtime.pthread_cond_wait_trampoline.abi0 + 24
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #5: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #21
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000013fcddca8 obs-teleport.so`runtime.pthread_cond_wait_trampoline.abi0 + 24
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #4: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
frame #5: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #22
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x000000013fcddca8 obs-teleport.so`runtime.pthread_cond_wait_trampoline.abi0 + 24
frame #3: 0x000000013fcdc708 obs-teleport.so`runtime.asmcgocall.abi0 + 200
thread #23, name = 'AMCP Logging Spool'
frame #0: 0x00000001ac81490c libsystem_kernel.dylib`semaphore_wait_trap + 8
frame #1: 0x00000001b52a6a2c caulk`caulk::mach::semaphore::wait_or_error() + 28
frame #2: 0x00000001b528a77c caulk`caulk::concurrent::details::worker_thread::run() + 56
frame #3: 0x00000001b528a39c caulk`void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 96
frame #4: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #24, name = 'com.apple.audio.IOThread.client'
frame #0: 0x00000001ac8148d0 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x00000001ac814d40 libsystem_kernel.dylib`mach_msg + 76
frame #2: 0x00000001ae55ea40 CoreAudio`HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 104
frame #3: 0x00000001ae3ebcd0 CoreAudio`HALC_ProxyIOContext::IOWorkLoop() + 3396
frame #4: 0x00000001ae3ea990 CoreAudio`invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int) + 100
frame #5: 0x00000001ae5b6e60 CoreAudio`HALB_IOThread::Entry(void*) + 88
frame #6: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #25, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #26, name = 'Thread (pooled)'
frame #0: 0x00000001ac818290 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001ac85283c libsystem_pthread.dylib`_pthread_cond_wait + 1236
frame #2: 0x0000000104a954e8 QtCore`___lldb_unnamed_symbol338$$QtCore + 300
frame #3: 0x0000000104a951a0 QtCore`___lldb_unnamed_symbol337$$QtCore + 92
frame #4: 0x0000000104a950f0 QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 104
frame #5: 0x0000000104a91678 QtCore`___lldb_unnamed_symbol309$$QtCore + 628
frame #6: 0x0000000104a8d0c0 QtCore`___lldb_unnamed_symbol275$$QtCore + 348
frame #7: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #27
frame #0: 0x00000001ac84d078 libsystem_pthread.dylib`start_wqthread
thread #28, name = 'com.apple.NSEventThread'
frame #0: 0x00000001ac8148d0 libsystem_kernel.dylib`mach_msg_trap + 8
frame #1: 0x00000001ac814d40 libsystem_kernel.dylib`mach_msg + 76
frame #2: 0x00000001ac91ec1c CoreFoundation`__CFRunLoopServiceMachPort + 372
frame #3: 0x00000001ac91d0cc CoreFoundation`__CFRunLoopRun + 1180
frame #4: 0x00000001ac91c490 CoreFoundation`CFRunLoopRunSpecific + 600
frame #5: 0x00000001af5e86f4 AppKit`_NSEventThread + 196
frame #6: 0x00000001ac85226c libsystem_pthread.dylib`_pthread_start + 148
thread #29
frame #0: 0x00000001ac84d078 libsystem_pthread.dylib`start_wqthread
thread #30
frame #0: 0x00000001ac84d078 libsystem_pthread.dylib`start_wqthread
thread #31
frame #0: 0x0000000000000000
https://github.com/golang/go/issues/48437 maybe related, or at least similar.
I cannot recreate the issue when I build OBS directly via CMake and not OBS's CI script.
So it may be due to the bundled dependencies of OBS what will be used when using the CI script. A regular build will use the local machines dependencies installed via brew.
Or it could be another plugin and is build when run the CI script which I have disabled in the local build (Browser, VST, AJA.. I don't know).
There was an update to the external deps in the OBS repo. I think I tried it and didn't immediately show the issue. Not sure if that fixes it - but closing for now unless it really seems to be caused by this plugin.
Hi again,
I've noticed that on macOS, Teleport is frequently causing my OBS to hang and consume resources on exit, regardless of whether any Teleport sources are added to any scenes. I took a spindump, which you can find here:
https://gist.github.com/yamyamyamyamyam/ab8a125b9f9e57b46da32e598c3b611f
My reproduction steps (does not occur every time, but pretty often):
Let me know if there's anything else I can do to help debug this. Thanks!