1

My app was rejected from the app store due to a crash that produced the crash log below. What is even more strange than the crash is that the steps given to reproduce it don't happen to me or any of 10+ beta testers (on differing iOS devices). Can anyone help explain this more? I know the exception codes are some sort of memory thing, but is that the only reason that could cause this crash log? For instance, I don't even get a line number.

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib               0x33bd52d4 __kill + 8
1   libSystem.B.dylib               0x33bd52c4 kill + 4
2   libSystem.B.dylib               0x33bd52b6 raise + 10
3   libSystem.B.dylib               0x33be9d72 abort + 50
4   libstdc++.6.dylib               0x31bdba20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                 0x3347c594 _objc_terminate + 104
6   libstdc++.6.dylib               0x31bd9df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib               0x31bd9e46 std::terminate() + 10
8   libstdc++.6.dylib               0x31bd9f16 __cxa_throw + 78
9   libobjc.A.dylib                 0x3347b4c4 objc_exception_throw + 64
10  Foundation                      0x33639910 __NSThreadPerformPerform + 648
11  CoreFoundation                  0x33a767d6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
12  CoreFoundation                  0x33a485b0 __CFRunLoopDoSources0 + 376
13  CoreFoundation                  0x33a47e54 __CFRunLoopRun + 224
14  CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific + 224
15  CoreFoundation                  0x33a47b88 CFRunLoopRunInMode + 52
16  GraphicsServices                0x33b0e4a4 GSEventRunModal + 108
17  GraphicsServices                0x33b0e550 GSEventRun + 56
18  UIKit                           0x32099322 -[UIApplication _run] + 406
19  UIKit                           0x32096e8c UIApplicationMain + 664
20  AppName                         0x00002172 main (main.m:14)
21  AppName                         0x0000213c start + 32
joshholat
  • 3,371
  • 9
  • 39
  • 48
  • btw, you can ask them for more information (such as a scenario) they do give you this information because they really want you to put your awesome apps in the app store. they are actually quite helpful if you ask further. – Jake Feb 28 '11 at 23:28
  • Thanks for letting me know that. I've already emailed them back. – joshholat Feb 28 '11 at 23:30
  • @coneybeare's answer is helpful for you http://stackoverflow.com/questions/4788155/iphone-crash-that-only-happens-on-one-phone – Kazuki Sakamoto Feb 28 '11 at 23:38

1 Answers1

0

Your code threw an un-handled exception somewhere or called abort() for some reason. It looks like it's happening in a dispatch to the main thread (so somewhere you are calling something like [obj performSelectorOnMainThread:@selector(something:) withObject:nil] or something similar. My best guess is that the selector you're choosing doesn't exist on the object (either due to memory management issues, like the object was replaced by something else) or due to some dynamic assignment you're doing.

Jason Coco
  • 77,985
  • 20
  • 184
  • 180
  • I'm confused as to why Apple's testing would find something like this when simply using the app doesn't? Is there any way I can test my code the way they would? – joshholat Feb 28 '11 at 23:30
  • @joshholat MiRAGe already suggested talking with them for more information on what caused the crash. They do a lot of network testing too, so launching the app with no network, switching from wifi to 3g back to wifi, having very slow/unreliable networking etc. If your app does any networking, you may want to try those kinds of scenarios out, but asking them what the exact conditions were at the time of the crash is the easiest way to reproduce. Also looking through your source for abort() calls and assertions may show something too. – Jason Coco Feb 28 '11 at 23:34
  • Rather than a direct call to `abort()`, the backtrace shows that `std::terminate()` was called due to an exception - quite probably an unhandled exception. – caf Mar 01 '11 at 00:55
  • It ended up being that I forgot to add -ObjC as a flag in my release configuration which the Three20 library requires. – joshholat Aug 10 '11 at 16:58