Deadlock on master, reproduced with 4.0.0a6 and recently 4.0.0a8
Given I launch the VLC iOS app and I have one video media in library, the app's user interface gets stuck and one can't navigate or play anything. When this happen and pause the program from lldb, I get this backtrace :
Click to expand
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
* frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000010870a378, value=2) at wait.c:86:9
frame #3: 0x000000010b44b464 VLCKit`vlc_mutex_lock(mtx=0x000000010870a378) at threads.c:109:9
frame #4: 0x000000010b3db5cc VLCKit`vlc_player_Lock(player=0x000000010870a360) at player.c:950:5
frame #5: 0x000000010b356944 VLCKit`libvlc_media_player_get_rate(p_mi=0x0000000303a9c3c0) at media_player.c:1726:5
frame #6: 0x000000010ada4568 VLCKit`-[VLCMediaPlayer rate](self=0x0000000303398d00, _cmd="rate") at VLCMediaPlayer.m:780:12
frame #7: 0x0000000104e7560c VLC for iOS`-[VLCMetaData updatePlaybackRate:](self=0x00000003024a7b10, _cmd="updatePlaybackRate:", mediaPlayer=0x0000000303398d00) at VLCMetadata.m:113:39
frame #8: 0x0000000104e7539c VLC for iOS`-[VLCMetaData updateMetadataFromMedia:mediaPlayer:](self=0x00000003024a7b10, _cmd="updateMetadataFromMedia:mediaPlayer:", media=0x0000000302112800, mediaPlayer=0x0000000303398d00) at VLCMetadata.m:77:5
frame #9: 0x0000000104e6becc VLC for iOS`-[VLCPlaybackService setNeedsMetadataUpdate](self=0x0000000107e1a920, _cmd="setNeedsMetadataUpdate") at VLCPlaybackService.m:1544:5
frame #10: 0x0000000104e68fbc VLC for iOS`__46-[VLCPlaybackService mediaPlayerStateChanged:]_block_invoke.155(.block_descriptor=0x00000003001ff540) at VLCPlaybackService.m:932:9
frame #11: 0x0000000107d00b98 libdispatch.dylib`_dispatch_call_block_and_release + 32
frame #12: 0x0000000107d027bc libdispatch.dylib`_dispatch_client_callout + 20
frame #13: 0x0000000107d12d58 libdispatch.dylib`_dispatch_main_queue_drain + 1084
frame #14: 0x0000000107d1290c libdispatch.dylib`_dispatch_main_queue_callback_4CF + 44
frame #15: 0x0000000196563710 CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
frame #16: 0x0000000196560914 CoreFoundation`__CFRunLoopRun + 1996
frame #17: 0x000000019655fcd8 CoreFoundation`CFRunLoopRunSpecific + 608
frame #18: 0x00000001dafad1a8 GraphicsServices`GSEventRunModal + 164
frame #19: 0x0000000198b99ae8 UIKitCore`-[UIApplication _run] + 888
frame #20: 0x0000000198c4dd98 UIKitCore`UIApplicationMain + 340
frame #21: 0x0000000104e3ff44 VLC for iOS`main(argc=1, argv=0x000000016afd3518) at main.m:20:16
frame #22: 0x00000001b9d37154 dyld`start + 2356
thread #2
frame #0: 0x00000001f2fdd0c4 libsystem_pthread.dylib`start_wqthread
thread #5
frame #0: 0x00000001f2fdd0c4 libsystem_pthread.dylib`start_wqthread
thread #6, name = 'com.apple.uikit.eventfetch-thread'
frame #0: 0x00000001df1e56c8 libsystem_kernel.dylib`mach_msg2_trap + 8
frame #1: 0x00000001df1e8ec8 libsystem_kernel.dylib`mach_msg2_internal + 80
frame #2: 0x00000001df1e8de0 libsystem_kernel.dylib`mach_msg_overwrite + 436
frame #3: 0x00000001df1e8c20 libsystem_kernel.dylib`mach_msg + 24
frame #4: 0x0000000196560f5c CoreFoundation`__CFRunLoopServiceMachPort + 160
frame #5: 0x0000000196560600 CoreFoundation`__CFRunLoopRun + 1208
frame #6: 0x000000019655fcd8 CoreFoundation`CFRunLoopRunSpecific + 608
frame #7: 0x0000000195480b5c Foundation`-[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
frame #8: 0x00000001954809ac Foundation`-[NSRunLoop(NSRunLoop) runUntilDate:] + 64
frame #9: 0x0000000198bad81c UIKitCore`-[UIEventFetcher threadMain] + 420
frame #10: 0x0000000195497428 Foundation`__NSThread__start__ + 732
frame #11: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #7, queue = 'com.apple.libtrace.state.block-list'
frame #0: 0x00000001df1ebbcc libsystem_kernel.dylib`__ulock_wait + 8
frame #1: 0x0000000107d03338 libdispatch.dylib`_dlock_wait + 56
frame #2: 0x0000000107d030ec libdispatch.dylib`_dispatch_thread_event_wait_slow + 56
frame #3: 0x0000000107d141f8 libdispatch.dylib`__DISPATCH_WAIT_FOR_QUEUE__ + 384
frame #4: 0x0000000107d13b30 libdispatch.dylib`_dispatch_sync_f_slow + 184
frame #5: 0x00000001b06c4c8c libsystem_trace.dylib`___os_state_request_for_self_block_invoke + 372
frame #6: 0x0000000107d00b98 libdispatch.dylib`_dispatch_call_block_and_release + 32
frame #7: 0x0000000107d027bc libdispatch.dylib`_dispatch_client_callout + 20
frame #8: 0x0000000107d0a66c libdispatch.dylib`_dispatch_lane_serial_drain + 832
frame #9: 0x0000000107d0b43c libdispatch.dylib`_dispatch_lane_invoke + 460
frame #10: 0x0000000107d18404 libdispatch.dylib`_dispatch_root_queue_drain_deferred_wlh + 328
frame #11: 0x0000000107d17a38 libdispatch.dylib`_dispatch_workloop_worker_thread + 444
frame #12: 0x00000001f2fe0934 libsystem_pthread.dylib`_pthread_wqthread + 288
thread #9
frame #0: 0x00000001df1e5450 libsystem_kernel.dylib`__workq_kernreturn + 8
thread #11
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x00000001a694d504 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock&) + 28
frame #3: 0x0000000108974b2c VLCMediaLibraryKit`medialibrary::ModificationNotifier::run() [inlined] void std::__1::condition_variable::wait(this=0x0000000109874e20, __lk=0x000000016b546948, __pred=(unnamed class) @ x25) at condition_variable.h:148:5 [opt]
frame #4: 0x0000000108974b20 VLCMediaLibraryKit`medialibrary::ModificationNotifier::run(this=) at ModificationsNotifier.cpp:268:28 [opt]
frame #5: 0x0000000108979d50 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*>>(void*) [inlined] decltype(*std::declval().*std::declval()()) std::__1::__invoke[abi:ue170006](__f=0x0000000300fb0ea8, __a0=0x0000000300fb0eb8) at invoke.h:308:25 [opt]
frame #6: 0x0000000108979d34 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*>>(void*) [inlined] void std::__1::__thread_execute[abi:ue170006]>, void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*, 2ul>(__t=size=3, (null)=) at thread.h:227:5 [opt]
frame #7: 0x0000000108979d34 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::ModificationNotifier::*)(), medialibrary::ModificationNotifier*>>(__vp=0x0000000300fb0ea0) at thread.h:238:5 [opt]
frame #8: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #12
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x00000001a694d504 libc++.1.dylib`std::__1::condition_variable::wait(std::__1::unique_lock&) + 28
frame #3: 0x000000010892a990 VLCMediaLibraryKit`medialibrary::DiscovererWorker::run() [inlined] void std::__1::condition_variable::wait(this=0x0000000109019d38, __lk=0x000000016b5d2f28, __pred=(unnamed class) @ x19) at condition_variable.h:148:5 [opt]
frame #4: 0x000000010892a974 VLCMediaLibraryKit`medialibrary::DiscovererWorker::run(this=0x0000000109019cc8) at DiscovererWorker.cpp:445:28 [opt]
frame #5: 0x000000010892c650 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>>(void*) [inlined] decltype(*std::declval().*std::declval()()) std::__1::__invoke[abi:ue170006](__f=0x0000000300fc0c68, __a0=0x0000000300fc0c78) at invoke.h:308:25 [opt]
frame #6: 0x000000010892c634 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>>(void*) [inlined] void std::__1::__thread_execute[abi:ue170006]>, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*, 2ul>(__t=size=3, (null)=) at thread.h:227:5 [opt]
frame #7: 0x000000010892c634 VLCMediaLibraryKit`void* std::__1::__thread_proxy[abi:ue170006]>, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>>(__vp=0x0000000300fc0c60) at thread.h:238:5 [opt]
frame #8: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #13
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016b6def50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x00000003021bc1d8, mutex=0x00000003021bc180) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x00000003021bc180) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x000000030010f270) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #14
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016b7eaf50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x00000003021b00d8, mutex=0x00000003021b0080) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x00000003021b0080) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x000000030010a0a0) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #15
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016b8f6f50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x00000003021b0158, mutex=0x00000003021b0100) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x00000003021b0100) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x000000030010a010) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #16
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016ba02f50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x00000003021b01d8, mutex=0x00000003021b0180) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x00000003021b0180) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x0000000300109f80) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #18
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016bb0ef10, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x0000000107e20040, mutex=0x0000000107e1ff38) at threads.c:288:5
frame #4: 0x000000010b3df56c VLCKit`vlc_player_destructor_Thread(data=0x0000000107e1ff20) at player.c:199:13
frame #5: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #19
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016bc1af10, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x000000010870a480, mutex=0x000000010870a378) at threads.c:288:5
frame #4: 0x000000010b3df56c VLCKit`vlc_player_destructor_Thread(data=0x000000010870a360) at player.c:199:13
frame #5: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #20
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016bd26f90, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x0000000303e904b0, mutex=0x0000000303e904a0) at threads.c:288:5
frame #4: 0x000000010b35b0d8 VLCKit`playlist_thread(data=0x0000000303e90460) at media_list_player.c:346:9
frame #5: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #21
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000010870a378, value=2) at wait.c:86:9
frame #3: 0x000000010b44b464 VLCKit`vlc_mutex_lock(mtx=0x000000010870a378) at threads.c:109:9
frame #4: 0x000000010b3db5cc VLCKit`vlc_player_Lock(player=0x000000010870a360) at player.c:950:5
frame #5: 0x000000010b356944 VLCKit`libvlc_media_player_get_rate(p_mi=0x0000000303a9c3c0) at media_player.c:1726:5
frame #6: 0x000000010ada4568 VLCKit`-[VLCMediaPlayer rate](self=0x0000000303398d00, _cmd="rate") at VLCMediaPlayer.m:780:12
frame #7: 0x0000000104e7560c VLC for iOS`-[VLCMetaData updatePlaybackRate:](self=0x00000003024a7b10, _cmd="updatePlaybackRate:", mediaPlayer=0x0000000303398d00) at VLCMetadata.m:113:39
frame #8: 0x0000000104e7539c VLC for iOS`-[VLCMetaData updateMetadataFromMedia:mediaPlayer:](self=0x00000003024a7b10, _cmd="updateMetadataFromMedia:mediaPlayer:", media=0x00000003021bd800, mediaPlayer=0x0000000303398d00) at VLCMetadata.m:77:5
frame #9: 0x0000000104e6becc VLC for iOS`-[VLCPlaybackService setNeedsMetadataUpdate](self=0x0000000107e1a920, _cmd="setNeedsMetadataUpdate") at VLCPlaybackService.m:1544:5
frame #10: 0x0000000104e6bd68 VLC for iOS`-[VLCPlaybackService mediaMetaDataDidChange:](self=0x0000000107e1a920, _cmd="mediaMetaDataDidChange:", aMedia=0x0000000302ca5810) at VLCPlaybackService.m:1537:5
frame #11: 0x000000010ad9e598 VLCKit`-[VLCMedia metaChanged:](self=0x0000000302ca5810, _cmd="metaChanged:", metaType=libvlc_meta_Title) at VLCMedia.m:542:9
frame #12: 0x000000010ada0c38 VLCKit`__HandleMediaMetaChanged_block_invoke(.block_descriptor=0x00000003001e2100, object=0x0000000302ca5810) at VLCMedia.m:125:13
frame #13: 0x000000010adaec60 VLCKit`__32-[VLCEventsHandler handleEvent:]_block_invoke(.block_descriptor=0x0000000301ad0e40) at VLCEventsHandler.m:61:9
frame #14: 0x000000010adaeb18 VLCKit`-[VLCEventsHandler handleEvent:](self=0x0000000300fbba80, _cmd="handleEvent:", handle=0x000000010ada0bdc) at VLCEventsHandler.m:75:9
frame #15: 0x000000010ada09c0 VLCKit`HandleMediaMetaChanged(event=0x000000016be32ea0, opaque=0x0000000300fbba80) at VLCMedia.m:123:9
frame #16: 0x000000010b34e848 VLCKit`libvlc_event_send(p_em=0x0000000302b94480, p_event=0x000000016be32ea0) at event.c:117:13
frame #17: 0x000000010b3508ec VLCKit`send_parsed_changed(p_md=0x0000000302b94480, new_status=libvlc_media_parsed_status_done) at media.c:288:5
frame #18: 0x000000010b351fcc VLCKit`input_item_preparse_ended(item=0x00000003034981a0, status=0, user_data=0x0000000302b94480) at media.c:330:5
frame #19: 0x000000010b396a64 VLCKit`NotifyPreparseEnded(task=0x000000030389c630) at preparser.c:184:5
frame #20: 0x000000010b395110 VLCKit`ParserRun(userdata=0x000000030389c630) at preparser.c:328:5
frame #21: 0x000000010b43b710 VLCKit`ThreadRun(userdata=0x00000003001f9a40) at executor.c:134:9
frame #22: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #22
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016bf3ef50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x0000000302181758, mutex=0x0000000302181700) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x0000000302181700) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x00000003001f9a70) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #23
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016c04af50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x00000003021817d8, mutex=0x0000000302181780) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x0000000302181780) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x00000003001f9aa0) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #24
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x000000016c156f50, value=0) at wait.c:86:9
frame #3: 0x000000010b44bb58 VLCKit`vlc_cond_wait(cond=0x0000000302181858, mutex=0x0000000302181800) at threads.c:288:5
frame #4: 0x000000010b43b8a4 VLCKit`QueueTake(executor=0x0000000302181800) at executor.c:98:9
frame #5: 0x000000010b43b6d0 VLCKit`ThreadRun(userdata=0x00000003001f9ad0) at executor.c:128:24
frame #6: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
thread #25
frame #0: 0x00000001df1eb08c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x00000001f2fdf6e4 libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x000000010b460d9c VLCKit`vlc_atomic_wait(addr=0x0000000302b94498, value=2) at wait.c:86:9
frame #3: 0x000000010b44b464 VLCKit`vlc_mutex_lock(mtx=0x0000000302b94498) at threads.c:109:9
frame #4: 0x000000010b34e7cc VLCKit`libvlc_event_send(p_em=0x0000000302b94480, p_event=0x000000016c36dd40) at event.c:110:5
frame #5: 0x000000010b3595cc VLCKit`on_media_meta_changed(player=0x000000010870a360, media=0x00000003034981a0, data=0x0000000303a9c3c0) at media_player.c:450:5
frame #6: 0x000000010b3e1d1c VLCKit`input_thread_Events(input_thread=0x000000010a00fc00, event=0x000000016c36e0f0, user_data=0x0000000108507330) at input.c:1019:13
frame #7: 0x000000010b3b7704 VLCKit`input_SendEvent(p_input=0x000000010a00fc00, event=0x000000016c36e0f0) at event.h:35:9
frame #8: 0x000000010b3bea9c VLCKit`input_SendEventMetaInfo(p_input=0x000000010a00fc00) at event.h:161:5
frame #9: 0x000000010b3be590 VLCKit`EsOutUpdateInfo(p_sys=0x00000001086064b0, es=0x000000010870edb0, p_meta=0x0000000000000000) at es_out.c:4632:5
frame #10: 0x000000010b3c1fb0 VLCKit`EsOutAddLocked(p_sys=0x00000001086064b0, source=0x000000030219f480, fmt=0x000000010f01d020, p_master=0x0000000000000000) at es_out.c:2236:5
frame #11: 0x000000010b3c0e84 VLCKit`EsOutAdd(out=0x0000000108606640, source=0x000000030219f480, fmt=0x000000010f01d020) at es_out.c:2253:23
frame #12: 0x000000010b3c6fa8 VLCKit`CmdExecuteAdd(p_sys=0x00000003024871e0, p_cmd=0x000000016c36e617) at es_out_timeshift.c:1529:25
frame #13: 0x000000010b3c7b98 VLCKit`Add(p_out=0x0000000302487238, in=0x0000000000000000, p_fmt=0x000000010f01d020) at es_out_timeshift.c:408:9
frame #14: 0x000000010b114814 VLCKit`es_out_Add + 52
frame #15: 0x000000010b11431c VLCKit`MP4_CreateES + 48
frame #16: 0x000000010b11e2a4 VLCKit`TrackCreateES + 1908
frame #17: 0x000000010b10f1a0 VLCKit`MP4_TrackSetup + 4096
frame #18: 0x000000010b10c538 VLCKit`Open + 5008
frame #19: 0x000000010b3aeeac VLCKit`demux_Probe(func=0x000000010b10b1a8, forced=true, ap="\x90v`\b\U00000001") at demux.c:112:15
frame #20: 0x000000010b383734 VLCKit`vlc_module_load(log=0x0000000300da8188, capability="demux", name="ext-mp4", strict=false, probe=(VLCKit`demux_Probe at demux.c:98)) at modules.c:230:15
frame #21: 0x000000010b3aea34 VLCKit`demux_NewAdvanced(p_obj=0x000000010a00fc00, p_input=0x000000010a00fc00, module="ext-mp4", url="file:///var/mobile/Containers/Data/Application/8B3622AB-383E-4C4A-AE1C-663B90EDE60A/Documents/Kazoo%20Kid%20-%20Trap%20Remix-g-sgw9bPV4A.mp4", s=0x0000000303680380, out=0x0000000302487238, b_preparsing=false) at demux.c:196:20
frame #22: 0x000000010b3d2d60 VLCKit`InputDemuxNew(p_input=0x000000010a00fc00, p_es_out=0x0000000302487238, p_source=0x000000030219f480, url="file:///var/mobile/Containers/Data/Application/8B3622AB-383E-4C4A-AE1C-663B90EDE60A/Documents/Kazoo%20Kid%20-%20Trap%20Remix-g-sgw9bPV4A.mp4", psz_demux="any", psz_anchor="") at input.c:2572:22
frame #23: 0x000000010b3cdc90 VLCKit`InputSourceInit(in=0x000000030219f480, p_input=0x000000010a00fc00, psz_mrl="file:///var/mobile/Containers/Data/Application/8B3622AB-383E-4C4A-AE1C-663B90EDE60A/Documents/Kazoo%20Kid%20-%20Trap%20Remix-g-sgw9bPV4A.mp4", psz_forced_demux=0x0000000000000000, b_in_can_fail=false) at input.c:2700:27
frame #24: 0x000000010b3cada0 VLCKit`Init(p_input=0x000000010a00fc00) at input.c:1322:15
frame #25: 0x000000010b3c8ee0 VLCKit`Run(data=0x000000010a00fc00) at input.c:409:10
frame #26: 0x00000001f2fe206c libsystem_pthread.dylib`_pthread_start + 136
It seems two parallel media metadata parsing event can happen concurrently and cause unexpected race conditions blocking the main thread
Edited by Maxime Chapelet