SDKBox Play plugin saveGameDataBinary crash

Hi, guys!
In my app I’m using sdkboxplay plugin (v2.3.17.7) to save user’s data to google/iOS cloud. On all of my devices it works perfectly. The problem is that in google play console I see crashes related to com.sdkbox.plugin.SdkboxGPGSavedGames.
The number of impacted users is quite small (12 devices out of 16K), but the number of crashes per device is ~6-7 for now.

There are 2 types of crashes:

  1. NullPointerException

java.lang.NullPointerException:
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:305)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:298)
at com.sdkbox.plugin.SdkboxGPGSavedGames.processSnapshotOpenResult (SdkboxGPGSavedGames.java:250)
at com.sdkbox.plugin.SdkboxGPGSavedGames.access$300 (SdkboxGPGSavedGames.java:23)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:297)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:293)
at com.google.android.gms.internal.zzbcs.handleMessage (Unknown Source)
at android.os.Handler.dispatchMessage (Handler.java:110)
at android.os.Looper.loop (Looper.java:203)
at android.app.ActivityThread.main (ActivityThread.java:6251)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:924)

  1. IllegalStateException

java.lang.IllegalStateException:
at android.os.Parcel.readException (Parcel.java:1480)
at android.os.Parcel.readException (Parcel.java:1426)
at com.google.android.gms.internal.zzed.zzb (Unknown Source)
at com.google.android.gms.games.internal.zzk.zza (Unknown Source)
at com.google.android.gms.games.internal.GamesClientImpl.zza (Unknown Source)
at com.google.android.gms.games.internal.api.zzcd.zza (Unknown Source)
at com.google.android.gms.internal.zzbck.zzb (Unknown Source)
at com.google.android.gms.internal.zzbdm.zze (Unknown Source)
at com.google.android.gms.internal.zzbej.zze (Unknown Source)
at com.google.android.gms.internal.zzbeb.zze (Unknown Source)
at com.google.android.gms.games.internal.api.zzcb.open (Unknown Source)
at com.google.android.gms.games.internal.api.zzcb.open (Unknown Source)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8.run (SdkboxGPGSavedGames.java:292)
at java.lang.Thread.run (Thread.java:841)

My code to save data looks like this:

std::string saveName = “someSaveName”;
const char* dataCString = “some user data to save”;
const void* data = static_cast<const void*>(dataCString);
int dataLength = (int)strlen(dataCString) + 1;
sdkbox::PluginSdkboxPlay::saveGameDataBinary(saveName, data, dataLength);

Any help will be appreciated.
Thanks.

thank feedback, we will check our source code.

can you get device info, android version or something from google console?

NullPointerException
Android version:

Android 7.0 179 35.7%
Android 4.4 124 24.8%
Android 5.1 58 11.6%
Android 6.0 50 10.0%
Android 5.0 43 8.6%
Android 7.1 40 8.0%
Android 8.0 7 1.4%

Devices:

A536 (A536) 91 18.2%
A7 (A7) 50 10.0%
K5 Plus (A6020a46) 22 4.4%
Galaxy J5(2016) (j5xnlte) 19 3.8%
Galaxy S7 (herolte) 18 3.6%
BV6000s (BV6000S) 17 3.4%
Redmi Note 4 (mido) 15 3.0%
Honor 6A (HWDLI-Q) 14 2.8%
Xperia E1 (D2005) 13 2.6%
Y5 2017 (HWMYA-L6737) 12 2.4%
BLADE L0510 (P680A20) 12 2.4%
BQS-5065 12 2.4%
Redmi 4X (santoni) 12 2.4%
Galaxy J5(2017) (j5y17lte) 11 2.2%
ZenFone Go (ZB500KL) (ASUS_X00AD_2) 10 2.0%
P8 lite 2017 (HWPRA-H) 10 2.0%
Galaxy Alpha (slte) 9 1.8%
T221 (P731A20) 9 1.8%
ZenPad 8.0 (Z380KL) (P024_1) 8 1.6%
LG Magna (my90ds) 8 1.6%

IllegalStateException
Android version:

Android 4.4 57 69.5%
Android 7.0 7 8.5%
Android 5.1 6 7.3%
Android 5.0 4 4.9%
Android 7.1 4 4.9%
Android 6.0 3 3.7%
Android 8.0 1 1.2%

Devices:

Galaxy J1 (j13g) 56 68.3%
Galaxy Note5 (noblelte) 5 6.1%
Galaxy J5(2016) (j5xnlte) 3 3.7%
Galaxy Core Prime (coreprimeve3g) 3 3.7%
Pro 2 (Beeline_Pro_2) 3 3.7%
Galaxy Grand Prime (grandprimeve3g) 2 2.4%
Mi 5 (gemini) 1 1.2%
Galaxy Tab A 8.0 (gt58lte) 1 1.2%
Redmi Note 3 (kenzo) 1 1.2%
Blade L370 (ZTE_Blade_C370) 1 1.2%
Galaxy S8+ (dream2lte) 1 1.2%
Galaxy A3 (a3lte) 1 1.2%
Redmi 4 Pro (markw) 1 1.2%
Redmi Note 4 (nikel) 1 1.2%
Galaxy A3(2016) (a3xelte) 1 1.2%
Philips S337 (scx35_sp7731gea_hd) 1 1.2%

Sorry, I didn’t make myself clear. Can you tell which devices are having these crashes? I want to make sure it’s related to a particular device or system.

This is the distribution of these 2 crashes per devices. On all of these devices crash is happening

ok, thanks, we will reserach this.

Seems it happens a lot on low end devices. Maybe a google play game service version issue?

I use GoogleApiAvailability stuff to verify that GooglePlayServices are available and up-to-date before making any calls to cloud save/load methods. So I think it is quite safe to exclude game services versioning issue.

Hi, i’m getting similar crashes on Google Play Console:


java.lang.NullPointerException: 
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:320)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:313)
  at com.sdkbox.plugin.SdkboxGPGSavedGames.processSnapshotOpenResult (SdkboxGPGSavedGames.java:260)
  at com.sdkbox.plugin.SdkboxGPGSavedGames.access$300 (SdkboxGPGSavedGames.java:27)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:312)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:308)
  at com.google.android.gms.internal.zzbcs.handleMessage (Unknown Source)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6823)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1563)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1451)

java.lang.IllegalStateException: 
  at com.google.android.gms.internal.zzbea.zze (Unknown Source)
  at com.google.android.gms.internal.zzbej.zze (Unknown Source)
  at com.google.android.gms.internal.zzbeb.zze (Unknown Source)
  at com.google.android.gms.games.internal.api.zzcb.commitAndClose (Unknown Source)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:327)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:313)
  at com.sdkbox.plugin.SdkboxGPGSavedGames.processSnapshotOpenResult (SdkboxGPGSavedGames.java:260)
  at com.sdkbox.plugin.SdkboxGPGSavedGames.access$300 (SdkboxGPGSavedGames.java:27)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:312)
  at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:308)
  at com.google.android.gms.internal.zzbcs.handleMessage (Unknown Source)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6682)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

I’m using latest sdkboxplay plugin on staging branch. The devices affected are:


Galaxy Note8
Redmi Note 4
V30
SHINE LITE
P8 Lite
A806
Redmi 4X
Galaxy S7
ZenFone 3
Galaxy S6
OnePlus5
Aquaris X Pro
Galaxy A5(2017)

About android version, most of the crashes are on Android 7.0 and Android 7.1 but there are crashes on every other OS (4, 5, 6 and 8).

No news on this? We are global launching in less than a month and this is a block issue for us, Google Play Console is getting full of orange and red warnings on Android Vitals because of this :frowning:

Invoking @htlxyz and @nite as helpers =)

Hope we get a solution soon!
Thanks in advance,
fryderyk

in one or two days, we will release a new version.
and now, you can use staging version to check.
sdkbox update --staging or sdkbox import sdkboxplay --staging

How is it going on ? @MAD_tomat0

I’ve updated plugin to version v2.3.17.9. But the game update is not published yet. I’ll let you guys know as soon as I receive some new info about this crash.

So our game update (with plugin v.2.3.17.9) is published finally. The first crash (the one with NullPointerException) is still there. The second one (IllegalStateException) has changed to:

java.lang.IllegalStateException:
at com.google.android.gms.internal.zzbea.zze (Unknown Source)
at com.google.android.gms.internal.zzbej.zze (Unknown Source)
at com.google.android.gms.internal.zzbeb.zze (Unknown Source)
at com.google.android.gms.games.internal.api.zzcb.commitAndClose (Unknown Source)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:333)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1$1.onResult (SdkboxGPGSavedGames.java:314)
at com.sdkbox.plugin.SdkboxGPGSavedGames.processSnapshotOpenResult (SdkboxGPGSavedGames.java:260)
at com.sdkbox.plugin.SdkboxGPGSavedGames.access$300 (SdkboxGPGSavedGames.java:27)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:313)
at com.sdkbox.plugin.SdkboxGPGSavedGames$8$1.onResult (SdkboxGPGSavedGames.java:309)
at com.google.android.gms.internal.zzbcs.handleMessage (Unknown Source)
at android.os.Handler.dispatchMessage (Handler.java:111)
at android.os.Looper.loop (Looper.java:227)
at android.app.ActivityThread.main (ActivityThread.java:6102)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:961)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:822)

As you can see it is the same as the one that @fryderyk88 has posted