okta-oidc-android
okta-oidc-android copied to clipboard
Has the following crash been addressed in version 1.3.2
Describe the bug?
Here is the stack trace from the crash:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1610)
at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1650)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306)
at com.okta.oidc.OktaResultFragment.addLogoutFragment(OktaResultFragment.java:65)
at com.okta.oidc.clients.web.SyncWebAuthClientImpl.lambda$startSignOut$4(SyncWebAuthClientImpl.java:336)
at com.okta.oidc.clients.web.SyncWebAuthClientImpl.$r8$lambda$9xGAYUir3zQW6WeNxzc89L77keM(SyncWebAuthClientImpl.java)
at com.okta.oidc.clients.web.SyncWebAuthClientImpl$$InternalSyntheticLambda$1$4f21a8c7c9ad1cac09d3351f8ce878563a9e121d919d104677a8d21e37f4789b$0.run$bridge(SyncWebAuthClientImpl.java:30)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8663)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Thread 2:
0 dalvik.system.VMStack.getThreadStackTrace(VMStack.java:-2)
1 java.lang.Thread.getStackTrace(Thread.java:1841)
2 java.lang.Thread.getAllStackTraces(Thread.java:1909)
3 com.microsoft.appcenter.crashes.Crashes.y
4 t8.d.uncaughtException
5 java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
6 java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
7 java.lang.Thread.dispatchUncaughtException(Thread.java:2306)
Thread 31:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Object.wait(Object.java:442)
2 java.lang.Object.wait(Object.java:568)
3 java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:232)
4 java.lang.Daemons$Daemon.run(Daemons.java:140)
5 java.lang.Thread.run(Thread.java:1012)
Thread 32:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Object.wait(Object.java:442)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:203)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:224)
4 java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:300)
5 java.lang.Daemons$Daemon.run(Daemons.java:140)
6 java.lang.Thread.run(Thread.java:1012)
Thread 33:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Object.wait(Object.java:442)
2 java.lang.Object.wait(Object.java:568)
3 java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:385)
4 java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:365)
5 java.lang.Daemons$Daemon.run(Daemons.java:140)
6 java.lang.Thread.run(Thread.java:1012)
Thread 39:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Object.wait(Object.java:442)
2 java.lang.Object.wait(Object.java:568)
3 java.util.TimerThread.mainLoop(Timer.java:534)
4 java.util.TimerThread.run(Timer.java:513)
Thread 41:
0 jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
1 java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
2 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
3 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
4 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
5 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
6 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
7 java.lang.Thread.run(Thread.java:1012)
Thread 42:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:335)
2 android.os.Looper.loopOnce(Looper.java:186)
3 android.os.Looper.loop(Looper.java:313)
4 android.os.HandlerThread.run(HandlerThread.java:67)
Thread 43:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:335)
2 android.os.Looper.loopOnce(Looper.java:186)
3 android.os.Looper.loop(Looper.java:313)
4 android.os.HandlerThread.run(HandlerThread.java:67)
Thread 44:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:335)
2 android.os.Looper.loopOnce(Looper.java:186)
3 android.os.Looper.loop(Looper.java:313)
4 android.os.HandlerThread.run(HandlerThread.java:67)
Thread 46:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:335)
2 android.os.Looper.loopOnce(Looper.java:186)
3 android.os.Looper.loop(Looper.java:313)
4 android.os.HandlerThread.run(HandlerThread.java:67)
Thread 48:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:335)
2 android.os.Looper.loopOnce(Looper.java:186)
3 android.os.Looper.loop(Looper.java:313)
4 android.os.HandlerThread.run(HandlerThread.java:67)
Thread 49:
0 jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
1 java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
2 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
3 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
4 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
5 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
6 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
7 java.lang.Thread.run(Thread.java:1012)
Thread 52:
0 java.net.SocketInputStream.socketRead0(SocketInputStream.java:-2)
1 java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
2 java.net.SocketInputStream.read(SocketInputStream.java:173)
3 java.net.SocketInputStream.read(SocketInputStream.java:143)
4 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:945)
5 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:909)
6 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:824)
7 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:797)
8 com.android.okhttp.okio.Okio$2.read(Okio.java:138)
9 com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:213)
10 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:307)
11 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:301)
12 com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:197)
13 com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
14 com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
15 com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
16 com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
17 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
18 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
19 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
20 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
21 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:30)
22 y8.c.a
23 y8.c.doInBackground
24 android.os.AsyncTask$3.call(AsyncTask.java:394)
25 java.util.concurrent.FutureTask.run(FutureTask.java:264)
26 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
27 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
28 java.lang.Thread.run(Thread.java:1012)
Thread 53:
0 java.lang.Object.wait(Object.java:-2)
1 com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:106)
2 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
3 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
4 java.lang.Thread.run(Thread.java:1012)
Thread 54:
0 java.net.SocketInputStream.socketRead0(SocketInputStream.java:-2)
1 java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
2 java.net.SocketInputStream.read(SocketInputStream.java:173)
3 java.net.SocketInputStream.read(SocketInputStream.java:143)
4 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:945)
5 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:909)
6 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:824)
7 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:797)
8 com.android.okhttp.okio.Okio$2.read(Okio.java:138)
9 com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:213)
10 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:307)
11 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:301)
12 com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:197)
13 com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
14 com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
15 com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
16 com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
17 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
18 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
19 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
20 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
21 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:30)
22 y8.c.a
23 y8.c.doInBackground
24 android.os.AsyncTask$3.call(AsyncTask.java:394)
25 java.util.concurrent.FutureTask.run(FutureTask.java:264)
26 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
27 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
28 java.lang.Thread.run(Thread.java:1012)
Thread 55:
0 java.net.SocketInputStream.socketRead0(SocketInputStream.java:-2)
1 java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
2 java.net.SocketInputStream.read(SocketInputStream.java:173)
3 java.net.SocketInputStream.read(SocketInputStream.java:143)
4 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:945)
5 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:909)
6 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:824)
7 com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:797)
8 com.android.okhttp.okio.Okio$2.read(Okio.java:138)
9 com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:213)
10 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:307)
11 com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:301)
12 com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:197)
13 com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
14 com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
15 com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
16 com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
17 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
18 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
19 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
20 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
21 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:30)
22 y8.c.a
23 y8.c.doInBackground
24 android.os.AsyncTask$3.call(AsyncTask.java:394)
25 java.util.concurrent.FutureTask.run(FutureTask.java:264)
26 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
27 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
28 java.lang.Thread.run(Thread.java:1012)
Thread 56:
0 java.lang.Object.wait(Object.java:-2)
1 com.android.okhttp.okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:325)
2 com.android.okhttp.okio.AsyncTimeout.access$000(AsyncTimeout.java:42)
3 com.android.okhttp.okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:288)
Thread 57:
0 jdk.internal.misc.Unsafe.park(Unsafe.java:-2)
1 java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
2 java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
3 java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1039)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1345)
5 java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
6 com.okta.oidc.clients.web.SyncWebAuthClientImpl.startSignOut
7 com.okta.oidc.clients.web.SyncWebAuthClientImpl.signOutOfOkta
8 com.okta.oidc.clients.web.WebAuthClientImpl.lambda$signOutOfOkta$8
9 com.okta.oidc.clients.web.WebAuthClientImpl.i
10 com.okta.oidc.clients.web.g.run
11 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463)
12 java.util.concurrent.FutureTask.run(FutureTask.java:264)
13 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
14 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
15 java.lang.Thread.run(Thread.java:1012)
What is expected to happen?
When the WebAuthClient.signOutOfOkta
call is performed, there should not be a crash.
What is the actual behavior?
When the WebAuthClient.signOutOfOkta
call is performed, there is a crash.
Reproduction Steps?
With bioauth enabled, fail fingerprint reading until the finger reader closes. This triggers WebAuthClient.signOutOfOkta
, which then crashes.
Additional Information?
No response
SDK Version
- 1.3.2 for the SDK of Okta.
- Min Android 10
- Max Android 13.
Build Information
No response
There is a background crash happening for some devices....When would be this issue fixed? Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1610) at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1650) at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341) at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306) at com.okta.oidc.OktaResultFragment.addLoginFragment(OktaResultFragment.java:52) at com.okta.oidc.clients.web.SyncWebAuthClientImpl.lambda$startSignIn$2$com-okta-oidc-clients-web-SyncWebAuthClientImpl(SyncWebAuthClientImpl.java:187) at com.okta.oidc.clients.web.SyncWebAuthClientImpl$$ExternalSyntheticLambda4.run(:6) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:233) at android.os.Looper.loop(Looper.java:344) at android.app.ActivityThread.main(ActivityThread.java:8212) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)