Our users are getting crashes on Meta Quest 2 / Quest 3 devices when using GameAnalytics in Unreal engine.
I haven't yet been able to reproduce the issue locally, but we've had 13 users affected and 107 crashes since we released a couple months ago.
I'm pulling these crashes from the Oculus / Meta crashes dashboard, so I'm not 100% sure if these crashes are taking down the game process / game threads.
So three questions:
  • Any idea what's going on with this crash?
  • Does this type of crash take down the game completely when it's running on a Quest / Android device?
  • How should we go about fixing this issue?
Version of Unreal: 4.27.2 (Oculus-VR custom engine version 57)
Version of GameAnalytics plugin: 5.1.14
The stack trace looks like this:
java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.art/javalib/core-oj.jar)
at com.gameanalytics.sdk.utilities.TaskRunner.executeAsync(Unknown Source:2)
at com.gameanalytics.sdk.http.GAHTTPApi.sendSdkErrorEvent(Unknown Source:235)
at com.gameanalytics.sdk.http.GAHTTPApi.sendSdkErrorEvent(Unknown Source:9)
at com.gameanalytics.sdk.http.GAHTTPApi.sendEventsInArray(Unknown Source:303)
at com.gameanalytics.sdk.events.GAEvents.processEvents(Unknown Source:385)
at com.gameanalytics.sdk.events.GAEvents.processEventQueue(Unknown Source:3)
at com.gameanalytics.sdk.events.GAEvents.access$000(Unknown Source:0)
at com.gameanalytics.sdk.events.GAEvents$1.execute(Unknown Source:0)
at com.gameanalytics.sdk.threading.GAThreading$1.run(Unknown Source:8)
at java.util.TimerThread.mainLoop(Timer.java:562)
It looks to me like there's an event request response happening in GAHTPApi::sendEventsInArray() but the json dictionary is null and then it tries to send an sdk error event but sending that sdk error event causes a crash when it tries to use java.lang.invoke.LambdaMetafactory.