The Blasted "dyld_fatal_error:" Issue -Anyone Have a Definitive Answer? - ios

OK, this issue is discussed in this thread, this thread and this thread. However, none of the "answers" seemed to actually address the issue.
This weekend, I submitted my app for beta-test review -twice. It bounced each time. It is now back in review again, and hasn't bounced (fingers crossed).
Each time, was because of an immediate launch crash. Fair enough. I wrote a bad app.
Except I didn't. When I tested in debug, and even release mode on my device and in the simulator, everything worked.
I was finally able to reproduce the issue by archiving and then manually installing the archive through iTunes.
Once I did that, it suddenly started happening when I ran in release mode in the debugger.
Hate it when that happens.
In any case, it was the 'dyld_fatal_error'. In my case, no matter what I did, I couldn't get it to spit out any information at all about what library it was having issues with. The crash reports I got back from Apple were worthless.
What finally solved it for me was basically completely dismantling my app, and putting it back together again. I removed all linked libraries (they are still gone), revoked every one of my certs, and rebuilt the profiles. I de-linked my tests, and re-linked them.
I used to live in Africa. I have a for-real Ju-Ju stick, which I shook at the device for good measure.
Something in there worked (I think, I still have to get a pass from Apple). My money is on the Ju-Ju stick.
The question is: Does anyone know of a DEFINITIVE (not all these WAG responses) reason for this error, and how it can be diagnosed?

Related

Application Failure Without Crash Log

Having perused many other questions concerning unusual app crashes without any success at solving my problem, I have decided to post this question.
I have an app that crashes at random. Some users (in test) never have crashes, others have an occasional crash. This app is installed via XCode on testers phones, straight from the development machine. The app never crashes when in use, only upon startup a day or two after installation and use.
The app is instrumented with Crashlytics, and no crashes are detected, nor are Out Of Memory warnings. No crash logs are left on the phone after this behavior.
Crashlytics works. I injected test crashes and they were properly detected.
Once the app crashes, it will not restart. The splash screens appears for an instant and then the app closes.
The app uses Core Data and I use ObjectiveRecord https://github.com/supermarin/ObjectiveRecord as the Core Data interface. There are no aborts anywhere in the code (at least none that I added/left in)
The app downloads about 1500 images (photographs) at initialization time, and whenever the photos collection is updated. The filenames are stored in Core Data, not the binary data.
As an experiment, I took the container from the same app on another phone and replaced the container on the defective phone. No difference. Replacing the container on the good phone with the container from the bad phone made no difference either.
If I reinstall the app on the target phone, without deleting the original install, all works as expected. This leads me to believe that I am not suffering from database corruption - obviously, I may be wrong, but if advice can be offered as to how to test this, I will happily accept it.
I am at my wits' end here - any advice as to what the problem might be, or how to diagnose the problem will be gratefully received.
EDIT -- The app is for IOS 9, iphone only.
I shall answer my own question. I have been distributing the app to my 4 testers using a MacBook. I only have one license, and rather than downloading it and moving it between my iMac and MacBook, I was just allowing Xcode to generate a new certificate.
This doesn't work. Ever.
It invalidated all of the copies of the app that I installed.
The moral of the story is: beware of licensing issues - even if you have a license.
and the hint was:
Aug 29 15:48:28 iPhone amfid[170] : /private/var/containers/Bundle/Application/25BE181B-C30F-41FF-87A3-88C8E63BB3B3/TEST.app/TEST not valid: 0xe8008018: The identity used to sign the executable is no longer valid.
Live and learn I guess......

App Store version of my app is not working correctly

I released a game a few days ago which I won't name because of this very unusual issue it's having. It's essentially a game where you're falling through a bunch of random obstacles and collect coins along the way to buy stuff later on.
The game worked perfectly fine on my phone when testing it from Xcode, there were absolutely no issues with it when it was completed and I was happy with the product when I submitted it. Today I downloaded my own app from the app store, 3 days after I released it. I noticed this very unusual issue where my character dies randomly in mid-air, he does not collide with anything.
It usually happens when grabbing a coin, but it's not consistent, it can happen to the second coin, third or even tenth coin. I'm also noticing the physics body for some obstacles as well as the character is off sometimes, only sometimes. This causes the character to die much sooner than he would have when getting close to an object.
I cannot figure out the cause of this issue and I'm stressing out because of the time I invested in this. The game works perfectly fine on my phone when running off of Xcode and this unusual behaviour does not occur at all, but the app store version seems to be very buggy. Does anyone know what could be the probable cause of this? I'd also like to mention that I used SpriteBuilder to make this game.
The app store version is identical in every way with the builds you can upload to TestFlight. So you should upload a new build there and see if you can reproduce the issue.
It is possible that you are experiencing a problem where the compiler's optimisation has introduced a rare bug which you were not seeing "on your device" because when you do a Debug build there is no optimisation active.
TestFlight builds are Release builds (from Build&Archive) and thus have compiler optimisations enabled. You can also disable them to verify that the problem does not happen then.
If you are able to show the problem in Release mode and not in Debug mode then you should file a call with Apple Developer Technical Support (DTS) after filing a bug report.

User suddenly can't get past launch image screen

A user has reported that my app suddenly won't launch on their device. They sent me a video, and they launch the app, the launch image screen shows for a split second, but then crashes back to the iOS home screen.
The user tried deleting and reinstalling the app with no benefit.
I use Crashlytics, and am not getting any reports of crashes from them (or any other user- although I've seen them in prior versions so I know it's working correctly). I'm also not seeing any crashes in iTunes connect.
I asked the user to send me any crash reports in the Settings Diagnostics section and they said there are none listed for my app.
I have confirmed that their iOS version is supported by my app. (iOS 8.4).
I'm not sure where to go next, and would appreciate any pointers. Sorry for the vague question but I have posted everything that I know about the situation.
Just wanted to provide some closure on this. The user ended up wiping and restoring their device, and it solved the problem. It seems extreme to me but it was their own suggestion and didn't take them long to do. So I'm not sure what caused this but that's one (albeit brute force) way to fix it.

How to get crash logs of Testflight external testers on Xcode or iTunes connect?

Is there any ways to know what's wrong with someone's app. It is working on everyone else's device but this person.
The person tried removing the previous version and installing the new one, but it still does not work. I suspect that one of the files that I place in the documents folder might still be there... but the format of this file has changed since...
Apple has a technote about this named Debugging Deployed iOS Apps.
Also, if your tester syncs up their iPhone with a Macintosh or PC, iTunes also helpfully moves logs into predictable places where they can be retrieved from.
I am attempting to solve this logging of execution in TestFlight with the following simple approach...
In in-App Billing you really have to use TestFlight, so the problem is serious.
The "print("text") statements can be replaced in the code to calls to a func printTestFlight(text: String) which writes the strings to a database along with some identifier so you know the user.
This is quite simple and obvious, and to an extent it works.
If there are events which are logged by the os rather than teh user, then this approach misses those, notably the interesting ones around a crash. I'd be happy to hear from anyone who knows how to do thiso

Recently released iPhone app update hangs at splash screen

I submitted my app update for review a week or so ago and it worked fine for me when i submitted it (on multiple devices and emulator). Apple reviewed it and approved it and now whenever users download it, the app just hangs at the splash screen forever. On iOS 6 beta it immediately crashes. I believe it must be something wrong with the package that Apple put on the store for download, but i honestly have no idea. Anybody had this happen before or anyone have any ideas on how you can debug a problem like this?
This is maybe the 30th or so time i've submitted something to Apple and this is the first time anything like this has ever happened. I have used a technical support incident to contact apple and no response so far from that. I also used the contact us page on the itunesconnect portal to ask about it and no response from that either. Both of those were done on Friday. As a secondary question, does anyone know how long it takes to hear back from Apple when you submit questions in either of those ways?
I faced the same issue. It was a DNS issue. It drove me mad for months, since I could not reproduce the issue. However one poorly configured WiFi helped me reproduce the issue by chance.
iOS tries to perform DNS lookup at the beginning of the app lifecyle. This is even before a single line of code is executed. If the DNS lookup is performed on the main thread synchronously, it blocks the UI. This issue arises only in cases where its trying to resolve the DNS for about 30s while blocking the UI. Hence the iOS watchdog kills the app due to a timeout. Apple also has a doc for this- https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html
You can search for DNS lookup in your code and check its execution. In my case it was a 3rd party C-library that was causing an issue.
I know its been really long since this question was asked, hope it helps someone.

Resources