question

frontierdev avatar image
frontierdev asked

Crash in native JNI Library when behind a "walled garden"

Hi there, We've just noticed a bug which causes our game to crash on startup with the following logcat output / callstack. It happens when you are connected to a public wireless access point behind a "walled garden" - so it keeps redirecting you to sign in. The Java side of the GameCircle library seems to realise that this isn't going to work, but the C side presents us with NO_ERROR and then promptly crashes in your JNI code trying to release a null Java string. Could it either not return success or return a NULL pointer for the two strings, and correctly skip the release in your native code? E/GC_NetworkCallFactory( 5617): Connection exception encountered while executing request: com.amazon.ags.html5.comm.ConnectionException: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate E/GC_NetworkCallFactory( 5617): com.amazon.ags.html5.comm.ConnectionException: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.comm.HttpNetworkClient.execute(HttpNetworkClient.java:102) E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.comm.NetworkCallFactory.handleServiceRequest(NetworkCallFactory.java:148) E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.comm.NetworkCallFactory.handleMessage(NetworkCallFactory.java:114) E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.javascript.CallHandlerBase.handleMessage(CallHandlerBase.java:61) E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.javascript.domain.JavascriptInterface$8.run(JavascriptInterface.java:235) E/GC_NetworkCallFactory( 5617): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) E/GC_NetworkCallFactory( 5617): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) E/GC_NetworkCallFactory( 5617): at java.lang.Thread.run(Thread.java:856) E/GC_NetworkCallFactory( 5617): Caused by: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate E/GC_NetworkCallFactory( 5617): at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:146) E/GC_NetworkCallFactory( 5617): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93) E/GC_NetworkCallFactory( 5617): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) E/GC_NetworkCallFactory( 5617): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) E/GC_NetworkCallFactory( 5617): at com.amazon.ags.html5.comm.HttpNetworkClient.execute(HttpNetworkClient.java:98) E/GC_NetworkCallFactory( 5617): ... 7 more D/RequestLocalPlayerProfileJniResponseHandler( 5617): jniRequestPlayerProfile response - onSuccess D/AGSProfileJni( 5617): getLocalPlayerProfileResponseSuccess called E/PlayerProfileResponseBuilder( 5617): getPlayerInfoStruct - Could not retrieve alias W/PlayerProfileResponseBuilder( 5617): getPlayerInfoStruct - Could not retrieve playerId W/Frontier( 5617): [4.185s][GameCircleSocialInterface] GameCircle player profile retrieved with playerID '(null)' and alias '(null)'. W/dalvikvm( 5617): JNI WARNING: jstring arg has wrong type (expected Ljava/lang/String;, got ) W/dalvikvm( 5617): in Lcom/amazon/ags/jni/profiles/ProfilesJni;.getLocalPlayerProfileResponseSuccess:(Lcom/amazon/ags/api/profiles/RequestPlayerProfileResponse;JI)V (ReleaseStringUTFChars ) I/dalvikvm( 5617): "main" prio=5 tid=1 RUNNABLE I/dalvikvm( 5617): | group="main" sCount=0 dsCount=0 obj=0x40c33b38 self=0x40c231b0 I/dalvikvm( 5617): | sysTid=5617 nice=0 sched=0/0 cgrp=apps handle=1074826460 I/dalvikvm( 5617): | state=R schedstat=( 0 0 0 ) utm=26 stm=8 core=2 I/dalvikvm( 5617): at com.amazon.ags.jni.profiles.ProfilesJni.getLocalPlayerProfileResponseSuccess(Native Method) I/dalvikvm( 5617): at com.amazon.ags.jni.profiles.RequestLocalPlayerProfileJniResponseHandler.onComplete(RequestLocalPlayerProfileJniResponseHandler.java:36) I/dalvikvm( 5617): at com.amazon.ags.jni.profiles.RequestLocalPlayerProfileJniResponseHandler.onComplete(RequestLocalPlayerProfileJniResponseHandler.java:14) I/dalvikvm( 5617): at com.amazon.ags.client.AGResponseHandleImpl.callCallback(AGResponseHandleImpl.java:72) I/dalvikvm( 5617): at com.amazon.ags.client.AGResponseHandleImpl.setResponse(AGResponseHandleImpl.java:57) I/dalvikvm( 5617): at com.amazon.ags.client.ClientBase$AsyncTaskWrapper.setResponse(ClientBase.java:149) I/dalvikvm( 5617): at com.amazon.ags.html5.service.AsynchronousReplyMessenger$2.run(AsynchronousReplyMessenger.java:114) I/dalvikvm( 5617): at android.os.Handler.handleCallback(Handler.java:747) I/dalvikvm( 5617): at android.os.Handler.dispatchMessage(Handler.java:92) I/dalvikvm( 5617): at android.os.Looper.loop(Looper.java:151) I/dalvikvm( 5617): at android.app.ActivityThread.main(ActivityThread.java:5185) I/dalvikvm( 5617): at java.lang.reflect.Method.invokeNative(Native Method) I/dalvikvm( 5617): at java.lang.reflect.Method.invoke(Method.java:511) I/dalvikvm( 5617): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) I/dalvikvm( 5617): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) I/dalvikvm( 5617): at dalvik.system.NativeStart.main(Native Method) Cheers Andy
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Sujoy@Amazon avatar image
Sujoy@Amazon answered
Hi Frontierdev, Thank you for bring the issue in to our notice. Our internal team has identified the issue and it would fixed. Soon the fix would be available in the SDK.
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.