Callum Abele
Callum Abele

Reputation: 71

iOS App crashes on Apple approval process but not for me

I have been trying to update an iOS client app now for the past 2 weeks, unfortunately it has been rejected twice as Apple say that it crashes on iOS7. Apple have sent me the following crash report.

Incident Identifier: C213974C-73E2-42C4-A2AA-E4C2A454319E
CrashReporter Key:   2c5d5176cc4387265bd86c427bf138d2b0acfe38
Hardware Model:      xxx
Process:             Twlight Sports [502]
Path:                /var/mobile/Applications/2B9ED7B5-787E-48ED-AAEC-3DEF87A86C67/Twlight Sports.app/Twlight Sports
Identifier:          com.twilightsports.twilightsports
Version:             1.2 (1.2)
Code Type:           ARM (Native)
Parent Process:      launchd [1]

Date/Time:           2013-09-27 15:22:18.784 -0700
OS Version:          iOS 7.0 (11A465)
Report Version:      104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe
Triggered by Thread:  0

Dyld Error Message:
  Library not loaded: /Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit
  Referenced from: /var/mobile/Applications/2B9ED7B5-787E-48ED-AAEC-3DEF87A86C67/Twlight Sports.app/Twlight Sports
  Reason: image not found
  Dyld Version: 324

Binary Images:
0x2beed000 - 0x2bf0d78a dyld armv7  <b37cba000c7d3f8ea414f060d45ce144> /usr/lib/dyld

I removed all references to SenTestingKit in my project and submitted the app update again. A week later I received the exact same crash report from Apple.

I then created an AdHoc very of the same binary I sent to Apple and deployed this onto my iPhone 4S and iPad 2. Both devices work fine without crashing.

I have appealed the rejection hoping Apple will test the app again, they have however rejectd the appeal simply stating that it is still crashing and not offering any more help. At the moment I am at a loss because I cannot replicate the crash and therefore cannot fix it.

I also have CocoaPods running in my workspace, with the Kiwi TDD pod installed. This has references to But the Pods Build target does not have SenTestingKit.framework in its Link Binary With LibrariesNo SenTestingKit framework

Upvotes: 3

Views: 2116

Answers (4)

Callum Abele
Callum Abele

Reputation: 71

Well.....

To fix the issue I basically had to remove CocoaPods from my workspace, Remove the test target and test scheme, I resubmited the app last Thursday and it has just been accepted today.

It was a pretty desperate attempt at a fix and I think the culprit was the fact that Apple was running the test scheme on my project which I didnt properly setup. After removing the Kiwi Cocoapods looks like it fixed whatever was requesting the SenTestingKit framework

Upvotes: 1

cbowns
cbowns

Reputation: 6365

You can examine your app binary with otool before re-submitting to know whether or not it links SenTestingKit. otool -L will list the linked libraries for a Mach-O binary.

For example, Xcode links:

% otool -L /Applications/Xcode.app/Contents/MacOS/Xcode                                                                             
/Applications/Xcode.app/Contents/MacOS/Xcode:
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0)
    @rpath/DVTFoundation.framework/Versions/A/DVTFoundation (compatibility version 1.0.0, current version 3532.0.0)
    @rpath/DVTKit.framework/Versions/A/DVTKit (compatibility version 1.0.0, current version 3546.0.0)
    @rpath/IDEFoundation.framework/Versions/A/IDEFoundation (compatibility version 1.0.0, current version 3569.0.0)
    @rpath/IDEKit.framework/Versions/A/IDEKit (compatibility version 1.0.0, current version 3591.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1052.0.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1247.0.0)

You can run this on your app store binary by creating an App Store build, copying the .ipa to a folder somewhere. Rename the .ipa to .zip. Open the .zip file, then run otool -L on the binary inside the app, probably something like this: (this is iBooks)

% cd iBooks\ 3.1.3/Payload/iBooks.app                                                                                                     
% otool -L iBooks                                                                                                                         
iBooks:
    /usr/lib/liblockdown.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/PrivateFrameworks/Celestial.framework/Celestial (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 992.0.0)
    /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 2372.0.0)
    /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)
    /System/Library/PrivateFrameworks/iTunesStoreUI.framework/iTunesStoreUI (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/PrivateFrameworks/iTunesStore.framework/iTunesStore (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/PrivateFrameworks/StoreServices.framework/StoreServices (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.8.0)
    /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices (compatibility version 1.0.0, current version 14.0.0)
    /System/Library/PrivateFrameworks/AppSupport.framework/AppSupport (compatibility version 1.0.0, current version 29.0.0)
    /System/Library/PrivateFrameworks/WebKit.framework/WebKit (compatibility version 1.0.0, current version 536.26.0)
    /System/Library/Frameworks/CoreData.framework/CoreData (compatibility version 1.0.0, current version 419.0.0)
    /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore (compatibility version 1.0.0, current version 536.26.0)
    /System/Library/Frameworks/CFNetwork.framework/CFNetwork (compatibility version 1.0.0, current version 609.0.0)
    /System/Library/PrivateFrameworks/WebCore.framework/WebCore (compatibility version 1.0.0, current version 536.26.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/PrivateFrameworks/Bom.framework/Bom (compatibility version 2.0.0, current version 189.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /System/Library/Frameworks/CoreText.framework/CoreText (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libAccessibility.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 40.0.0)
    /usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0)
    /System/Library/Frameworks/MessageUI.framework/MessageUI (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AVFoundation.framework/AVFoundation (compatibility version 1.0.0, current version 2.0.0)
    /System/Library/Frameworks/ImageIO.framework/ImageIO (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0, current version 499.0.0)
    /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (compatibility version 1.0.0, current version 359.0.0)
    /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 49.1.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 173.8.0)
    /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 793.0.0)

And look for SenTestingKit in the list for your app's binary.

Upvotes: 2

lawicko
lawicko

Reputation: 7344

The information you posted is very limited, however I'd start with the following steps:

  1. You xxx'ed the hardware model, but the crash may be hardware specific and it may happen only on the hardware you did not test.
  2. Same with the os, you may have tested on 7.0.1 or 7.0.2, but according to the crash report it happens on 7.0 so make sure you test on that.
  3. Do yourself a favour and start using TestFlight for crash reporting, you will not have to rely on people sending you crash reports, instead the crash reports will be sent to you automatically and symbolicated.
  4. When you test your app on your hardware, make sure you test the release configuration. There are many things that can go wrong when the release build is optimised, so testing the release is the only sensible option here.
  5. Did you get any warnings during validation? If yes maybe you should take them seriously?

I assume the app doesn't launch but crashes on launch. It this case I'm not sure if the TestFlight will help you much, instead I think there might be a difference between your Debug and Release configurations that causes the SenTestKit to be used by the later.

Upvotes: 1

Kapil
Kapil

Reputation: 108

I faced similar problem where app was working fine in my device but rejected by apple. It was saying some file in a package was corrupted. When I set the permission for read, write and execute for all users and submitted the app again, it was approved. It might be one of the reason in your case. Please try by setting permission and re-create binary and submit it.

Upvotes: 0

Related Questions