2012-03-22 3 views
5

내 인생에서 디버깅 할 수없는 응용 프로그램에 크래시가 있습니다. 장치에 Xcode 및 NSZombieEnabled를 연결하고 디버깅 할 때 충돌이 발생하지 않습니다. 내가 뽑아서 앱을 단독으로 실행하거나 NSZombieEnabled를 실행하면 매번 충돌이 발생합니다.iOS WebTryThreadLock 크래시

다음
bool _WebTryThreadLock(bool), 0x58a260: Multiple locks on web thread not allowed! Please file a bug. Crashing now... 
1 _ZL17_WebTryThreadLockb 
2 _ZL14WebRunLoopLockP19__CFRunLoopObservermPv 
3 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 
4 __CFRunLoopDoObservers 
5 __CFRunLoopRun 
6 CFRunLoopRunSpecific 
7 CFRunLoopRunInMode 
8 _ZL12RunWebThreadPv 
9 _pthread_start 
10 thread_start 

가 시험 비행에서 스택 추적입니다 EXC_BAD_ACCESS : 내가 전에이 충돌이 있었다

0 App 0x001ff492 testflight_backtrace + 142 
1 App 0x001fffac TFSignalHandler + 212 
2 libsystem_c.dylib 0x349e9538 _sigtramp + 48 
3 JavaScriptCore 0x34b66aee WTFReportBacktrace + 146 
4 WebCore 0x33ed5676 _ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 30 
5 CoreFoundation 0x33b39b4a __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18 
6 CoreFoundation 0x33b37d86 __CFRunLoopDoObservers + 258 
7 CoreFoundation 0x33b3804e __CFRunLoopRun + 614 
8 CoreFoundation 0x33abb4dc CFRunLoopRunSpecific + 300 
9 CoreFoundation 0x33abb3a4 CFRunLoopRunInMode + 104 
10 WebCore 0x33f7712e _ZL12RunWebThreadPv + 402 
11 libsystem_c.dylib 0x349a0c1c _pthread_start + 320 
12 libsystem_c.dylib 0x349a0ad7 thread_start + 7 

, 나는이 여기

내가 NSZombieEnabled를 끌 때 무엇을 얻을 충돌이 발생한보기 컨트롤러 중 하나에서 내 viewDidLoad 메서드에 줄을 던져서 해결했습니다.

이 줄은 지금 도움이되지 않습니다.

충돌에 응용 프로그램을 일으키는 프로세스는 다음과 같습니다 현재 주 뷰 컨트롤러, 공유 뷰 컨트롤러 share2로보기 컨트롤러에게 내가 어떤 일을하고 있지 않다

을 제시 스위치 tabViewController에 탭보기, 을 눌러 버튼을 해제 백그라운드 처리 또는 UI 변경시 share2보기 컨트롤러를 표시하는 단추를 누르면 충돌이 발생합니다. 이 사고는 며칠 전에 발생하지 않았으며 문제의 원인을 찾기 위해 모든 변경 사항을 되돌리려 고 노력했지만 운이 없었습니다.

나는 인터넷을이 오류로 샅샅이 뒤졌으며 발견 된 정보 중 아무 것도 나를 도왔다.

올바른 방향으로 나를 가리키는 조언을 주시면 감사하겠습니다.

답변

0

나는이 개 문제 화면 사이의 탐색을 다시 일을하고 난 이후 문제가 없었어요 끝났다.

내 답변 : 항상 사과 탐색을 사용하고 직접 빌드하지 마십시오. P

1

스택 추적은 전혀 도움이되지 않습니다. 단지 다른 runloop에서 예외가 다시 throw 된 것을 보여줍니다. 마지막 예외 백 트레이스를 보여주는 충돌 보고서가 필요합니다.

지식이 없으면 오히려 당연한 추측입니다. 웹 뷰가 여전히 백그라운드에서 실행 중이며 대리인에게 데이터를 보내려고한다고 가정합니다. 공유보기 컨트롤러에서 대리인을 설정 했습니까? viewWillDisappear 또는 viewDidDisappear에 아무 것도 설정하지 않았습니까?

피씨 : 추가 한 NSRunLoop 라인은 못생긴 해킹입니다. 실제로는 아무것도 수정하지 않으므로 그렇게하지 마십시오.

P.P.S : 마지막 예외 역 추적을 제공하고 모든 스레드 대신에 오직 주 스레드의 상태를 보여 PLCrashReporter에 따라 다른 충돌보고 프레임 워크와 서비스가 있습니다.

0

광산은 TestFlight SDK 자체에서 발생했습니다. TestFlight "이륙"을 제거하고 더 이상 충돌을 일으키지 않습니다.