Coredata Migration Crash

In my latest app update I have a few users complaining about crashes and I managed to get my hands on a crash report. Here's the crash reason from the symbolicated crash log.



    Exception Type:  EXC_CRASH (SIGKILL)
    Exception Codes: 0x0000000000000000, 0x0000000000000000
    Exception Note:  EXC_CORPSE_NOTIFY
    Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
    Triggered by Thread:  0


This happens when I call `[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:]`



Here's the complete stacktrace:


    Thread 0 name:  Dispatch queue: SQLQueue 0x12fecca10 for .database.db.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3
    Thread 0 Crashed:
    0   libsystem_kernel.dylib         0x0000000180640164 __fcntl + 8
    1   libsystem_kernel.dylib         0x0000000180625660 fcntl + 84
    2   libsqlite3.dylib               0x0000000181ba3f90 0x181b3d000 + 421776
    3   libsqlite3.dylib               0x0000000181bb9e50 0x181b3d000 + 511568
    4   libsqlite3.dylib               0x0000000181bcdf34 0x181b3d000 + 593716
    5   libsqlite3.dylib               0x0000000181bcdd98 sqlite3_wal_checkpoint_v2 + 492
    6   libsqlite3.dylib               0x0000000181ba41b0 0x181b3d000 + 422320
    7   libsqlite3.dylib               0x0000000181b7b288 sqlite3_step + 976
    8   CoreData                       0x000000018391b194 _execute + 164
    9   CoreData                       0x000000018394ffd8 -[NSSQLiteConnection commitTransaction] + 312
    10  CoreData                       0x0000000183a6ced8 __43-[_NSSQLiteStoreMigrator performMigration:]_block_invoke + 2784
    11  CoreData                       0x0000000183a36cbc __37-[NSSQLiteConnection performAndWait:]_block_invoke + 40
    12  libdispatch.dylib             0x00000001804fe9a0 _dispatch_client_callout + 16
    13  libdispatch.dylib             0x000000018050bee0 _dispatch_barrier_sync_f_invoke + 84
    14  CoreData                       0x0000000183a36c08 -[NSSQLiteConnection performAndWait:] + 144
    15  CoreData                       0x0000000183a6c35c -[_NSSQLiteStoreMigrator performMigration:] + 184
    16  CoreData                       0x0000000183a63db0 -[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 1912
    17  CoreData                       0x00000001839ee814 -[NSMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 556
    18  CoreData                       0x0000000183a5f090 -[NSStoreMigrationPolicy(InternalMethods) migrateStoreAtURL:toURL:storeType:options:withManager:error:] + 324
    19  CoreData                       0x0000000183a5e3ec -[NSStoreMigrationPolicy migrateStoreAtURL:withManager:metadata:options:error:] + 120
    20  CoreData                       0x0000000183a5fb08 -[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] + 2440
    21  CoreData                       0x00000001839fc188 __91-[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:]_block_invoke + 4160
    22  CoreData                       0x0000000183a08630 gutsOfBlockToNSPersistentStoreCoordinatorPerform + 168
    23  libdispatch.dylib             0x00000001804fe9a0 _dispatch_client_callout + 16
    24  libdispatch.dylib             0x000000018050bee0 _dispatch_barrier_sync_f_invoke + 84
    25  CoreData                       0x00000001839f7d70 _perform + 200
    26  CoreData                       0x000000018390d5e4 -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] + 388


I don't have more details on the crash. Only that it happens for a few users and not all. I have no idea how to reproduce it for a proper fix. The user reported that the app started, was "frozen" for some time and then it crashed. And it keeps doing so.


I had a look at the last version of the core-data model since I shipped the app and this file is still the exact same. During development I added 5 more versions in-between but that shouldn't be a problem right? The version shipped in the app before the update is untouched...

The changes I made to the model were simply adding some new properties on existing entities. But if auto-migration would fail, it would fail for everybody, right? Not only for a few users?!?



So I was hoping somebody here already might had the same issue and a solution on how to fix it. Or at least a way on how to detect the problem without the app crashing. Then I could just recreate the DB for those users...


Thanks,

Georg

  • Did you find a solution? In my case, I suspect I get the same crash due to an enormous Sqlite DB.

Add a Comment