Interpreting crash log assertionFailure

Hello, I am experiencing crash on TopShelf and I checked all the crashlogs, but I don't know how to interpret it.

I see only addresses in the trace logs, so it's really hard to understand what's going on. Is there a way how to symbolicate frames 5 - 17?

Does anybody have an idea, what can be wrong?

Thanks in advance.

0 libswiftCore.dylib 0x000000019bd33a88 _assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1 TopShelf 0x00000001048b998c 0x1045ac000 + 3201420
2 TopShelf 0x0000000104cc04a8 0x1045ac000 + 7423144
3 libdispatch.dylib 0x000000019ab89294 _dispatch_client_callout + 20 (object.m:576)
4 libdispatch.dylib 0x000000019ab8aae0 _dispatch_once_callout + 32 (once.c:52)
5 TopShelf 0x00000001048f4098 0x1045ac000 + 3440792
6 TopShelf 0x00000001048f4930 0x1045ac000 + 3442992
7 TopShelf 0x00000001048cc8bc 0x1045ac000 + 3279036
8 TopShelf 0x00000001045b5a61 0x1045ac000 + 39521
9 TopShelf 0x0000000104ca8841 0x1045ac000 + 7325761
10 TopShelf 0x00000001049e5cc5 0x1045ac000 + 4431045
11 TopShelf 0x0000000104cc0dfd 0x1045ac000 + 7425533
12 TopShelf 0x00000001045b4b95 0x1045ac000 + 35733
13 TopShelf 0x00000001045b4e81 0x1045ac000 + 36481
14 TopShelf 0x00000001045b50e5 0x1045ac000 + 37093
15 TopShelf 0x00000001045b5a61 0x1045ac000 + 39521
16 TopShelf 0x00000001045b54b5 0x1045ac000 + 38069
17 TopShelf 0x00000001045b50e5 0x1045ac000 + 37093
18 libswift_Concurrency.dylib 0x000000019c30aedd completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)
Answered by DTS Engineer in 832121022

Ah, so TopShelf is the name of your app (well, appex). That was a key point of confusion for me.

Written by JamesScott in 831846022
I apologize for partially symbolicated crash report.

Symbolicating that crash report is key to fixing this. Consider the crashing thread backtrace:

Thread 6 Crashed:
0 libswiftCore.dylib_assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1 TopShelf0x100b4c000 + 3185020
2 TopShelf0x100b4c000 + 7397752
3 libdispatch.dylib_dispatch_client_callout + 20 (object.m:576)
4 libdispatch.dylib_dispatch_once_callout + 32 (once.c:52)
5 TopShelf0x100b4c000 + 3424052
17 TopShelf0x100b4c000 + 20709
18 libswift_Concurrency.dylibcompleteTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Frame 18 shows that this code is being called by the Swift concurrency runtime. Frames 17 through through 5 are your code. Frames 4 and 3 indicate that you’re initialising some sort of global using the dispatch_once mechanism. Frames 2 through 0 are the code that’s run by this mechanism. Frame 1 is the most critical, because it’s tripped the assert that’s caused this trap.

So, you really need to symbolicate the crash report to uncover the identity of frames 1, 2, and 5. See Adding identifiable symbol names to a crash report for instructions on how to do that.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Can you post the full crash report? See Posting a Crash Report for advice on how to do that.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thank you for your response. I attached the file.

I can not reproduce the crash, this is crash report from users I found it in Organizer, so I apologize for partially symbolicated crash report.

Reading all the crash logs I noticed that crashed thread is always > 0

For this example, it's Thread 6

Thread 6 Crashed:
0 libswiftCore.dylib 0x000000018e0a3a88 _assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1 TopShelf 0x0000000100e5597c 0x100b4c000 + 3185020
2 TopShelf 0x000000010125a178 0x100b4c000 + 7397752
3 libdispatch.dylib 0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4 libdispatch.dylib 0x000000018cefaae0 _dispatch_once_callout + 32 (once.c:52)
5 TopShelf 0x0000000100e8ff34 0x100b4c000 + 3424052
6 TopShelf 0x0000000100e907cc 0x100b4c000 + 3426252
7 TopShelf 0x0000000100e68968 0x100b4c000 + 3262824
8 TopShelf 0x0000000100b51a61 0x100b4c000 + 23137
9 TopShelf 0x0000000101242511 0x100b4c000 + 7300369
10 TopShelf 0x0000000100f81ab5 0x100b4c000 + 4414133
11 TopShelf 0x000000010125aacd 0x100b4c000 + 7400141
12 TopShelf 0x0000000100b50b95 0x100b4c000 + 19349
13 TopShelf 0x0000000100b50e81 0x100b4c000 + 20097
14 TopShelf 0x0000000100b510e5 0x100b4c000 + 20709
15 TopShelf 0x0000000100b51a61 0x100b4c000 + 23137
16 TopShelf 0x0000000100b514b5 0x100b4c000 + 21685
17 TopShelf 0x0000000100b510e5 0x100b4c000 + 20709
18 libswift_Concurrency.dylib 0x000000018e67aedd completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Incident Identifier: FEAF9F98-6A19-4E13-8274-B03D195E92D8
Hardware Model:      AppleTV14,1
Process:             TopShelf [262]
Path:                /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/PlugIns/TopShelf.appex/TopShelf
Identifier:          tv.fubo.mobile.TopShelf
Version:             7.16.0 (22972)
AppVariant:          1:AppleTV14,1:18
Beta:                YES
Code Type:           ARM-64 (Native)
Role:                Unspecified
Parent Process:      launchd [1]
Coalition:           tv.fubo.mobile.TopShelf [386]

Date/Time:           2025-03-14 12:50:39.6525 +0200
Launch Time:         2025-03-14 12:50:38.9676 +0200
OS Version:          Apple TVOS 18.3.1 (22K561)
Release Type:        User
Report Version:      104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000018e0a3a88
Termination Reason: ****** 5 Trace/BPT trap: 5
Terminating Process: exc handler [262]

Triggered by Thread:  6


Thread 0 name:
Thread 0:
0   libsystem_kernel.dylib        	0x000000018cd30268 mach_msg2_trap + 8 (:-1)
1   libsystem_kernel.dylib        	0x000000018cd38938 mach_msg2_internal + 80 (mach_msg.c:201)
2   libsystem_kernel.dylib        	0x000000018cd38bc0 mach_msg_overwrite + 424 (mach_msg.c:0)
3   libsystem_kernel.dylib        	0x000000018cd38a0c mach_msg + 24 (mach_msg.c:323)
4   CoreFoundation                	0x000000018d6b4f20 __CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2637)
5   CoreFoundation                	0x000000018d6aefd8 __CFRunLoopRun + 1212 (CFRunLoop.c:3021)
6   CoreFoundation                	0x000000018d6ae69c CFRunLoopRunSpecific + 588 (CFRunLoop.c:3434)
7   Foundation                    	0x000000018fd1d57c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 (NSRunLoop.m:373)
8   Foundation                    	0x000000019052e66c -[NSRunLoop(NSRunLoop) run] + 64 (NSRunLoop.m:398)
9   libxpc.dylib                  	0x000000018cccbfa8 _xpc_objc_main + 336 (main.m:267)
10  libxpc.dylib                  	0x000000018ccce514 _xpc_main + 64 (init.c:1291)
11  libxpc.dylib                  	0x000000018ccce6f4 xpc_main + 64 (init.c:1374)
12  Foundation                    	0x000000019061ad78 -[NSXPCListener resume] + 308 (NSXPCListener.m:471)
13  PlugInKit                     	0x0000000196522718 -[PKService runUsingServiceListener:] + 364 (PKService.m:219)
14  PlugInKit                     	0x00000001965225a4 -[PKService run] + 20 (PKService.m:185)
15  PlugInKit                     	0x0000000196522264 +[PKService main] + 340 (PKService.m:126)
16  PlugInKit                     	0x0000000196522a74 +[PKService _defaultRun:arguments:] + 16 (PKService.m:265)
17  ExtensionFoundation           	0x00000001a1506fec EXExtensionMain + 288 (EXExtensionMain.m:0)
18  Foundation                    	0x000000019056ee08 NSExtensionMain + 200 (NSExtensionMain.m:21)
19  dyld                          	0x000000018cbacaa8 start + 2700 (dyldMain.cpp:1338)

Thread 1:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 2 name:
Thread 2:
0   libsystem_kernel.dylib        	0x000000018cd33f44 kevent_id + 8 (:-1)
1   libdispatch.dylib             	0x000000018cf1bcf0 _dispatch_kq_poll + 228 (event_kevent.c:760)
2   libdispatch.dylib             	0x000000018cf1b27c _dispatch_event_loop_poke + 340 (event_kevent.c:1901)
3   libdispatch.dylib             	0x000000018cf1818c _dispatch_mach_msg_send + 1268 (mach.c:1260)
4   libdispatch.dylib             	0x000000018cf182fc _dispatch_mach_msg_send + 1636 (mach.c:1094)
5   libdispatch.dylib             	0x000000018cf17828 _dispatch_mach_send_drain + 304 (mach.c:1380)
6   libdispatch.dylib             	0x000000018cf13e0c _dispatch_mach_send_msg + 352 (mach.c:1888)
7   libdispatch.dylib             	0x000000018cf1462c dispatch_mach_send_with_result_and_async_reply_4libxpc + 116 (mach.c:2051)
8   libxpc.dylib                  	0x000000018ccbfab8 _xpc_connection_enqueue + 156 (connection.c:969)
9   libxpc.dylib                  	0x000000018ccc0934 xpc_connection_send_message_with_reply + 264 (connection.c:3990)
10  CoreAnalytics                 	0x0000000190bbe79c CoreAnalytics::Client::retryXpcMessageHelper_sync(applesauce::xpc::dict, XPCMessagePriority, bool, unsigned char, unsigned long long) + 336 (CoreAnalyticsClient.cpp:382)
11  CoreAnalytics                 	0x0000000190bbe594 CoreAnalytics::Client::retryXpcMessage_sync(applesauce::xpc::dict const&, XPCMessagePriority, bool) + 116 (CoreAnalyticsClient.cpp:439)
12  CoreAnalytics                 	0x0000000190bbe3a0 invocation function for block in CoreAnalytics::Client::sendXpcMessage_sync(applesauce::xpc::dict, XPCMessagePriority, bool, bool) + 540 (CoreAnalyticsClient.cpp:370)
13  libdispatch.dylib             	0x000000018cf08664 _dispatch_block_async_invoke2 + 148 (queue.c:574)
14  libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
15  libdispatch.dylib             	0x000000018cf008f0 _dispatch_lane_serial_drain + 768 (queue.c:3934)
16  libdispatch.dylib             	0x000000018cf01448 _dispatch_lane_invoke + 380 (queue.c:4025)
17  libdispatch.dylib             	0x000000018cf0c65c _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193)
18  libdispatch.dylib             	0x000000018cf0bea8 _dispatch_workloop_worker_thread + 548 (queue.c:6787)
19  libsystem_pthread.dylib       	0x000000018ccfb3d8 _pthread_wqthread + 288 (pthread.c:2696)
20  libsystem_pthread.dylib       	0x000000018cd027ac start_wqthread + 8 (:-1)

Thread 3:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 4:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 5:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 6 Crashed:
0   libswiftCore.dylib            	0x000000018e0a3a88 _assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1   TopShelf                      	0x0000000100e5597c 0x100b4c000 + 3185020
2   TopShelf                      	0x000000010125a178 0x100b4c000 + 7397752
3   libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4   libdispatch.dylib             	0x000000018cefaae0 _dispatch_once_callout + 32 (once.c:52)
5   TopShelf                      	0x0000000100e8ff34 0x100b4c000 + 3424052
6   TopShelf                      	0x0000000100e907cc 0x100b4c000 + 3426252
7   TopShelf                      	0x0000000100e68968 0x100b4c000 + 3262824
8   TopShelf                      	0x0000000100b51a61 0x100b4c000 + 23137
9   TopShelf                      	0x0000000101242511 0x100b4c000 + 7300369
10  TopShelf                      	0x0000000100f81ab5 0x100b4c000 + 4414133
11  TopShelf                      	0x000000010125aacd 0x100b4c000 + 7400141
12  TopShelf                      	0x0000000100b50b95 0x100b4c000 + 19349
13  TopShelf                      	0x0000000100b50e81 0x100b4c000 + 20097
14  TopShelf                      	0x0000000100b510e5 0x100b4c000 + 20709
15  TopShelf                      	0x0000000100b51a61 0x100b4c000 + 23137
16  TopShelf                      	0x0000000100b514b5 0x100b4c000 + 21685
17  TopShelf                      	0x0000000100b510e5 0x100b4c000 + 20709
18  libswift_Concurrency.dylib    	0x000000018e67aedd completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Thread 7 name:
Thread 7:
0   TopShelf                      	0x000000010175e8c0 0x100b4c000 + 12658880
1   TopShelf                      	0x000000010175d710 0x100b4c000 + 12654352
2   libdispatch.dylib             	0x000000018cef7538 _dispatch_call_block_and_release + 32 (init.c:1549)
3   libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4   libdispatch.dylib             	0x000000018cf008f0 _dispatch_lane_serial_drain + 768 (queue.c:3934)
5   libdispatch.dylib             	0x000000018cf01448 _dispatch_lane_invoke + 380 (queue.c:4025)
6   libdispatch.dylib             	0x000000018cf0c65c _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193)
7   libdispatch.dylib             	0x000000018cf0bea8 _dispatch_workloop_worker_thread + 548 (queue.c:6787)
8   libsystem_pthread.dylib       	0x000000018ccfb3d8 _pthread_wqthread + 288 (pthread.c:2696)
9   libsystem_pthread.dylib       	0x000000018cd027ac start_wqthread + 8 (:-1)

Thread 8:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)


Thread 6 crashed with ARM Thread State (64-bit):
    x0: 0x0000000115f60a48   x1: 0x0000000200000003   x2: 0x0000000115f00000   x3: 0x0000000115f60670
    x4: 0x0000000000000090   x5: 0x0000000115f60670   x6: 0x0000000000000009   x7: 0x0000000000000000
    x8: 0xfffffffe00000000   x9: 0x0000000200000003  x10: 0x0000000000000003  x11: 0x0000000000179f41
   x12: 0x0000000115f03f48  x13: 0x0000000000000008  x14: 0x0000000115f00000  x15: 0x0000000000001e95
   x16: 0xd7960001023c8080  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000101baed80
   x20: 0x0000000115f60a40  x21: 0x0000000000000000  x22: 0x000000000000000b  x23: 0x0000000000000017
   x24: 0x00000000000000f7  x25: 0x0000000101bb3f20  x26: 0xf000000000000061  x27: 0x0000000000000000
   x28: 0x0000000101f03b50   fp: 0x000000016f5f6890   lr: 0x000000018e0a3a88
    sp: 0x000000016f5f67c0   pc: 0x000000018e0a3a88 cpsr: 0x60001000
   esr: 0xf2000001 (Breakpoint) brk 1


Binary Images:
        0x100b4c000 -         0x101d3ffff TopShelf arm64   /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/PlugIns/TopShelf.appex/TopShelf
        0x10232c000 -         0x102337fff libobjc-trampolines.dylib arm64e   /usr/lib/libobjc-trampolines.dylib
        0x102580000 -         0x1025a3fff GCDWebServers arm64  <2ec7179416ff3b5b9e3c3cb6cc9f3bae> /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/GCDWebServers.framework/GCDWebServers
        0x1027d8000 -         0x10299bfff Lottie arm64  <2f787be13dae38888a9f1aba49d6e254> /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/Lottie.framework/Lottie
        0x102fa4000 -         0x10310ffff NpawPlugin arm64   /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/NpawPlugin.framework/NpawPlugin
        0x18cbab000 -         0x18cc247d3 dyld arm64e  <84a680364ccc371eb27a26676a9398fa> /usr/lib/dyld
        0x18ccb0000 -         0x18ccf7fff libxpc.dylib arm64e  <0dcfc20a3c4f31c38909a18e5e84a0a1> /usr/lib/system/libxpc.dylib
        0x18ccf8000 -         0x18cd03ff3 libsystem_pthread.dylib arm64e  <0ec37122096d361c93b5f018757e232a> /usr/lib/system/libsystem_pthread.dylib
        0x18cd2f000 -         0x18cd66feb libsystem_kernel.dylib arm64e  <3dada54a0ba836fcb619ba191086a272> /usr/lib/system/libsystem_kernel.dylib
        0x18cef5000 -         0x18cf3afff libdispatch.dylib arm64e   /usr/lib/system/libdispatch.dylib
        0x18cfb3000 -         0x18d030ffb libsystem_c.dylib arm64e  <954923fc3a553f4a90dcb18d81556300> /usr/lib/system/libsystem_c.dylib
        0x18d62e000 -         0x18db69fff CoreFoundation arm64e  <17d1c69a6b1337bcae3b31ba0202ab1e> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
        0x18e06c000 -         0x18e609fff libswiftCore.dylib arm64e   /usr/lib/swift/libswiftCore.dylib
        0x18e611000 -         0x18e693ff7 libswift_Concurrency.dylib arm64e   /usr/lib/swift/libswift_Concurrency.dylib
        0x18fd11000 -         0x190a19fff Foundation arm64e  <9234c121cdba3214b0e254a0c479b76c> /System/Library/Frameworks/Foundation.framework/Foundation
        0x190ba0000 -         0x190bd0fff CoreAnalytics arm64e   /System/Library/PrivateFrameworks/CoreAnalytics.framework/CoreAnalytics
        0x19650a000 -         0x196543fff PlugInKit arm64e   /System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit
        0x1a14f0000 -         0x1a15aefff ExtensionFoundation arm64e  <34d0444ba22a322380b798d03b6817b7> /System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation

EOF

Ah, so TopShelf is the name of your app (well, appex). That was a key point of confusion for me.

Written by JamesScott in 831846022
I apologize for partially symbolicated crash report.

Symbolicating that crash report is key to fixing this. Consider the crashing thread backtrace:

Thread 6 Crashed:
0 libswiftCore.dylib_assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1 TopShelf0x100b4c000 + 3185020
2 TopShelf0x100b4c000 + 7397752
3 libdispatch.dylib_dispatch_client_callout + 20 (object.m:576)
4 libdispatch.dylib_dispatch_once_callout + 32 (once.c:52)
5 TopShelf0x100b4c000 + 3424052
17 TopShelf0x100b4c000 + 20709
18 libswift_Concurrency.dylibcompleteTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Frame 18 shows that this code is being called by the Swift concurrency runtime. Frames 17 through through 5 are your code. Frames 4 and 3 indicate that you’re initialising some sort of global using the dispatch_once mechanism. Frames 2 through 0 are the code that’s run by this mechanism. Frame 1 is the most critical, because it’s tripped the assert that’s caused this trap.

So, you really need to symbolicate the crash report to uncover the identity of frames 1, 2, and 5. See Adding identifiable symbol names to a crash report for instructions on how to do that.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I greatly appreciate your response.

I was able to symbolicate it.

Thread 6 Crashed:
0 libswiftCore.dylib 0x000000018e0a3a88 _assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1 TopShelf 0x0000000100e5597c specialized static ContextMenuMetadata.__derived_struct_equals(_:_:) (in TopShelf) (/<compiler-generated>:0)
2 TopShelf 0x000000010125a178 one-time initialization function for FT_Proto_Common_V3_Custom_SchemaDescription_Extensions (in TopShelf) (schema_description.pb.swift:116)
3 libdispatch.dylib 0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4 libdispatch.dylib 0x000000018cefaae0 _dispatch_once_callout + 32 (once.c:52)
5 TopShelf 0x0000000100e8ff34 FTPlayer.convert(_:) (in TopShelf) (PlaybackDetails.swift:106)
6 TopShelf 0x0000000100e907cc initializeBufferWithCopyOfBuffer for PlaybackDetails (in TopShelf) (/<compiler-generated>:0)
7 TopShelf 0x0000000100e68968 assignWithCopy for GuidePage (in TopShelf) (/<compiler-generated>:0)
8 TopShelf 0x0000000100b51a61 initializeWithCopy for MarqueeTextView (in TopShelf) (/<compiler-generated>:0)
9 TopShelf 0x0000000101242511 JSONSafeEncoder.__deallocating_deinit (in TopShelf) (JSONSafeEncoder.swift:34)
10 TopShelf 0x0000000100f81ab5 type metadata completion function for FTButtonIcon (in TopShelf) (/<compiler-generated>:0)
11 TopShelf 0x000000010125aacd <deduplicated_symbol> (in TopShelf) + 5
12 TopShelf 0x0000000100b50b95 closure #1 in MarqueeTextView.plainText(stringWidth:size:) (in TopShelf) (/<compiler-generated>:0)
13 TopShelf 0x0000000100b50e81 MarqueeTextView.scrollableTextView.getter (in TopShelf) (MarqueeTextView.swift:96)
14 TopShelf 0x0000000100b510e5 closure #1 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:113)
15 TopShelf 0x0000000100b51a61 initializeWithCopy for MarqueeTextView (in TopShelf) (/<compiler-generated>:
16 TopShelf 0x0000000100b514b5 closure #3 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:131)
17 TopShelf 0x0000000100b510e5 closure #1 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:113)
18 libswift_Concurrency.dylib 0x000000018e67aedd completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Analyzing these crash logs raises several additional questions. TopShelf is appex for tvOS top shelf, but the trace shows the code for the main application. Does this imply that when a user opens an application through the top shelf, the TopShelf appex is also utilized, even when the user is currently within the main application? This suggests that the crash may not necessarily be occurring within the TopShelf application but rather within the main application itself.

Incident Identifier: FEAF9F98-6A19-4E13-8274-B03D195E92D8
Hardware Model:      AppleTV14,1
Process:             TopShelf [262]
Path:                /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/PlugIns/TopShelf.appex/TopShelf
Identifier:          tv.fubo.mobile.TopShelf
Version:             7.16.0 (22972)
AppVariant:          1:AppleTV14,1:18
Beta:                YES
Code Type:           ARM-64 (Native)
Role:                Unspecified
Parent Process:      launchd [1]
Coalition:           tv.fubo.mobile.TopShelf [386]

Date/Time:           2025-03-14 12:50:39.6525 +0200
Launch Time:         2025-03-14 12:50:38.9676 +0200
OS Version:          Apple TVOS 18.3.1 (22K561)
Release Type:        User
Report Version:      104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000018e0a3a88
Termination Reason: ****** 5 Trace/BPT trap: 5
Terminating Process: exc handler [262]

Triggered by Thread:  6


Thread 0 name:
Thread 0:
0   libsystem_kernel.dylib        	0x000000018cd30268 mach_msg2_trap + 8 (:-1)
1   libsystem_kernel.dylib        	0x000000018cd38938 mach_msg2_internal + 80 (mach_msg.c:201)
2   libsystem_kernel.dylib        	0x000000018cd38bc0 mach_msg_overwrite + 424 (mach_msg.c:0)
3   libsystem_kernel.dylib        	0x000000018cd38a0c mach_msg + 24 (mach_msg.c:323)
4   CoreFoundation                	0x000000018d6b4f20 __CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2637)
5   CoreFoundation                	0x000000018d6aefd8 __CFRunLoopRun + 1212 (CFRunLoop.c:3021)
6   CoreFoundation                	0x000000018d6ae69c CFRunLoopRunSpecific + 588 (CFRunLoop.c:3434)
7   Foundation                    	0x000000018fd1d57c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 (NSRunLoop.m:373)
8   Foundation                    	0x000000019052e66c -[NSRunLoop(NSRunLoop) run] + 64 (NSRunLoop.m:398)
9   libxpc.dylib                  	0x000000018cccbfa8 _xpc_objc_main + 336 (main.m:267)
10  libxpc.dylib                  	0x000000018ccce514 _xpc_main + 64 (init.c:1291)
11  libxpc.dylib                  	0x000000018ccce6f4 xpc_main + 64 (init.c:1374)
12  Foundation                    	0x000000019061ad78 -[NSXPCListener resume] + 308 (NSXPCListener.m:471)
13  PlugInKit                     	0x0000000196522718 -[PKService runUsingServiceListener:] + 364 (PKService.m:219)
14  PlugInKit                     	0x00000001965225a4 -[PKService run] + 20 (PKService.m:185)
15  PlugInKit                     	0x0000000196522264 +[PKService main] + 340 (PKService.m:126)
16  PlugInKit                     	0x0000000196522a74 +[PKService _defaultRun:arguments:] + 16 (PKService.m:265)
17  ExtensionFoundation           	0x00000001a1506fec EXExtensionMain + 288 (EXExtensionMain.m:0)
18  Foundation                    	0x000000019056ee08 NSExtensionMain + 200 (NSExtensionMain.m:21)
19  dyld                          	0x000000018cbacaa8 start + 2700 (dyldMain.cpp:1338)

Thread 1:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 2 name:
Thread 2:
0   libsystem_kernel.dylib        	0x000000018cd33f44 kevent_id + 8 (:-1)
1   libdispatch.dylib             	0x000000018cf1bcf0 _dispatch_kq_poll + 228 (event_kevent.c:760)
2   libdispatch.dylib             	0x000000018cf1b27c _dispatch_event_loop_poke + 340 (event_kevent.c:1901)
3   libdispatch.dylib             	0x000000018cf1818c _dispatch_mach_msg_send + 1268 (mach.c:1260)
4   libdispatch.dylib             	0x000000018cf182fc _dispatch_mach_msg_send + 1636 (mach.c:1094)
5   libdispatch.dylib             	0x000000018cf17828 _dispatch_mach_send_drain + 304 (mach.c:1380)
6   libdispatch.dylib             	0x000000018cf13e0c _dispatch_mach_send_msg + 352 (mach.c:1888)
7   libdispatch.dylib             	0x000000018cf1462c dispatch_mach_send_with_result_and_async_reply_4libxpc + 116 (mach.c:2051)
8   libxpc.dylib                  	0x000000018ccbfab8 _xpc_connection_enqueue + 156 (connection.c:969)
9   libxpc.dylib                  	0x000000018ccc0934 xpc_connection_send_message_with_reply + 264 (connection.c:3990)
10  CoreAnalytics                 	0x0000000190bbe79c CoreAnalytics::Client::retryXpcMessageHelper_sync(applesauce::xpc::dict, XPCMessagePriority, bool, unsigned char, unsigned long long) + 336 (CoreAnalyticsClient.cpp:382)
11  CoreAnalytics                 	0x0000000190bbe594 CoreAnalytics::Client::retryXpcMessage_sync(applesauce::xpc::dict const&, XPCMessagePriority, bool) + 116 (CoreAnalyticsClient.cpp:439)
12  CoreAnalytics                 	0x0000000190bbe3a0 invocation function for block in CoreAnalytics::Client::sendXpcMessage_sync(applesauce::xpc::dict, XPCMessagePriority, bool, bool) + 540 (CoreAnalyticsClient.cpp:370)
13  libdispatch.dylib             	0x000000018cf08664 _dispatch_block_async_invoke2 + 148 (queue.c:574)
14  libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
15  libdispatch.dylib             	0x000000018cf008f0 _dispatch_lane_serial_drain + 768 (queue.c:3934)
16  libdispatch.dylib             	0x000000018cf01448 _dispatch_lane_invoke + 380 (queue.c:4025)
17  libdispatch.dylib             	0x000000018cf0c65c _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193)
18  libdispatch.dylib             	0x000000018cf0bea8 _dispatch_workloop_worker_thread + 548 (queue.c:6787)
19  libsystem_pthread.dylib       	0x000000018ccfb3d8 _pthread_wqthread + 288 (pthread.c:2696)
20  libsystem_pthread.dylib       	0x000000018cd027ac start_wqthread + 8 (:-1)

Thread 3:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 4:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 5:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)

Thread 6 Crashed:
0   libswiftCore.dylib            	0x000000018e0a3a88 _assertionFailure(_:_:file:line:flags:) + 264 (AssertCommon.swift:147)
1   TopShelf                      	0x0000000100e5597c specialized static ContextMenuMetadata.__derived_struct_equals(_:_:) (in TopShelf) (/:0)
2   TopShelf                      	0x000000010125a178 one-time initialization function for FT_Proto_Common_V3_Custom_SchemaDescription_Extensions (in TopShelf) (schema_description.pb.swift:116)
3   libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4   libdispatch.dylib             	0x000000018cefaae0 _dispatch_once_callout + 32 (once.c:52)
5   TopShelf                      	0x0000000100e8ff34 FTPlayer.convert(_:) (in TopShelf) (PlaybackDetails.swift:106)
6   TopShelf                      	0x0000000100e907cc initializeBufferWithCopyOfBuffer for PlaybackDetails (in TopShelf) (/:0)
7   TopShelf                      	0x0000000100e68968 assignWithCopy for GuidePage (in TopShelf) (/:0)
8   TopShelf                      	0x0000000100b51a61 initializeWithCopy for MarqueeTextView (in TopShelf) (/:0)
9   TopShelf                      	0x0000000101242511 JSONSafeEncoder.__deallocating_deinit (in TopShelf) (JSONSafeEncoder.swift:34)
10  TopShelf                      	0x0000000100f81ab5 type metadata completion function for FTButtonIcon (in TopShelf) (/:0)
11  TopShelf                      	0x000000010125aacd  (in TopShelf) + 5
12  TopShelf                      	0x0000000100b50b95 closure #1 in MarqueeTextView.plainText(stringWidth:size:) (in TopShelf) (/:0)
13  TopShelf                      	0x0000000100b50e81 MarqueeTextView.scrollableTextView.getter (in TopShelf) (MarqueeTextView.swift:96)
14  TopShelf                      	0x0000000100b510e5 closure #1 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:113)
15  TopShelf                      	0x0000000100b51a61 initializeWithCopy for MarqueeTextView (in TopShelf) (/:
16  TopShelf                      	0x0000000100b514b5 closure #3 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:131)
17  TopShelf                      	0x0000000100b510e5 closure #1 in MarqueeTextView.scrollableText(stringWidth:size:) (in TopShelf) (MarqueeTextView.swift:113)
18  libswift_Concurrency.dylib    	0x000000018e67aedd completeTaskWithClosure(swift::AsyncContext*, swift::SwiftError*) + 1 (Task.cpp:497)

Thread 7 name:
Thread 7:
0   TopShelf                      	0x000000010175e8c0 0x100b4c000 + 12658880
1   TopShelf                      	0x000000010175d710 0x100b4c000 + 12654352
2   libdispatch.dylib             	0x000000018cef7538 _dispatch_call_block_and_release + 32 (init.c:1549)
3   libdispatch.dylib             	0x000000018cef9294 _dispatch_client_callout + 20 (object.m:576)
4   libdispatch.dylib             	0x000000018cf008f0 _dispatch_lane_serial_drain + 768 (queue.c:3934)
5   libdispatch.dylib             	0x000000018cf01448 _dispatch_lane_invoke + 380 (queue.c:4025)
6   libdispatch.dylib             	0x000000018cf0c65c _dispatch_root_queue_drain_deferred_wlh + 288 (queue.c:7193)
7   libdispatch.dylib             	0x000000018cf0bea8 _dispatch_workloop_worker_thread + 548 (queue.c:6787)
8   libsystem_pthread.dylib       	0x000000018ccfb3d8 _pthread_wqthread + 288 (pthread.c:2696)
9   libsystem_pthread.dylib       	0x000000018cd027ac start_wqthread + 8 (:-1)

Thread 8:
0   libsystem_pthread.dylib       	0x000000018cd027a4 start_wqthread + 0 (:-1)


Thread 6 crashed with ARM Thread State (64-bit):
    x0: 0x0000000115f60a48   x1: 0x0000000200000003   x2: 0x0000000115f00000   x3: 0x0000000115f60670
    x4: 0x0000000000000090   x5: 0x0000000115f60670   x6: 0x0000000000000009   x7: 0x0000000000000000
    x8: 0xfffffffe00000000   x9: 0x0000000200000003  x10: 0x0000000000000003  x11: 0x0000000000179f41
   x12: 0x0000000115f03f48  x13: 0x0000000000000008  x14: 0x0000000115f00000  x15: 0x0000000000001e95
   x16: 0xd7960001023c8080  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000101baed80
   x20: 0x0000000115f60a40  x21: 0x0000000000000000  x22: 0x000000000000000b  x23: 0x0000000000000017
   x24: 0x00000000000000f7  x25: 0x0000000101bb3f20  x26: 0xf000000000000061  x27: 0x0000000000000000
   x28: 0x0000000101f03b50   fp: 0x000000016f5f6890   lr: 0x000000018e0a3a88
    sp: 0x000000016f5f67c0   pc: 0x000000018e0a3a88 cpsr: 0x60001000
   esr: 0xf2000001 (Breakpoint) brk 1


Binary Images:
        0x100b4c000 -         0x101d3ffff TopShelf arm64   /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/PlugIns/TopShelf.appex/TopShelf
        0x10232c000 -         0x102337fff libobjc-trampolines.dylib arm64e   /usr/lib/libobjc-trampolines.dylib
        0x102580000 -         0x1025a3fff GCDWebServers arm64  <2ec7179416ff3b5b9e3c3cb6cc9f3bae> /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/GCDWebServers.framework/GCDWebServers
        0x1027d8000 -         0x10299bfff Lottie arm64  <2f787be13dae38888a9f1aba49d6e254> /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/Lottie.framework/Lottie
        0x102fa4000 -         0x10310ffff NpawPlugin arm64   /private/var/containers/Bundle/Application/6D692311-6459-4B8A-9189-1C2F8D1FBB05/Fubo.app/Frameworks/NpawPlugin.framework/NpawPlugin
        0x18cbab000 -         0x18cc247d3 dyld arm64e  <84a680364ccc371eb27a26676a9398fa> /usr/lib/dyld
        0x18ccb0000 -         0x18ccf7fff libxpc.dylib arm64e  <0dcfc20a3c4f31c38909a18e5e84a0a1> /usr/lib/system/libxpc.dylib
        0x18ccf8000 -         0x18cd03ff3 libsystem_pthread.dylib arm64e  <0ec37122096d361c93b5f018757e232a> /usr/lib/system/libsystem_pthread.dylib
        0x18cd2f000 -         0x18cd66feb libsystem_kernel.dylib arm64e  <3dada54a0ba836fcb619ba191086a272> /usr/lib/system/libsystem_kernel.dylib
        0x18cef5000 -         0x18cf3afff libdispatch.dylib arm64e   /usr/lib/system/libdispatch.dylib
        0x18cfb3000 -         0x18d030ffb libsystem_c.dylib arm64e  <954923fc3a553f4a90dcb18d81556300> /usr/lib/system/libsystem_c.dylib
        0x18d62e000 -         0x18db69fff CoreFoundation arm64e  <17d1c69a6b1337bcae3b31ba0202ab1e> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
        0x18e06c000 -         0x18e609fff libswiftCore.dylib arm64e   /usr/lib/swift/libswiftCore.dylib
        0x18e611000 -         0x18e693ff7 libswift_Concurrency.dylib arm64e   /usr/lib/swift/libswift_Concurrency.dylib
        0x18fd11000 -         0x190a19fff Foundation arm64e  <9234c121cdba3214b0e254a0c479b76c> /System/Library/Frameworks/Foundation.framework/Foundation
        0x190ba0000 -         0x190bd0fff CoreAnalytics arm64e   /System/Library/PrivateFrameworks/CoreAnalytics.framework/CoreAnalytics
        0x19650a000 -         0x196543fff PlugInKit arm64e   /System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit
        0x1a14f0000 -         0x1a15aefff ExtensionFoundation arm64e  <34d0444ba22a322380b798d03b6817b7> /System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation

EOF
Written by JamesScott in 832288022
I was able to symbolicate it.

Yay!

Written by JamesScott in 832288022
Does this imply that when a user opens an application through the top shelf, the TopShelf appex is also utilized, even when the user is currently within the main application?

No. Apps and their app extensions aren’t intermingled like this.

I suspect that your have some sort of unexpected code path within your appex that’s causing it to end up running this code.

One way of thinking about this is If the appex can’t run this code, why is the code in the appex at all? Try removing the code from the appex entirely. As you do that, you’ll find all the places where the appex depends on it, and that might offer some insight into how it’s being run.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Interpreting crash log assertionFailure
 
 
Q