Crashes reported in Google Play Console

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.

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

1 Like

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…

1 Like