-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
Description
Description
JavaScriptAndroid should let consumers know that it can't be used anymore and should let consumers make new sandbox if an earlier sandbox dies.
Stack Trace when sandbox dies
[Error] PlatformException(SandboxDeadException, androidx.javascriptengine.SandboxDeadException: sandbox dead: sandbox dead, Cause: null, Stacktrace: androidx.javascriptengine.SandboxDeadException: sandbox dead: sandbox dead
at androidx.javascriptengine.TerminationInfo.toJavaScriptException(TerminationInfo.java:130)
at androidx.javascriptengine.IsolateUsableState.onDied(IsolateUsableState.java:369)
at androidx.javascriptengine.JavaScriptIsolate.maybeSetIsolateDead(JavaScriptIsolate.java:153)
at androidx.javascriptengine.JavaScriptIsolate.maybeSetSandboxDead(JavaScriptIsolate.java:172)
at androidx.javascriptengine.JavaScriptSandbox.notifyIsolatesAboutDeath(JavaScriptSandbox.java:695)
at androidx.javascriptengine.JavaScriptSandbox.killImmediatelyOnThread(JavaScriptSandbox.java:646)
at androidx.javascriptengine.JavaScriptSandbox$ConnectionSetup.runShutdownTasks(JavaScriptSandbox.java:313)
at androidx.javascriptengine.JavaScriptSandbox$ConnectionSetup.onServiceDisconnected(JavaScriptSandbox.java:294)
05:36 +4 -2: end-to-end providers test start a verification flow, and wait for the proof to be generated for provider ac48fd75-02c0-4fd7-93e2-f2ada1732665
[before_finish] attempt 12
05:37 +4 -2: loading /Users/mushaheedsyed/Projects/reclaimprotocol.org/flutter/reclaim-verifier-app/integration_test/providers_test.dart
at android.app.LoadedApk$ServiceDispatcher.doDeath(LoadedApk.java:2208)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2223)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7924)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
, null)
03:59:30 AM SEVERE reclaim_inapp_sdk.AttestorJsRuntimeClient#816292653.claim-client-2.AttestorJsRuntimeClient.postMessage (7731)
#0 JavaScriptAndroidPlatformApi.runJavaScriptReturningResult (package:javascript_android/src/pigeons/messages.pigeon.dart:131:7)
<asynchronous suspension>
#1 JavaScriptAndroid.runJavaScriptReturningResult (package:javascript_android/javascript_android.dart:77:20)
<asynchronous suspension>
Stack Trace when cannot inform consumer and cannot recover
PlatformException(IllegalStateException, java.lang.IllegalStateException: No active isolate with id 1054292910, Cause: null, Stacktrace: java.lang.IllegalStateException: No active isolate with id 1054292910
at com.magnificsoftware.javascript_android.JavaScriptAndroid.requireJsIsolateById(JavaScriptAndroid.kt:72)
at com.magnificsoftware.javascript_android.JavaScriptAndroid.runJavaScriptReturningResult(JavaScriptAndroid.kt:113)
at com.magnificsoftware.javascript_android.JavaScriptAndroidPlatformApi$Companion.setUp$lambda$9$lambda$8(Messages.kt:125)
at com.magnificsoftware.javascript_android.JavaScriptAndroidPlatformApi$Companion.$r8$lambda$VcCh4fXa5x77AyrU7MmgGUxFMK4(Unknown Source:0)
at com.magnificsoftware.javascript_android.JavaScriptAndroidPlatformApi$Companion$$ExternalSyntheticLambda9.onMessage(D8$$SyntheticClass:0)
at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler.onMessage(BasicMessageChannel.java:261)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7924)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
, null)
03:59:32 AM SEVERE reclaim_inapp_sdk.AttestorJsRuntimeClient#816292653.claim-client-2.AttestorJsRuntimeClient.postMessage (7868)
#0 JavaScriptAndroidPlatformApi.runJavaScriptReturningResult (package:javascript_android/src/pigeons/messages.pigeon.dart:131:7)
<asynchronous suspension>
#1 JavaScriptAndroid.runJavaScriptReturningResult (package:javascript_android/javascript_android.dart:77:20)
<asynchronous suspension>
Steps To Reproduce
- Try crashing the underlying javascript environment on android
You can try:
Array(1_000_000_000).fill(1)
Expected Behavior
API throws an error on crash and doesn't let further usage for javascript engine instance and creates a new sandbox (allows creation of new javascript instances).
Screenshots
If applicable, add screenshots to help explain your problem.
Additional Context
Add any other context about the problem here.