Crashes reported in Google Play Console


#1

I recently launched my game G-Switch 3 on Android and noticed that it seems to be getting more crash reports than what I would usually get. Android vitals complains that I’m getting a 2.96% crash rate, when it should be below 1.09%.

One thing I did differently was target SDK 27 (instead of 16), and I’m also using Android NDK r11c (instead of r8b).

I am using OpenFL 3.6.1, with HaxeFlixel 4.2.1, Lime 2.9.1.

My most frequent crash (signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) in libApplicationMain.so) gives the following report:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.vascof.GSwitch3 <<<
backtrace:
  #00  pc 00000000009eab58  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #01  pc 0000000000c8a178  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #02  pc 0000000000d04498  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #03  pc 00000000009aed64  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #04  pc 00000000009ad634  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #05  pc 0000000000d04498  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #06  pc 0000000000c31ddc  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #07  pc 0000000000c30944  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #08  pc 0000000000c2fa58  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #09  pc 0000000000c2f114  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #10  pc 0000000000d04498  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #11  pc 0000000000cbd274  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #12  pc 0000000000ca8be4  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #13  pc 0000000000c9e47c  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #14  pc 0000000000c9b33c  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #15  pc 000000000017fbb8  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #16  pc 00000000001836a0  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #17  pc 000000000017c9e0  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #18  pc 000000000017ca18  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #19  pc 0000000000d04498  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #20  pc 0000000000cc3e20  /data/app/com.vascof.GSwitch3-1/lib/arm/libApplicationMain.so
  #21  pc 000000000007de78  /data/app/com.vascof.GSwitch3-1/lib/arm/liblime-legacy.so
  #22  pc 000000000006c91c  /data/app/com.vascof.GSwitch3-1/lib/arm/liblime-legacy.so
  #23  pc 000000000002ffac  /data/app/com.vascof.GSwitch3-1/lib/arm/liblime-legacy.so (Java_org_haxe_lime_Lime_onRender+160)
  #24  pc 000000000065c80d  /data/app/com.vascof.GSwitch3-1/oat/arm/base.odex

It seems to happen only on Android 6.0 (46.6%), Android 7.0 (30.7%), Android 7.1 (21.6%) and Android 8.0 (1.1%), on a wide variety of devices.

The second most frequent crash (same type as above, signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) in libApplicationMain.so) shows:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.vascof.GSwitch3 <<<
backtrace:
  #00  pc 0000000000903264  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #01  pc 0000000000905170  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #02  pc 000000000017f884  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #03  pc 00000000001836d4  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #04  pc 000000000017c9e0  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #05  pc 000000000017ca18  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #06  pc 0000000000d04498  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #07  pc 0000000000cc3e20  /data/app/com.vascof.GSwitch3-2/lib/arm/libApplicationMain.so
  #08  pc 000000000007de78  /data/app/com.vascof.GSwitch3-2/lib/arm/liblime-legacy.so
  #09  pc 000000000006c91c  /data/app/com.vascof.GSwitch3-2/lib/arm/liblime-legacy.so
  #10  pc 0000000000030a30  /data/app/com.vascof.GSwitch3-2/lib/arm/liblime-legacy.so (Java_org_haxe_lime_Lime_onPoll+136)
  #11  pc 000000000043e62d  /data/app/com.vascof.GSwitch3-2/oat/arm/base.odex

It happens on Android 6.0 (40.4%), Android 7.0 (52.6%), and Android 7.1 (7.0%).

I’ve never seen the game crash myself (testing in 6.0.1 and 7.0), and nobody has complained, so I have no idea what it could be.

The first crash seems related to the lime function onRender(), and the second crash onPoll(), but apart from that I have no idea of how to find the problem. Any ideas? Thanks in advance.


#2

Do you know if a “clean” exit (hitting the back button, for example) triggers something that would be considered a crash?

Perhaps it is also possible it is crashing when returning from a background tab?

I just wonder if perhaps some of these crashes are things that report in the Google Play console, but don’t feel like a crash to the user


#3

Thanks! It indeed seems to “crash” by hitting the back button, and the culprit seems to be the Supersonic mediation network extension I’m using. The following appears on the debug log:

01-04 15:10:47.741: V/NME(14812): Activity action 3
01-04 15:10:47.838: E/ActivityThread(14812): Activity com.vascof.GSwitch3.MainActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
01-04 15:10:47.838: E/ActivityThread(14812): android.app.IntentReceiverLeaked: Activity com.vascof.GSwitch3.MainActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:922)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:723)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1172)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.ContextImpl.registerReceiver(ContextImpl.java:1152)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.ContextImpl.registerReceiver(ContextImpl.java:1146)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:554)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.controller.SupersonicWebView.registerConnectionReceiver(SupersonicWebView.java:3364)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.agent.SupersonicAdsPublisherAgent$1.run(SupersonicAdsPublisherAgent.java:55)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.Activity.runOnUiThread(Activity.java:5558)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.agent.SupersonicAdsPublisherAgent.<init>(SupersonicAdsPublisherAgent.java:52)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.agent.SupersonicAdsPublisherAgent.getInstance(SupersonicAdsPublisherAgent.java:80)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.agent.SupersonicAdsPublisherAgent.getInstance(SupersonicAdsPublisherAgent.java:67)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonicads.sdk.SSAFactory.getPublisherInstance(SSAFactory.java:13)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.supersonic.adapters.supersonicads.SupersonicAdsAdapter$3.run(SupersonicAdsAdapter.java:588)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.os.Handler.handleCallback(Handler.java:739)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.os.Handler.dispatchMessage(Handler.java:95)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.os.Looper.loop(Looper.java:148)
01-04 15:10:47.838: E/ActivityThread(14812): 	at android.app.ActivityThread.main(ActivityThread.java:5517)
01-04 15:10:47.838: E/ActivityThread(14812): 	at java.lang.reflect.Method.invoke(Native Method)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-04 15:10:47.838: E/ActivityThread(14812): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

It seems that the extension needs to call unregisterReceiver() when the activity stops, if I understand correctly. I’ll post here if I can meanwhile figure out how to correct this…