MakeFunctionNamed kullanmayan uygulamada FMDBBlockSQLiteCallBackFunction Crash


102

Uygulama mağazasında FMDBbulunan ve sqlite veritabanıyla etkileşim için kullanılan bir uygulama üzerinde çalışıyorum . Bunun gibi yığın izlerine sahip bazı kilitlenme raporları aldık:

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

Ancak, FMDBkodun okunmasından FMDBBlockSQLiteCallBackFunctionsadece 's yöntemi SQLitekullanılarak yaratılan ve hiç kullanmadığımız işlevler için geri arama olarak adlandırılıyor .FMDatabasemakeFunctionNamed:maximumArguments:withBlock:

Bunun gibi çökmelere neyin neden olabileceğine dair bir fikriniz var mı?


Bu, bir uygulama güncellemesinden sonra mı yoksa başka bir şey değiştikten sonra mı yoksa birdenbire mi oldu?

Hayır, bu lansmandan beri ara sıra oluyor. Kurum içinde çoğaltamadık ve bu noktada sadece çökme raporlarına sahibiz.
Greg

1
Bu didFinishsembol bir ipucu olabilir. Belki bir çeşit yarış durumunuz vardır. Yani, geliştirici donanımınız bazı kullanıcılarınızın donanımlarından daha hızlı çalışır, bu nedenle sorunun oluştuğunu görmezsiniz. Donanımınızı bir şekilde kapatmanızı ve sorunun sizin için görünüp görünmediğine bakmanızı öneririm. Eğer öyleyse, oradan hata ayıklamak kolay olmalıdır.
donjuedo

Yığın izlemesindeki sembollerin yanlış olabileceğini düşünüyorum. CLS_LOG ile günlüğe kaydettiğim ekmek kırıntıları açısından aynı görünen bir uygulamanın geliştirme yapısında bir kilitlenme ile karşılaştım ve bu, FMDB temsilcisinin dealloc'da sıfır olarak ayarlanmaması durumuydu.
Greg

@Greg Bununla ilgili daha fazla bilgi var mı? Uygulamalarımızdan birinde aynı şeyi görüyoruz. ARC kullanıyor muydunuz?
funkybro

Yanıtlar:


1

didFinishO gibisin markaları bu hatta bir yarış durumu olabilir:

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

Son kullanıcının durumunu yeniden oluşturmak için yavaş donanımı taklit etmeye çalışın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.