AppStore 构建在 iPhone 3g 和 iPod Touch 上启动时崩溃

问题描述:

在看了stackoverflow和许多其他论坛后,决定问这个问题.最接近讨论我遇到的确切问题的是 这个答案

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

我在 AppStore 中有一个基于相当稳定的代码库构建的应用程序,并且已经使用了两年.但是现在,在向应用程序提交最近的更新后,它在 iPhone 3G(4.2.1 版)上崩溃了.当我运行调试版本时它不会在设备上崩溃

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. 所有构建配置(调试/分发/AppStore),已设置为最低版本为 3.0,基础 SDK 为最新
  2. 有效架构值设置为 armv6 armv7
  3. 我没有收到吃坏食物"的异常(异常代码:0x8badf00d)
  4. 它适用于我可以测试的大多数较新的 iOS 设备
  5. 未选中仅构建活动架构
  6. 应用程序在启动后 5 秒内崩溃,因此不是看门狗干扰启动
  7. 二进制文件是使用 XCode 3.2.6 构建的
  8. 符号崩溃日志中没有太多我能够理解的信息

这是崩溃日志

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.

这里是帮助解决这个问题的方法.我希望它也能帮助其他人.

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

我创建的 AppStore 版本使用的是 Xcode 3.2.6

The AppStore build I created was using Xcode 3.2.6

显然 XCode 的链接器有问题年.我偶然发现了这个试图处理 -all_load 标志错误.

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.

现在,当我使用 XCode4 创建相同的构建(无代码更改,无设置更改)时,临时版本不会崩溃.

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

现在我正在使用此版本更新 appStore 版本.如果阅读此答案的任何人认为知道 XCode 的这种行为背后的技术推理,请发布您的答案.这将有助于节省数小时的 headBangingAgainstTheWall!

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!

使用以下关键字进行谷歌搜索有帮助:
-all_load"崩溃
RNBRunLoopLaunchInferior(当应用程序崩溃并打印RNBRunLoopLaunchInferior DNBProcessLaunch()返回错误:'DRHT'时,这会显示在控制台中)

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')

希望这有帮助!