Springboard crash in BulletinBoard while app posts local notifications

  • iPhone 4, iOS 6.1.3, and
    iPhone 5, OS unknown, can assume 6.1.+ and likely 6.1.3
    iOS 6 SDK, iOS 6 target
    Two users, one instance each, can't reproduce on iPhone 4, iPhone 5, or simulator.

    Okay, here's what we're seeing.

    We have an application that posts local notifications, about a dozen at a time.

    We have a crash that has occurred only once for two users, and never reproduced, certainly not under a debugger. At about the time the notifications are posted (at a -viewDidLoad), and before the view appears, the device resets (at least to the extent of displaying the shiny-apple screen).

    The app does not appear in the device crash logs. Springboard does log a crash at that time; I would guess that if Springboard crashed, there would be a reset of some kind.

    The reasons I suspect notifications are:

    * The timing is right for what the app is doing.
    * We find the following trace for the crashed thread in Springboard:

    Thread 18 name:  Dispatch queue: com.apple.bulletinboard.bbserverqueue
    Thread 18 Crashed:
    0  libsystem_kernel.dylib        0x398e5350 __pthread_kill + 8
    1  libsystem_c.dylib            0x3985c11e pthread_kill + 54
    2  libsystem_c.dylib            0x3989896e abort + 90
    3  libc++abi.dylib              0x38e36d4a abort_message + 70
    4  libc++abi.dylib              0x38e33ff4 default_terminate() + 20
    5  libobjc.A.dylib              0x393e7a74 _objc_terminate() + 144
    6  libc++abi.dylib              0x38e34078 safe_handler_caller(void (*)()) + 76
    7  libc++abi.dylib              0x38e34110 std::terminate() + 16
    8  libc++abi.dylib              0x38e3550e __cxa_throw + 118
    9  libobjc.A.dylib              0x393e79ba objc_exception_throw + 90
    10  CoreFoundation                0x3168c8d4 -[__NSArrayM insertObject:atIndex:] + 764
    11  BulletinBoard                0x3432d30e -[BBServer _feedsForBulletin:destinations:alwaysToLockScreen:] + 426
    12  BulletinBoard                0x3432b630 -[BBServer publishBulletin:destinations:alwaysToLockScreen:] + 80
    13  BulletinBoard                0x3433f8e8 -[BBServer(Publication) publishBulletinRequest:destinations:alwaysToLockScreen:] + 1416
    14  BulletinBoard                0x34333ae4 -[BBServer _publishBulletinRequest:forDataProvider:forDestinations:alwaysToLockScreen:] + 56
    15  BulletinBoard                0x34333aa2 -[BBServer _publishBulletinRequest:forDataProvider:forDestinations:] + 26
    16  BulletinBoard                0x343320e2 __BBDataProviderAddBulletin_block_invoke_0 + 94
    17  libdispatch.dylib            0x397ff11c _dispatch_call_block_and_release + 8

    So -[BBServer _feedsForBulletin:destinations:alwaysToLockScreen:] tried to insert an object in a mutable array. Either the object or the index were invalid. NSMutableArray threw an exception, nobody caught it, and Springboard aborted.

    There is very little on the web (other than a classdump) about crashes in BBServer, which I gather implements local notifications.

    We've found nothing remarkable in the device that hosted the crash. The user had since uninstalled and reinstalled the app. (Would that delete its crash logs?) The Notification Center settings as we found them (after installation) was in-center, banner, sounds, badges, in lock screen.

    Here's the post (it's in a loop of about a dozen items):

    ====
    self.localNotification = [[UILocalNotification alloc] init];
    [self.localNotification setFireDate:self.dateScheduled];
    [self.localNotification setAlertBody:self.itemTitle];
    [self.localNotification setApplicationIconBadgeNumber:1];
    [self.localNotification setTimeZone:[NSTimeZone systemTimeZone]];
    [[UIApplication sharedApplication] scheduleLocalNotification:[self localNotification]];
    ====

    I don't see anything unusual. Some stackoverflow threads talk about putting non-NSCoding objects into the userInfo dictionary, but we don't touch that all.

    If we're debugging Springboard, we're in trouble. But Apple probably runs Springboard before releasing an iOS revision, so a bug there is extremely unlikely.

    — F
    --
    Fritz Anderson
    Xcode 4 Unleashed: 4.5 supplement for free!
    http://www.informit.com/store/xcode-4-unleashed-9780672333279
previous month may 2013 next month
MTWTFSS
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Go to today