FMDBBlockSQLiteCallBackFunction在不使用makeFunctionNamed的应用程序中崩溃

我正在开发应用程序商店中的应用程序,该应用程序使用FMDB与其sqlite数据库进行交互。 我们收到了一些像这样的堆栈跟踪的崩溃报告:

 Thread : Crashed: NSOperationQueue 0x170239c20 :: NSOperation 0x17024d7d0 (QOS: LEGACY) 0 libobjc.A.dylib 0x000000019701c0b4 objc_retain + 20 1 MyApp 0x00000001002bdff4 FMDBBlockSQLiteCallBackFunction 2 MyApp 0x00000001002bdb1c FMDBBlockSQLiteCallBackFunction 3 MyApp 0x00000001002b66b4 FMDBBlockSQLiteCallBackFunction 4 MyApp 0x00000001002980fc FMDBBlockSQLiteCallBackFunction 5 MyApp 0x000000010029f20c FMDBBlockSQLiteCallBackFunction 6 CFNetwork 0x00000001851475a4 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 300 7 Foundation 0x00000001866bf1c4 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16 8 Foundation 0x0000000186610604 -[NSBlockOperation main] + 96 9 Foundation 0x00000001866001cc -[__NSOperationInternal _start:] + 636 10 Foundation 0x00000001866c1f28 __NSOQSchedule_f + 228 11 libdispatch.dylib 0x0000000197655954 _dispatch_client_callout + 16 12 libdispatch.dylib 0x00000001976600a4 _dispatch_queue_drain + 1448 13 libdispatch.dylib 0x0000000197658a5c _dispatch_queue_invoke + 132 14 libdispatch.dylib 0x0000000197662318 _dispatch_root_queue_drain + 720 15 libdispatch.dylib 0x0000000197663c4c _dispatch_worker_thread3 + 108 16 libsystem_pthread.dylib 0x000000019783522c _pthread_wqthread + 816 

但是,通过阅读FMDB代码,它看起来像FMDBBlockSQLiteCallBackFunction只被称为使用FMDatabasemakeFunctionNamed:maximumArguments:withBlock:方法创build的SQLite函数的callback,我们根本没有使用它。

任何想法可能导致这样的崩溃?

didFinish使您看起来像您可能在这条线上的竞争条件:

 6 CFNetwork 0x00000001851475a4 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 300 

尝试模拟缓慢的硬件来重现最终用户的状态。