1

CFXPreferencesPropertyListSourceSynchronizerとCFXPreferencesPropertyListSourceが言及されているので、私が知っている私が開始していないスレッドで、このクラッシュが時々発生します。NSUserDefaultsにアクセスする別のスレッドがあります。(NSUserDefaultsはスレッドセーフであると想定されています。)ここで何が問題になっているのか誰もが認識していますか?

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x444e4128
Crashed Thread:  5

Thread 5 name:  Dispatch queue: CFPreferences Background Sync Queue
Thread 5 Crashed:
0   libobjc.A.dylib                 0x34ec4f78 objc_msgSend + 16
1   CoreFoundation                  0x3710de90 CFRetain + 76
2   CoreFoundation                  0x3718aa96 __CFDictionaryStandardRetainValue + 62
3   CoreFoundation                  0x37114fe0 CFBasicHashCreateCopy + 832
4   CoreFoundation                  0x37124f50 CFDictionaryCreateMutableCopy + 388
5   CoreFoundation                  0x3712d340 -[CFXPreferencesPropertyListSourceSynchronizer initWithPropertyListSource:forLockedSynchronize:] + 232
6   CoreFoundation                  0x371b4800 __79-[CFXPreferencesPropertyListSource synchronizeInBackgroundWithCompletionBlock:]_block_invoke_0 + 56
7   libdispatch.dylib               0x302e5c52 _dispatch_call_block_and_release + 6
8   libdispatch.dylib               0x302f0ca4 _dispatch_queue_drain + 268
9   libdispatch.dylib               0x302f0b12 _dispatch_queue_invoke$VARIANT$up + 30
10  libdispatch.dylib               0x302f1784 _dispatch_worker_thread2 + 208
11  libsystem_c.dylib               0x33a34df4 _pthread_wqthread + 288
12  libsystem_c.dylib               0x33a34cc8 start_wqthread + 0
4

2 に答える 2

1

クラッシュするCFRetainので、キーまたは値を過剰にリリースしたか、オブジェクト以外をキーまたは値として使用したと推測されます。

于 2012-06-16T16:45:00.177 に答える
0

私のせいで、プロパティセッターにself.stringオブジェクトを適切に保持できませんでした。

関係するオブジェクトを見つけるのは簡単ではありませんでした。デバッガーとゾンビオブジェクトは、参照されたリリースされたオブジェクトが実際に存在することを伝えるのに役立ちましたが、16進アドレスが参照しているオブジェクトが何であるかをデバッガーで見つけることができませんでした。gdbでもlldbでもありません。「po」は「0x...は有効なオブジェクトを指しているようには見えません」と言った。

結局、16進数でアドレスを出力することにより、これが関係するオブジェクトを見つけました。

NSLog( @"self.text=%@ self.text=(%p)", self.text,self.text);

ログとエラーメッセージにそのアドレスが表示されます。

于 2012-06-19T13:04:08.340 に答える