4

iOS 6.1 を使用すると、起動直後にいくつかの HTTP リクエストを作成しようとすると、定期的にアプリがクラッシュしますが、6.1 未満の OS では問題なく動作します。

Queue : から呼び出されEXC_BAD_ACCESSた関数でクラッシュが発生してい ます。初回を除いて、アプリが起動されるたびに。strlencom.apple.CFURLCACHE_work_queue

NSURLCache がクラッシュする

アプリの起動直後に NSURLCache をクリアすることで問題を解決できました。

[[NSURLCache sharedURLCache] removeAllCachedResponses];

他の誰かがこれらのクラッシュを経験していますか? これらのクラッシュの原因となっているアプリケーション コードに問題がある可能性はありますか? それとも、これはアップルに提出されたバグですか?

4

2 に答える 2

1

iOS 6.1 以降、新しくインストールされたアプリケーションで同様のクラッシュが発生しています。違いは、テーブル ビューでテキスト セルをタップするとクラッシュが発生することです。現在、Web リクエストは行われていません。

これはbtです:

thread #4: tid = 0x2903, 0x3ae7ad74 libsystem_c.dylib`strlen + 28, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x3ae7ad74 libsystem_c.dylib`strlen + 28
frame #1: 0x3ac6be24 libsqlite3.dylib`___lldb_unnamed_function282$$libsqlite3.dylib + 1232
frame #2: 0x3ac74a5e libsqlite3.dylib`sqlite3_file_control + 174
frame #3: 0x328493fe CFNetwork`__CFURLCache::RecreateEmptyPersistentStoreOnDiskAndOpen_NoLock() + 30
frame #4: 0x32849000 CFNetwork`__CFURLCache::RecreateEmptyPersistentStoreOnDiskAndOpen() + 44
frame #5: 0x327f9488 CFNetwork`__CFURLCache::OpenDatabase() + 192
frame #6: 0x32846a72 CFNetwork`__CFURLCache::ProcessCacheTasks0(bool) + 358
frame #7: 0x32846900 CFNetwork`__CFURLCache::ProcessCacheTasks(bool) + 36
frame #8: 0x3284681e CFNetwork`__CFURLCache::_CFURLCacheTimerCallback0() + 358
frame #9: 0x328466ac CFNetwork`__CFURLCache::_CFURLCacheTimerCallback(void*) + 32
frame #10: 0x328490fc CFNetwork`__SignalWorkerTaskToPerformWork_block_invoke_0 + 12
frame #11: 0x3ae4611e libdispatch.dylib`_dispatch_call_block_and_release + 10
frame #12: 0x3ae49ece libdispatch.dylib`_dispatch_queue_drain$VARIANT$mp + 142
frame #13: 0x3ae49dc0 libdispatch.dylib`_dispatch_queue_invoke$VARIANT$mp + 40
frame #14: 0x3ae4a91c libdispatch.dylib`_dispatch_root_queue_drain + 184
frame #15: 0x3ae4aac0 libdispatch.dylib`_dispatch_worker_thread2 + 84
frame #16: 0x3ae7aa10 libsystem_c.dylib`_pthread_wqthread + 360
frame #17: 0x3ae7a8a4 libsystem_c.dylib`start_wqthread + 8

これを TSI として Apple に報告し、レビューしたところ、これをバグとして記録するように要求されましたが、まだこれを行う必要があります。

興味深いことに、あなたが見つけた解決策も私を助け、起動時にキャッシュをクリアするとこの問題が解決しました。

于 2013-02-13T11:35:02.293 に答える
1

これは答えの半分にすぎませんが、単体テストの実行中に非常によく似た問題に遭遇しています。奇妙なことに、これは今日だけ起こり始めたようです。

私の問題の詳細は、この Apple dev フォーラムのスレッドに記載されています。

私たちの問題の間の共通のつながりは、 への呼び出しのようRecreateEmptyPersistentStoreOnDiskAndOpen_NoLock()です。CFURLCache に関する私の理解が正しければ、バックトレースに基づいて、キャッシュとして内部的に sqlite3 データベースを使用します。この関数呼び出しにより、ディスク上に空の sqlite3 データベースが作成されると思います。

シミュレーターの Library/Caches ディレクトリ ( ) を削除することで、テストのクラッシュを繰り返し一貫して停止し、~/Library/Application Support/iPhone Simulator/6.1/Library/Cachesそのディレクトリを再作成することでクラッシュを戻すことができました。

シミュレーターのホーム ディレクトリ全体を削除し、シミュレーターでアプリを起動して再作成すると、問題が修正され、再作成されます。

これは OS のバグだと思います。興味深いのは、なぜ私にとって、それが始まったばかりなのかということです。

于 2013-03-27T11:05:25.253 に答える