Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unknown and unreproducible crash causes App Store rejection

After submitting our application several times, we continue to receive the following response:

Thank you for submitting My App to the App Store. We've reviewed your application and determined that we cannot post this version of your iPad application to the App Store because My App is crashing on iPad running iPhone OS 3.2 and Mac OS X 10.6.2. My App crashes upon launch. Unfortunately, crash logs have not been generated.

However, resigning the same build with the AdHoc entitlements and loading the build onto the device yields no such crash. After a number of attempts, the application simply does not crash as reported by the reviewer. Furthermore, the reviewer does not provide any useful logging that may have been generated by SpringBoard such as an exit status or event if it had worked properly for any other device. There are no calls to explicitly exit or quit the application in the code line and yet the application terminates on startup.

What might cause an application to terminate in such a manner? Under what conditions is an application tested that might not be found under a development environment? Could it be a result of a signing issue that the submission validation system is simply unable to catch?

Thanks in advance.

like image 910
Daniel Johnson Avatar asked Feb 27 '23 22:02

Daniel Johnson


2 Answers

After fighting with this for weeks, the application has finally been approved. The key: signing corruption. Hence why the application would start (or at least appear to start by showing the splash screen) and then suddenly vanish without a crash log. It failed Springboard's preflight sighing check.

A good tool to keep in mind to check for signing issues. It tells if the application has a valid signing:

codesign -vvvv MyApp.app

When I built the application, I would cp it to a network storage device where our product manager would pull it down and submit it to Apple. If decompressed on the NAS, the code signing was valid. But if you coped the compressed application back off the NAS and validate it, it would fail.

The lesson: make use of the new XCode utility to submit applications.

like image 158
Daniel Johnson Avatar answered Mar 02 '23 00:03

Daniel Johnson


A few suggestions:

  1. Try to use the leaks tool of the static analyzer to see if there are any memory leaks or problems your not seeing.

  2. Does your app use a web service? This happened to me one time because the day Apple was reviewing the app the web service went down. That cause a crash. If thats the case you would want to add something to catch that.

  3. Finally, In the logs Apple sent you did they send you the dsym file? If they did you can run atos from the command line and it will convert the address to symbols. That will show you what thread and symbol it's crashing on.

like image 29
Xcoder Avatar answered Mar 01 '23 23:03

Xcoder