3

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

Abizern
  • 146,289
  • 39
  • 203
  • 257

4 Answers4

2

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.

cbowns
  • 6,295
  • 5
  • 47
  • 64
1

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.

lawicko
  • 7,246
  • 3
  • 37
  • 49
  • Thanks for the response, I have already tried the AdHoc deployment using Testflight but its still not crashing for me, Im not sure how I can downgrade my 7.0.2 devices back down to 7.0, if this is possible I can try that. The only warnings I got with validation was that I was not supplying the 150x150 icon that is recommended for iOS7, I'll try on an iPad 3 aswell – Callum Abele Oct 09 '13 at 13:35
1

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

  • Good to hear that it was approved, at the same time it's a pity you had to delete the stuff since I'm pretty sure you submitted the DEBUG version of your app. If that was the case it should be enough to change the Archive scheme to use 'Release' instead of 'Debug'. Hopefully this will help you in the future. – lawicko Oct 16 '13 at 11:09
  • I'd recommend adding this info to the end of your post as an update, rather than as an answer. – cbowns Oct 16 '13 at 16:55
0

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.

Kapil
  • 108
  • 1
  • 12