I'm starting to get a lot of reports of random crashes on iOS 15.4. Taking a look at the logs it seems to be primarily around native thread creation and joins.
I have been unable to reproduce the issue myself. Wondering if anyone has seen this or if there is anything they can glean from this crash log:
Thanks in advance.
Hardware Model: iPhone9,3
Process: egginc [7122]
Path: /private/var/containers/Bundle/Application/2471E88B-C3CD-45D4-98E0-99D8C4B5A202/egginc.app/egginc
Identifier: com.auxbrain.egginc
Version: 1.22.6 (1.22.6.0)
AppStoreTools: 13E112
AppVariant: 1:iPhone9,3:15
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.auxbrain.egginc [1087]
Date/Time: 2022-03-22 23:27:31.3687 -0400
Launch Time: 2022-03-22 23:26:16.6376 -0400
OS Version: iPhone OS 15.4 (19E241)
Release Type: User
Baseband Version: 6.02.02
Report Version: 104
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: FRONTBOARD 2343432205
<RBSTerminateContext| domain:10 code:0x8BADF00D explanation:[application<com.auxbrain.egginc>:7122] failed to terminate gracefully after 5.0s
ProcessVisibility: Unknown
ProcessState: Running
WatchdogEvent: process-exit
WatchdogVisibility: Background
WatchdogCPUStatistics: (
"Elapsed total CPU time (seconds): 4.250 (user 4.250, system 0.000), 38% CPU",
"Elapsed application CPU time (seconds): 0.064, 1% CPU"
) reportType:CrashLog maxTerminationResistance:Interactive>
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_pthread.dylib 0x00000001dc2ec64c _pthread_create + 944 (pthread.c:1440)
1 libsystem_pthread.dylib 0x00000001dc2ec638 _pthread_create + 924 (inline_internal.h:128)
2 egginc 0x0000000104ec3048 std::__1::__libcpp_thread_create(_opaque_pthread_t**, void* (*)(void*), void*) + 24 (__threading_support:421)
3 egginc 0x0000000104ec3048 std::__1::thread::thread<std::__1::packaged_task<int ()>, void>(std::__1::packaged_task<int ()>&&) + 348 (thread:314)
4 egginc 0x0000000104ebeb20 std::__1::thread::thread<std::__1::packaged_task<int ()>, void>(std::__1::packaged_task<int ()>&&) + 8 (thread:306)
5 egginc 0x0000000104ebeb20 BatchedMesh::kickoffUpdates(GLState&) + 40 (batchedmesh.cpp:969)
6 egginc 0x00000001047978ec ShadowedMesh::getVaos(GLState&) + 92 (shadowedmesh.cpp:501)
7 egginc 0x0000000104ed3ba4 SVRenderNode::drawPreShadowVolume(GLState&) const + 176 (svrendernode.cpp:25)
8 egginc 0x00000001049b0f50 RenderList::draw(GLState&) const + 4948 (renderlist.cpp:238)
9 egginc 0x00000001047898ec GameControllerBase::render(GLState&, float, unsigned int, unsigned int, unsigned int) const + 620 (gamecontrollerbase.cpp:332)
10 egginc 0x000000010478150c -[ZHViewController glkView:drawInRect:] + 360 (ZHViewController.mm:414)
11 GLKit 0x00000001c0791cc0 -[GLKView _display:] + 208 (GLKView.m:590)
12 egginc 0x0000000104781b74 -[ZHViewController drawView:] + 828 (ZHViewController.mm:530)
13 QuartzCore 0x0000000184c5c620 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 760 (CADisplay.mm:4175)
14 QuartzCore 0x0000000184c631d4 display_timer_callback(__CFMachPort*, void*, long, void*) + 368 (CADisplayTimer.cpp:219)
15 CoreFoundation 0x00000001811674dc __CFMachPortPerform + 172 (CFMachPort.c:549)
16 CoreFoundation 0x00000001811a7714 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56 (CFRunLoop.c:1996)
17 CoreFoundation 0x00000001811aad10 __CFRunLoopDoSource1 + 596 (CFRunLoop.c:2136)
18 CoreFoundation 0x0000000181167f40 __CFRunLoopRun + 2392 (CFRunLoop.c:3172)
19 CoreFoundation 0x000000018117ac30 CFRunLoopRunSpecific + 572 (CFRunLoop.c:3268)
20 GraphicsServices 0x00000001a1b95988 GSEventRunModal + 160 (GSEvent.c:2200)
21 UIKitCore 0x0000000183975c50 -[UIApplication _run] + 1080 (UIApplication.m:3511)
22 UIKitCore 0x000000018370f3d0 UIApplicationMain + 336 (UIApplication.m:5064)
23 egginc 0x000000010477f1f8 main + 60 (main.m:16)
24 dyld 0x00000001066043d0 start + 444 (dyldMain.cpp:879)
Thread 1 name:
Thread 1:
0 libsystem_kernel.dylib 0x00000001bb938aac mach_msg_trap + 8
1 libsystem_kernel.dylib 0x00000001bb93907c mach_msg + 72 (mach_msg.c:119)
2 CoreFoundation 0x0000000181163768 __CFRunLoopServiceMachPort + 368 (CFRunLoop.c:2646)
3 CoreFoundation 0x0000000181167a70 __CFRunLoopRun + 1160 (CFRunLoop.c:3000)
4 CoreFoundation 0x000000018117ac30 CFRunLoopRunSpecific + 572 (CFRunLoop.c:3268)
5 Foundation 0x0000000182883eac -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 232 (NSRunLoop.m:373)
6 Foundation 0x00000001828c2e90 -[NSRunLoop(NSRunLoop) runUntilDate:] + 88 (NSRunLoop.m:420)
7 UIKitCore 0x00000001838f50a0 -[UIEventFetcher threadMain] + 512 (UIEventFetcher.m:1167)
8 Foundation 0x00000001828d0d2c __NSThread__start__ + 792 (NSThread.m:972)
9 libsystem_pthread.dylib 0x00000001dc2e9348 _pthread_start + 116 (pthread.c:891)
10 libsystem_pthread.dylib 0x00000001dc2e7948 thread_start + 8
[Full Crash Log](https://developer.apple.com/forums/content/attachment/5f6d5df2-9162-4edf-be6f-1ef36bcbf394)
I've been investigating this for a while now, and I believe it has stopped happening, but I do not know why.
Things that are different in the code
I switched from using a std::packaged_task to simply using a std::functionMy packaged_task actually spawned more worker threads - (that is what appears to be the trigger for the above crash log) - it now does not maybe at the cost of some performance... maybeNormally I'd just say I'm bad at multithreaded programming and give up, but the fact that it is ONLY happening on iOS 15.4 makes me wonder if there was some sort of threading policy change.
Update #2: Not it hasn't stopped happening :\