bitstadium/HockeySDK-iOS

Crashes not appearing in dashboard

mobru opened this issue · 10 comments

mobru commented

Hi everybody,

since our last app update (6.2.0-4), crashes do no longer appear in the dashboard. Crashes are appearing in iTunes Connect / the Xcode Organizer > Crashes. Unfotunateley there's quite a few...

The last version (6.1.1-8) the was released is about 90 days old. Everything worked as expected until then - crashes were tracked and appeared in the dashboard. Since then, nothing important has changed - the AppDelegate has some new methods, some classes were added to the project and I use new provisioning profiles. Neither Hockey, nor any other pod / framework was updated between the two versions. The upload to Hockey worked without a hitch (done with fastlane, as with every other version before). I also double checked the API key and the Hockey identifier.

The strange this is that both Users and Sessions are being tracked (and visible in the dashboard) for the new version, just no crashes.

For reference, here's the code to initialise Hockey:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    #if RELEASE
    setupHockey()
    #endif
    
    // ...
    
    return true
}

func setupHockey() {
    BITHockeyManager.shared().configure(withIdentifier: Helper.hockeyAppId)
    BITHockeyManager.shared().start()
}

Also, intentionally causing a crash in either a debug (with the RELEASE pragmas commented out) or release build, and then running the app from Xcode, the BITHockeyManager tells me that there was no crash:

(lldb) po BITHockeyManager.shared().crashManager.didCrashInLastSession
false

I have absolutely no idea what could cause this to happen. The only real difference was the Xcode version used when building and submitting the app:

  • (6.1.1-8) working version with crashes: Build SDK / Platform 15C107 (Xcode 9.2)
  • (6.2.0-4) new version with no crashes: Build SDK / Platform 15F79 (Xcode 9.4.1)

Hey @mobru,
Thx for getting in touch. We are not aware of any issues right now.
Which version of the SDK are you using? Are you, by chance, using another crash reporting solution (not counting TestFlight)?

mobru commented

Hi @TroubleMakerBen,

sorry for not including the version - I completely forgot. It's 5.1.2.
Also no, there's no other crash reporting SDK in the app. At least not that I'm aware of - there's a few tracking frameworks like WebTrekk (4.11.0) and INFOline (not sure about the version). Other than that, the only "big" framework is Google Mobile Ads (7.30.0).
But none of these were added or updated between the last and the current release of our app.

Hey,
I tried to reproduce the issue that you are seeing locally using HockeySDK-iOSDemo and didcrashInLastSession returns YES as expected and crashes show up in HockeyApp.
I also went ahead tried it with a swift app, which does not make any difference.

Without having access to your project, the only explanation I have is that the SDK somehow fails to detect the cause for the crash. Are the crashes happening early in the lifecycle of the app? In this case, the SDK does not have time to detect the crash.
What type of crash are you seeing that is not reported?

mobru commented

Hi again,
the crashes do not happen early on, at least some of them, I'm very sure of.
Here's a screenshot of the current store version from the Xcode organiser:
screen shot 2018-07-19 at 22 33 56

And here's a screenshot from the Hockey dashboard (same app version):
screen shot 2018-07-19 at 22 36 26

As you can see - no crashes tracked.
Crashes from TestFlight builds (uploaded to Hockey but not in the store) aren't tracked either, if that helps (or is that intended?).

Without having access to your project, the only explanation I have is that the SDK somehow fails to detect the cause for the crash.

I know I'm not giving you a lot to work with here, sorry...
Except the source code, is there anything I could send you that would help you?

Could you remove all proprietary logic of your app but keep same project structure so that code could be shared? With maybe just a button to trigger the crash that is not captured.

Did you also try reverting only Hockey SDK version that was used in 6.1.1-8 but keeping your latest code and XCode version?

I just saw the stacktrace and I've got one more question:
I'm seeing crashes in JavaScriptCore. Were the crashes in 6.1.1-8 that showed up similar? So HA used to to be able to report the exact same crashes but now it suddenly stopped? The reason I'm asking is that if it's a new type of crash, it might be one that HA cannot catch.

What would also help is a sample project that causes the same/similar crash and that HockeyApp can't report. (I know, but you asked ;))

mobru commented

@guperrot

Did you also try reverting only Hockey SDK version that was used in 6.1.1-8 but keeping your latest code and XCode version?

You mean resetting the project to the 6.1.1-8 commit? I have not - but that's a good idea. I'll do that. Maybe I can find the commit that screwed things up that way. But as I said, nothing much changed in that period.
Also, like I said above, crashes from TestFlight (i.e. release) builds aren't showing up on Hockey either - this isn't intended behaviour, is it? Because then I couldn't really test it without actually releasing a new version.

@TroubleMakerBen

I'm seeing crashes in JavaScriptCore. Were the crashes in 6.1.1-8 that showed up similar?

That is a weird crash. It first appeared in the last version (6.1.1-8), but only a month after the release. Hockey was able to catch it there.
The actual stacktrace gives me nothing. Could have something to do with the content the app is displaying in a WKWebView (text, images and videos - it's a news / magazine app), or maybe a video ad.
Here's a Hockey crash log from that version if you're interested:

crash.log

Also: afer some looking, I found that the WebTrekk SDK we use for tracking does have a ExceptionTracker.swift class. Unfortunately, I cannot share its code, since it's a paid / licensed SDK. But as I said - neither it nor Hockey were updated since the last version, so it at the very least never was an issue before.
If resetting the project to the 6.1.1-8 commit won't help either, I will remove the SDK for a quick test, though.

(It could be that I can't do it before the 30th though, since I'm on vacation for the next week.)

We unfortunately do not support multiple crash reporting libraries at the time in the same application on Apple platforms.

Are you sure 6.1.1-8 did not have that ExceptionTracker.swift, or maybe another version of it? What was the version of Hockey App SDK in 6.1.1-8?

The actual stacktrace gives me nothing. Could have something to do with the content the app is displaying in a WKWebView (text, images and videos - it's a news / magazine app), or maybe a video ad.
Here's a Hockey crash log from that version if you're interested:

Yes, that's an odd one. One explanation would be that the JS is crashing while WKWebView renders content and brings down the whole app...
It doesn't explain why the crash in the native code isn't caught, though.

So, to re-iterate what @guperrot wrote:

We unfortunately do not support multiple crash reporting libraries at the time in the same application on Apple platforms.
Several crash reporting tools on iOS is simply not possible (for the exception of TestFlight), it results in undefined behavior and only one tool will catch the crash. Assuming that WebTrekk does have a crash reporting component (their website was not helpful), it could be just "luck" that HockeyApp was able to catch the crash earlier. Have you changed the order of initialization in the AppDelegate?

Another explanation that @guperrot came up with is that it's possible to "Block crashes" in the HockeyApp portal. Can you check if you disabled crashes accidentally?

If you're debugging locally, you can set the loglevel to verbose (BITHockeyManager.shared().loglevel = .verbose), and check the logs in console and see if there are any log messages.

Hey! We haven't heard from you, so I'm closing this issue. Feel free to reply to this issue or get in touch through https://support.hockeyapp.net.