2013-02-21 3 views
1

간략한 설명 : main.m에서 SIGABRT 충돌이 발생했습니다. 우리가 얻을 수있는 유일한 정보는 크 리터 티 시즘 (Crittercism)의 최소한의 충돌 보고서이며 충돌을 재현하는 방법을 알지 못합니다.크리티컬 리포트 main.m에서 충돌 발생

자세한 설명 : 상기 이외에. 우리의 초기 이론은 사용자가 핵심 데이터 프로세스에서 충돌을 겪고 있지만 스택 추적에서 이에 대한 언급이 없다는 것입니다. 사용자가 앱을 다시 실행하려고하면 데이터가 손상되어로드 할 수 없다고 생각했습니다. 우리는 우리 코드를 시작하지 않으므로, 어떻게 정말로 그런 무대에서 우리는 충돌 할 수 있습니다. 특정 라이브러리가 추가되거나 제거되지 않은 상태에서 몇 가지 앱 버전에 대해이 문제가 발생하여 손상된 파일로 인해서는 안됩니다.

질문이 매우 복잡하기 때문에 여기에 명확한 답변이 있으면 확실하지 않습니다. 그러나 누군가 적어도 에 대해 조사하고 분석 할 조언을 구할 수 있다면 - 그럴 것입니다. 스레드의

Crashed Thread 

libsystem_kernel.dylib 0x387fb350 __pthread_kill + 8 + 8  
libsystem_c.dylib 0x35ada973 abort + 95 + 94  
libc++abi.dylib 0x3307cd4f abort_message + 75 + 74 
libc++abi.dylib 0x33079ff9 _ZL17default_terminatev + 25 + 24  
libobjc.A.dylib 0x326c9a77 _ZL15_objc_terminatev + 147 + 146  
libc++abi.dylib 0x3307a07b _ZL19safe_handler_callerPFvvE + 79 + 78 
libc++abi.dylib 0x3307a114 _ZSt9terminatev + 20 + 19  
libc++abi.dylib 0x3307b599 __cxa_current_exception_type + 1 
libobjc.A.dylib 0x326c99d1 objc_exception_rethrow + 13 + 12 
CoreFoundation 0x38328f21 CFRunLoopRunSpecific + 457 + 456 
CoreFoundation 0x38328d49 CFRunLoopRunInMode + 105 + 104  
UIKit 0x39af947d -[UIApplication _run] + 669 + 668 
UIKit 0x39af62f9 UIApplicationMain + 1121 + 1120  
DM 0x0010e41b main (main.m:14) 

나머지

Thread: Unknown Name 
libsystem_kernel.dylib 0x387eb648 kevent64 + 24 + 24  
libdispatch.dylib 0x3a048658 _dispatch_mgr_thread$VARIANT$mp + 36 + 35 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fbd98 __workq_kernreturn + 8 + 8 
libsystem_c.dylib 0x35a75a16 _pthread_wqthread + 366 + 365 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fbd98 __workq_kernreturn + 8 + 8 
libsystem_c.dylib 0x35a75a16 _pthread_wqthread + 366 + 365 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387eaeb4 mach_msg_trap + 20 + 20 
CoreFoundation 0x383b7045 __CFRunLoopServiceMachPort + 129 + 128 
CoreFoundation 0x383b5da3 __CFRunLoopRun + 883 + 882 
CoreFoundation 0x38328ebd CFRunLoopRunSpecific + 357 + 356 
CoreFoundation 0x38328d49 CFRunLoopRunInMode + 105 + 104 
WebCore 0x3a3a9a45 _ZL12RunWebThreadPv + 445 + 444 
libsystem_c.dylib 0x35a80311 _pthread_start + 309 + 308 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387eaeb4 mach_msg_trap + 20 + 20 
CoreFoundation 0x383b7045 __CFRunLoopServiceMachPort + 129 + 128 
CoreFoundation 0x383b5da3 __CFRunLoopRun + 883 + 882 
CoreFoundation 0x38328ebd CFRunLoopRunSpecific + 357 + 356 
CoreFoundation 0x38328d49 CFRunLoopRunInMode + 105 + 104 
Foundation 0x327edbcd +[NSURLConnection(Loader) _resourceLoadLoop:] + 309 + 308 
Foundation 0x3287167d __NSThread__main__ + 973 + 972 
libsystem_c.dylib 0x35a80311 _pthread_start + 309 + 308 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387eaf1c semaphore_timedwait_trap + 8 + 8 
CoreLocation 0x33ff06e9 _Z22CLClientInvokeCallbackP10__CLClient13CLClientEventP11objc_object + 345 + 344 
CoreLocation 0x33ff3d4d ___CLClientCreateConnection_block_invoke_0 + 389 + 388 
CoreLocation 0x3402a073 __setEventHandler_block_invoke_0 + 347 + 346 
libxpc.dylib 0x33f557e9 _xpc_connection_mach_event + 773 + 772 
libdispatch.dylib 0x3a049529 _dispatch_mach_msg_invoke$VARIANT$mp + 125 + 124 
libdispatch.dylib 0x3a045e91 _dispatch_queue_drain$VARIANT$mp + 81 + 80 
libdispatch.dylib 0x3a0497b7 _dispatch_mach_invoke$VARIANT$mp + 163 + 162 
libdispatch.dylib 0x3a045e91 _dispatch_queue_drain$VARIANT$mp + 81 + 80 
libdispatch.dylib 0x3a045dc1 _dispatch_queue_invoke$VARIANT$mp + 41 + 40 
libdispatch.dylib 0x3a045e91 _dispatch_queue_drain$VARIANT$mp + 81 + 80 
libdispatch.dylib 0x3a045dc1 _dispatch_queue_invoke$VARIANT$mp + 41 + 40 
libdispatch.dylib 0x3a04691d _dispatch_root_queue_drain + 185 + 184 
libdispatch.dylib 0x3a046ac1 _dispatch_worker_thread2 + 85 + 84 
libsystem_c.dylib 0x35a75a11 _pthread_wqthread + 361 + 360 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fbd98 __workq_kernreturn + 8 + 8 
libsystem_c.dylib 0x35a75a16 _pthread_wqthread + 366 + 365 


Thread: Unknown Name 
libsystem_kernel.dylib 0x387eaeb4 mach_msg_trap + 20 + 20 
CoreFoundation 0x383b7045 __CFRunLoopServiceMachPort + 129 + 128 
CoreFoundation 0x383b5da3 __CFRunLoopRun + 883 + 882 
CoreFoundation 0x38328ebd CFRunLoopRunSpecific + 357 + 356 
CoreFoundation 0x383879bb CFRunLoopRun + 99 + 98 
DM 0x0024f947 +[ASIHTTPRequest runRequests] + 151 
Foundation 0x3287167d __NSThread__main__ + 973 + 972  
libsystem_c.dylib 0x35a80311 _pthread_start + 309 + 308 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fb594 select$DARWIN_EXTSN + 20 + 20 
libsystem_c.dylib 0x35a80311 _pthread_start + 309 + 308 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fbd98 __workq_kernreturn + 8 + 8 
libsystem_c.dylib 0x35a75a16 _pthread_wqthread + 366 + 365 

Thread: Unknown Name 
libsystem_kernel.dylib 0x387fbd98 __workq_kernreturn + 8 + 8 
libsystem_c.dylib 0x35a75a16 _pthread_wqthread + 366 + 365 

이 시간 내 주셔서 대단히 감사합니다 (자세한 내용은 도움이 될 수 있습니다) - 우리는 그것을 충당 주셔서 감사합니다. 예외 상황으로 인해 발생 Justas

+0

맞춤 예외 처리기를 설치하려고 시도 했습니까? – trojanfoe

+1

@ 트로이안 : Justas에서 사용중인 SDK가 예외를 이미 잡습니다. 제발, 자신의 사용자 정의 예외 처리기를 사용하지 마십시오.이것은 유익한 것보다 더 해를 끼칠 것이며 모든 것이지만 옳은 일을하기는 쉽지 않습니다 (첫눈에 단순 해 보이더라도). 다음은 이유 중 일부를 보여주는 블로그 게시물입니다. http://landonf.bikemonkey.org/code/crashreporting/Reliable_Crash_Reporting_1.1.20130119.html – Kerni

+0

@Kerni 나는 동의하지 않습니다. 난 그것에 문제가 없었어요 내 애플 리케이션을 사용하는 내 자신의 로그 파일에 스택 프레임을 덤프 내 예외 처리기를 사용합니다. – trojanfoe

답변

2

충돌

덕분에, 메인 쓰레드 인 충돌 스레드의 스택 추적에 objc_exception_rethrow를 참조하십시오. 슬프게도 Exception BacktraceException Reason을 사용할 수 없습니다. 그것 없이는 아무것도 할 수 없습니다. 그러면 코드에서 예외가 발생하고 실제 예외가 발생한 위치가 표시됩니다.

예외는 다른 런타임 루프로 런타임에서 다시 발생하여이를 지원하기 위해 충돌보고 프레임 워크가이를 지원해야합니다. Crittercism은 이것을 지원하는 후드 아래에 PLCrashReporter를 사용하고 있습니다. 그러나 아마도 SDK의 이전 버전이 설치되어 있거나 오래된 버전을 사용하고있을 수도 있습니다.

+0

예, 최신 버전의 SDK를 사용하고 있습니다. 그리고 우리는 대부분의 충돌에 대해 적절한보고를합니다. 고맙습니다. – Justas

+0

발생한 오류 보고서에 예외 이유 또는 '마지막 예외 백 추적'이 있습니까? 그렇지 않다면, 나는 그들이 이것을지지한다면 크리티컬 주의자에게 연락 할 것을 제안 할 것이다. 그리고 그렇다면 그것을 설정하고 사용하는 방법. 그러한 충돌 때문에 수정해야 할 정보를 얻을 수있는 다른 방법이 없기 때문입니다. – Kerni

1

@ 카니, 시간 내 주셔서 감사합니다.

우리는 Crittercism에 연락하여 빵 부스러기를 살펴 보라고 조언했습니다. 이렇게하면 앱 (사용자가 특정 작업 + 다른 중요한 시스템 호출을 트리거하는 곳)에서 수많은 사용자 정의 전화를 걸 수 있고 한 번 앱 크래시 크리티컬은 우리에게 99 개의 마지막 빵 부스러기를 저장할 것입니다. 이렇게하면 사용자가이 특정 충돌로 어떻게 여행했는지 알 수 있습니다.

또한 우리는 사용자에게 직접 연락하고 그들과 연락하기 위해 메타 데이터를 사용할 수있는 능력을 발견했습니다. 이것은 또한 우리가 특정 문제에 대한 더 많은 정보를 얻을 수있게합니다. 그리고 가장 중요한 것은 충돌을보다 효율적으로 대응할 수 있다는 것입니다.

본인의 문제는 적절한 답변이 아니지만 최소한 구현 후에는 답변을 얻는 데 필요한 모든 도구가 필요합니다.

감사합니다.

+0

그리고 왜 그 모든 번거 로움없이 세부 사항을 줄 수있는 '마지막 예외 백 추적'을 제공하지 않습니까? – Kerni

+0

문제의 유형이이 특정 문제에서 발생했기 때문입니다. 보통 Last Exception Backtrace는 아무 문제없이 생기지 만 여기 앱은 우리에게 유용하지 않은 방식으로 충돌합니다. 그것은 의미가 있습니까? – Justas

+0

사실,이 말이 이치에 맞지 않습니다. 이것은 예외로 인한 오류입니다. 그리고 예외가있을 때, 'Last Exception Backtrace'와 예외 이유를 나타내는 문자열이 있습니다. 이것이 실종 될 수있는 시나리오를 모르겠습니다. – Kerni