2

After looking at stackoverflow and many other forums, decided to ask this question. The closest that came to discussing the exact problem I have is this answer

I have an App in the AppStore thats been built on a fairly stable codebase and has been in use for the past two years. But now, after submitting a recent update to the app, its crashing on iPhone 3G (version 4.2.1). It doesn't crash on the device when I run a debug build

Here are the points I have verified based on other posts:

  1. All build configurations (Debug/Distribution/AppStore), have been set to minimum is version at 3.0, base SDK to latest
  2. Valid Architectures value set to armv6 armv7
  3. I am not getting an "ate badfood" exception (Exception Code: 0x8badf00d)
  4. It works on most newer iOS devices that I could test it on
  5. Build Active Architecture Only is not checked
  6. The app crashes within 5 seconds of launch, so its not the watchdog messing with the launch
  7. Binary was built using XCode 3.2.6
  8. Symbolicated Crashlogs dont have much info in them that I am able to understand

Here's the crash log

Date/Time:       2011-07-01 11:16:06.728 -0400
OS Version:      iPhone OS 4.2.1 (8C148)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0048af00
Crashed Thread:  0

Thread 0 Crashed:
0   ???                             0x0048af00 0 + 4763392

Thread 1:
0   libSystem.B.dylib               0x35d8f974 kevent + 24
1   libSystem.B.dylib               0x35e5e2fc _dispatch_mgr_invoke + 88
2   libSystem.B.dylib               0x35e5dd68 _dispatch_queue_invoke + 96
3   libSystem.B.dylib               0x35e5d788 _dispatch_worker_thread2 + 120
4   libSystem.B.dylib               0x35de6970 _pthread_wqthread + 392
5   libSystem.B.dylib               0x35ddd2fc start_wqthread + 0

Thread 2:
0   libSystem.B.dylib               0x35de454c __semwait_signal + 24
1   libSystem.B.dylib               0x35d90f70 _pthread_cond_wait + 1140
2   libSystem.B.dylib               0x35d90910 pthread_cond_wait + 48
3   Foundation                      0x3517ed5e -[NSCondition wait] + 170
4   Foundation                      0x35169106 -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] + 764
5   Foundation                      0x35168d5e -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] + 98
6   MyCrashingApp                           0x00014ab0 -[URLDownload connectionDidFinishLoading:] (URLDownload.m:79)
7   Foundation                      0x35184232 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 62
8   Foundation                      0x351841b4 _NSURLConnectionDidFinishLoading + 72
9   CFNetwork                       0x302957e0 URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 212
10  CFNetwork                       0x30284b00 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 132
11  CFNetwork                       0x30284d7c URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 768
12  CFNetwork                       0x3028497c URLConnectionClient::processEvents() + 92
13  CFNetwork                       0x30284844 MultiplexerSource::perform() + 184
14  CFNetwork                       0x30284780 MultiplexerSource::_perform(void*) + 4
15  CoreFoundation                  0x375518ca __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8
16  CoreFoundation                  0x37521ec6 __CFRunLoopDoSources0 + 378
17  CoreFoundation                  0x375216f2 __CFRunLoopRun + 258
18  CoreFoundation                  0x37521504 CFRunLoopRunSpecific + 220
19  CoreFoundation                  0x37521412 CFRunLoopRunInMode + 54
20  Foundation                      0x35156238 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 200
21  Foundation                      0x351d52ea -[NSRunLoop(NSRunLoop) runUntilDate:] + 62
22  MyCrashingApp                           0x000148a4 -[URLDownload startDownload:] (URLDownload.m:57)
23  CoreFoundation                  0x375466fc __invoking___ + 60
24  CoreFoundation                  0x375465d6 -[NSInvocation invoke] + 110
25  Foundation                      0x351cd8fe -[NSInvocationOperation main] + 78
26  Foundation                      0x3516054a -[__NSOperationInternal start] + 658
27  Foundation                      0x351602a8 -[NSOperation start] + 16
28  Foundation                      0x35174b8c ____startOperations_block_invoke_2 + 40
29  libSystem.B.dylib               0x35e5d268 _dispatch_call_block_and_release + 12
30  libSystem.B.dylib               0x35e5d788 _dispatch_worker_thread2 + 120
31  libSystem.B.dylib               0x35de6970 _pthread_wqthread + 392
32  libSystem.B.dylib               0x35ddd2fc start_wqthread + 0

Thread 3:
0   libSystem.B.dylib               0x35d5b40c semaphore_wait_signal_trap + 8
1   libSystem.B.dylib               0x35d91448 semaphore_wait_signal + 4
2   libSystem.B.dylib               0x35d5d4ec pthread_mutex_lock + 376
3   WebCore                         0x330777c4 _WebTryThreadLock(bool) + 44
4   WebCore                         0x33077e5c WebRunLoopLock(__CFRunLoopObserver*, unsigned long, void*) + 28
5   CoreFoundation                  0x3752a808 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
6   CoreFoundation                  0x3752a636 __CFRunLoopDoObservers + 494
7   CoreFoundation                  0x375219a2 __CFRunLoopRun + 946
8   CoreFoundation                  0x37521504 CFRunLoopRunSpecific + 220
9   CoreFoundation                  0x37521412 CFRunLoopRunInMode + 54
10  WebCore                         0x3318bd14 RunWebThread(void*) + 524
11  libSystem.B.dylib               0x35de5b44 _pthread_start + 364
12  libSystem.B.dylib               0x35dd77a4 thread_start + 0

Thread 4:
0   libSystem.B.dylib               0x35de72fc __workq_kernreturn + 8
1   libSystem.B.dylib               0x35de6b50 _pthread_wqthread + 872
2   libSystem.B.dylib               0x35ddd2fc start_wqthread + 0

Thread 5:
0   libSystem.B.dylib               0x35d5b3b0 mach_msg_trap + 20
1   libSystem.B.dylib               0x35d5d894 mach_msg + 60
2   CoreFoundation                  0x37521f7c __CFRunLoopServiceMachPort + 88
3   CoreFoundation                  0x37521780 __CFRunLoopRun + 400
4   CoreFoundation                  0x37521504 CFRunLoopRunSpecific + 220
5   CoreFoundation                  0x37521412 CFRunLoopRunInMode + 54
6   Foundation                      0x3517ec4e +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 210
7   Foundation                      0x3515cb8a -[NSThread main] + 42
8   Foundation                      0x35155b90 __NSThread__main__ + 908
9   libSystem.B.dylib               0x35de5b44 _pthread_start + 364
10  libSystem.B.dylib               0x35dd77a4 thread_start + 0

Thread 6:
0   libSystem.B.dylib               0x35d848d8 select$DARWIN_EXTSN + 20
1   CoreFoundation                  0x3755aa34 __CFSocketManager + 356
2   libSystem.B.dylib               0x35de5b44 _pthread_start + 364
3   libSystem.B.dylib               0x35dd77a4 thread_start + 0

Thread 0 crashed with ARM Thread State:
    r0: 0x00000000    r1: 0x00000000      r2: 0x3e73eb48      r3: 0x00000000
    r4: 0x0048aba0    r5: 0x00000000      r6: 0x3e73eaa8      r7: 0x0048aba0
    r8: 0x0048af00    r9: 0x3e25d978     r10: 0x35ce9029     r11: 0x0048af00
    ip: 0x3e6a4c58    sp: 0x2fdfe298      lr: 0x3596ed90      pc: 0x0048af00
  cpsr: 0x40070010

Any answers, even if they just point me in the right direction are appreciated.

Community
  • 1
  • 1
Nitin Alabur
  • 5,812
  • 1
  • 34
  • 52
  • What happens if you run a release build on your device, can you provoke a crash that way? – Roger Jul 01 '11 at 20:45
  • @Roger It crashes the same way, each time. And the only thing I see in the Console, are these messages: : (UIKitApplication:com.companyname.abcdef[0x6edf]) Job appears to have crashed: Bus error Application 'MyCrashingApp' exited abnormally with signal 10: Bus error Crashlog is similar to the one I have posted in the question. (wasnt aware of the 15 min comment edit restriction. sorry for the earlier half baked comment) – Nitin Alabur Jul 01 '11 at 21:30
  • GREAT. Now you have a reproducible problem that you can debug. Put more debugging into the app to see what is going on - it looks like the crash is after a web response. Check the app with NSZombieEnabled and so forth. A reproducible crash is an easily fixable one! – Roger Jul 01 '11 at 21:35
  • Sorry, missed the second half. This is quite likely to be a memory issue where you over release an object. Use NSLog statements to narrow down where the fault happens and then check your objects carefully! – Roger Jul 01 '11 at 21:38
  • Thanks for looking into it Roger! I'll try checking the app with NSZombieEnabled again and also adding a few NSLogs. But, shouldn't over releasing an object should crash the app on any version of iPhone? There is a call made to an inhouse analytics service on launch. Will try checking that closely and update this thread. Thanks again! – Nitin Alabur Jul 01 '11 at 21:49
  • It's probably a timing issue - the 3G is slower for example. – Roger Jul 01 '11 at 21:51
  • The crash seems to be triggered by your URLDownload connectionDidFinishLoading: implementation. Check that one very close. – Till Jul 02 '11 at 00:19

1 Answers1

1

So here's what helped solve this problem. I hope it helps others too.

The AppStore build I created was using Xcode 3.2.6

Apparently there's some problem with XCode's linker as of last year. I stumbled in to this when trying to mess around with -all_load flag errors.

Now, when I create the same build (no code change, no settings changes) using XCode4, the adhoc version doesn't crash.

For now I am updating the appStore version with this build. If anyone reading this answer thinks knows the technical reasoning behind this behavior of XCode, please do post your answer. It'll help save many hours of headBangingAgainstTheWall!

using the following keywords for googling helped:
"-all_load" crashes
RNBRunLoopLaunchInferior (this showed up in the console when the app crashed and printed RNBRunLoopLaunchInferior DNBProcessLaunch() returned error: 'DRHT')

hope this helps!

Nitin Alabur
  • 5,812
  • 1
  • 34
  • 52
  • This is supposed to be a known problem with the LLVM compiler 1.7. Setting the compiler option to LLVM-GCC in the target build settings should help fix the problem. Will update this comment once I am able to test it on device. – Nitin Alabur Jul 10 '11 at 19:18
  • 1
    I explain a little bit about the -all_load linker bug in my answer here: http://stackoverflow.com/questions/7942616/why-is-force-load-no-longer-required-for-my-three20-dependencies-in-xcode-4-2/7942924#7942924 . That bug is now fixed, so you don't need to use the -all_load flag with the LLVM compiler any more. – Brad Larson Nov 02 '11 at 01:38
  • Thanks for that explanation Brad! Helps clarify my question much better! – Nitin Alabur Nov 02 '11 at 03:54