iOS 11.1 beta 2 Crashes

1 minute read

Today, we noticed a spike in crashes through iTunes Connect that were (almost) exclusively affecting iOS 11.1 users. It started 4 days ago, the same day that beta 2 was released. These crashes were not visible in HockeyApp.

Xcode has a 4-pane window for crashes:

  • The app
  • The crash group
  • The stack trace
  • Some basic statistics & details.

Crashes in Xcode organizer

This particular crash had the bottom 4 lines of the backtrace visible, and they were just the regular run loop. Nothing to go on, and I thought it was really weird that it doesn’t show the first 5 frames.

5   GraphicsServices              	0x0000000188309f84 GSEventRunModal + 100 (GSEvent.c:2245)
6   UIKit                         	0x000000018fa46598 UIApplicationMain + 208 (UIApplication.m:3949)
7   Stripe                        	0x0000000100674450 main + 120 (AppDelegate.swift:15)
8   libdyld.dylib                 	0x0000000185f9656c start + 4

On probably my 6th time looking through this window, I finally noticed the controls at the bottom of the 3rd pane. The first one toggles the full backtrace and all of the threads. One hypothesis was that these crashes were occurring before HockeyApp was able to hook into the exception handling, but that didn’t appear to be the case, because there were a bunch of threads running and one of them was running an NSURLConnection(Loader) run loop.

The next epiphany was that you can right-click a crash group in the 2nd pane to Show in Finder. That leads to a directory full of xccrashpoint packages. Digging into the appropriate package finally reveals the symbolicated crash logs:

xccrashpoint package contents

The Termination Description from the crash logs was the final clue I needed.

Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace SPRINGBOARD, Code 0xdeadfa11
Termination Description: SPRINGBOARD, killed from app switcher |  | ProcessVisibility: Background | ProcessState: Suspended

I was able to reproduce by killing the app running on 11.1b2, and then digging through the 1000+ entries in Settings -> Privacy -> Analytics -> Analytics Data until I found the corresponding crash log.

In conclusion: 11.1 beta 2 (15B5078e) is sending crashes through iTunes Connect when users kill the app from the app switcher. Also, Xcode was not very intuitive or helpful while tracking down this issue.

rdar://34987235

PS: According to *.xccrashpoint/DistributionInfos/all/info.json, iTunes Connect is also grouping one 10.3 and one 11.0 crash into this group. Unfortunately, there’s no corresponding crash log in the package, so I don’t know what’s going on there.