Status Update
Comments
vi...@google.com <vi...@google.com>
wi...@google.com <wi...@google.com> #2
Hey hughesno1@, when do you add the onPreDrawListener to delay the rendering of activity? Mind providing us with a sample application?
te...@gmail.com <te...@gmail.com> #3
wi...@google.com <wi...@google.com> #4
wi...@google.com <wi...@google.com> #5
as...@tradingview.com <as...@tradingview.com> #6
al...@leancode.pl <al...@leancode.pl> #8
ki...@gmail.com <ki...@gmail.com> #9
We got a similar stack trace on Firebase Crashlytics recently. It seems to appear mostly on Oppo devices running Android 13. Is this stack trace has the same root cause as #1?
Stacktrace
Fatal Exception: java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased()
at android.view.SurfaceControl$Transaction.checkPreconditions(SurfaceControl.java:2894)
at android.view.SurfaceControl$Transaction.hide(SurfaceControl.java:3077)
at android.app.ActivityThread.syncTransferSplashscreenViewTransaction(ActivityThread.java:4356)
at android.app.ActivityThread.-$$Nest$msyncTransferSplashscreenViewTransaction()
at android.app.ActivityThread$1.onDraw(ActivityThread.java:4333)
at android.view.ViewTreeObserver.dispatchOnDraw(ViewTreeObserver.java:1132)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4781)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4548)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3734)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2442)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9399)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1388)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1396)
at android.view.Choreographer.doCallbacks(Choreographer.java:1033)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:420)
at android.view.Choreographer.doFrame(Choreographer.java:900)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1371)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8380)
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:1013)
ni...@gmail.com <ni...@gmail.com> #10
wi...@google.com <wi...@google.com>
li...@livingwith.health <li...@livingwith.health> #11
or...@gmail.com <or...@gmail.com> #12
gu...@gmail.com <gu...@gmail.com> #13
Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
android.view.SurfaceControl.-$$Nest$mcheckNotReleased
ar...@voipi.com.ar <ar...@voipi.com.ar> #14
[Deleted User] <[Deleted User]> #15
--- End of managed Java.Lang.NullPointerException stack trace ---
java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased(Unknown Source:0)
at android.view.SurfaceControl$Transaction.checkPreconditions(SurfaceControl.java:2941)
at android.view.SurfaceControl$Transaction.hide(SurfaceControl.java:3124)
at android.app.ActivityThread.syncTransferSplashscreenViewTransaction(ActivityThread.java:4364)
at android.app.ActivityThread.-$$Nest$msyncTransferSplashscreenViewTransaction(Unknown Source:0)
at android.app.ActivityThread$1.onDraw(ActivityThread.java:4341)
at android.view.ViewTreeObserver.dispatchOnDraw(ViewTreeObserver.java:1132)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4822)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4589)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3754)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2458)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9478)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1412)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1420)
at android.view.Choreographer.doCallbacks(Choreographer.java:1047)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:451)
at android.view.Choreographer.doFrame(Choreographer.java:918)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1395)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8404)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
Java.Lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
--- End of managed Java.Lang.NullPointerException stack trace ---
java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased(Unknown Source:0)
at android.view.SurfaceControl$Transaction.checkPreconditions(SurfaceControl.java:2941)
at android.view.SurfaceControl$Transaction.hide(SurfaceControl.java:3124)
at android.app.ActivityThread.syncTransferSplashscreenViewTransaction(ActivityThread.java:4364)
at android.app.ActivityThread.-$$Nest$msyncTransferSplashscreenViewTransaction(Unknown Source:0)
at android.app.ActivityThread$1.onDraw(ActivityThread.java:4341)
at android.view.ViewTreeObserver.dispatchOnDraw(ViewTreeObserver.java:1132)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4822)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4589)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3754)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2458)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9478)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1412)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1420)
at android.view.Choreographer.doCallbacks(Choreographer.java:1047)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:451)
at android.view.Choreographer.doFrame(Choreographer.java:918)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1395)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8404)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
--- End of managed Java.Lang.NullPointerException stack trace ---
java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased(Unknown Source:0)
at android.view.SurfaceControl$Transaction.checkPreconditions(SurfaceControl.java:2941)
at android.view.SurfaceControl$Transaction.hide(SurfaceControl.java:3124)
at android.app.ActivityThread.syncTransferSplashscreenViewTransaction(ActivityThread.java:4364)
at android.app.ActivityThread.-$$Nest$msyncTransferSplashscreenViewTransaction(Unknown Source:0)
at android.app.ActivityThread$1.onDraw(ActivityThread.java:4341)
at android.view.ViewTreeObserver.dispatchOnDraw(ViewTreeObserver.java:1132)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4822)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4589)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3754)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2458)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9478)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1412)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1420)
at android.view.Choreographer.doCallbacks(Choreographer.java:1047)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:451)
at android.view.Choreographer.doFrame(Choreographer.java:918)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1395)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8404)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
rg...@google.com <rg...@google.com>
sh...@pinterest.com <sh...@pinterest.com> #16
+1 we're seeing the same callstack as #9 as well, mostly on OPPO (~70%) devices, but also realme (~20%) and OnePlus (~10%). Only on Android 13.
eu...@gmail.com <eu...@gmail.com> #17
[Deleted User] <[Deleted User]> #18
fa...@gmail.com <fa...@gmail.com> #19
ga...@gmail.com <ga...@gmail.com> #20
sc...@ozon.ru <sc...@ozon.ru> #21
ch...@gmail.com <ch...@gmail.com> #22
Exception java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
po...@gmail.com <po...@gmail.com> #23
#1 crash on our app's crashlytics reports (46% !!!)
ge...@gmail.com <ge...@gmail.com> #24
gu...@gmail.com <gu...@gmail.com> #25
sa...@stagnationlab.com <sa...@stagnationlab.com> #26
it...@gmail.com <it...@gmail.com> #27
he...@gmail.com <he...@gmail.com> #28
fl...@backmarket.com <fl...@backmarket.com> #29
If you're using the splash screen APIs & setOnExitAnimationListener
, this will likely crash on some devices using Android 13.
Try to not use this method, this is the only way to get rid of this crash for now.
[Deleted User] <[Deleted User]> #30
wi...@google.com <wi...@google.com> #31
@rebeccasg from above comments, mind forward to OPPO/OnePlus.
sa...@stagnationlab.com <sa...@stagnationlab.com> #32
This is still the top crash for our app, mostly occurs on OnePlus devices running Android 13. It happens rather rarely, less than 0.01% users affected per month.
We were able to reproduce the crash conditions.
OS Version: Android 13
Device: OnePlus OP555BL1 (OnePlus Nord CE 2)
Library Version: androidx.core:core-splashscreen:1.0.1
Steps to reproduce:
- Open the app
- Quickly put the app to background, before splash screen dismisses
- Wait ca 10s
- Open the app again app from app icon
- Observe the crash
StackTrace:
java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased(Unknown Source:0)
at android.view.SurfaceControl$Transaction.checkPreconditions(SurfaceControl.java:2894)
at android.view.SurfaceControl$Transaction.hide(SurfaceControl.java:3077)
at android.app.ActivityThread.syncTransferSplashscreenViewTransaction(ActivityThread.java:4356)
at android.app.ActivityThread.-$$Nest$msyncTransferSplashscreenViewTransaction(Unknown Source:0)
at android.app.ActivityThread$1.onDraw(ActivityThread.java:4333)
at android.view.ViewTreeObserver.dispatchOnDraw(ViewTreeObserver.java:1132)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4781)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4548)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3734)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2442)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9399)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1388)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1396)
at android.view.Choreographer.doCallbacks(Choreographer.java:1033)
at android.view.ChoreographerExtImpl.checkScrollOptSceneEnable(ChoreographerExtImpl.java:420)
at android.view.Choreographer.doFrame(Choreographer.java:900)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1371)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8381)
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:1013)
[Deleted User] <[Deleted User]> #33
sh...@gmail.com <sh...@gmail.com> #34
+1, Likely Related: Trace:
Exception java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.os.Parcel.createExceptionOrNull (Parcel.java:3063)
at android.os.Parcel.createException (Parcel.java:3041)
at android.os.Parcel.readException (Parcel.java:3024)
at android.os.Parcel.readException (Parcel.java:2966)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity (IActivityTaskManager.java:2787)
at android.app.Instrumentation.execStartActivity (Instrumentation.java:1891)
at android.app.Activity.startActivityForResult (Activity.java:5796)
at androidx.activity.ComponentActivity.startActivityForResult (ComponentActivity.kt:704)
at android.app.Activity.startActivityForResult (Activity.java:5749)
at androidx.activity.ComponentActivity.startActivityForResult (ComponentActivity.kt:683)
at android.app.Activity.startActivity (Activity.java:6267)
at android.app.Activity.startActivity (Activity.java:6234)
at com.viewlift.hoichoi.framework.presentation.splash.SplashActivity.navigateToDashboardActivity (SplashActivity.kt:143)
at com.viewlift.hoichoi.framework.presentation.splash.SplashActivity.shouldKeepOnScreen (SplashActivity.kt:99)
at com.viewlift.hoichoi.framework.presentation.splash.SplashActivity.access$shouldKeepOnScreen (SplashActivity.kt:46)
at com.viewlift.hoichoi.framework.presentation.splash.SplashActivity$onCreate$2.shouldKeepOnScreen (SplashActivity.kt:64)
at androidx.core.splashscreen.SplashScreen$Impl31$setKeepOnScreenCondition$1.onPreDraw (SplashScreen.kt:443)
at android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:1176)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:4383)
at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2992)
at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:10469)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1671)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1680)
at android.view.Choreographer.doCallbacks (Choreographer.java:1191)
at android.view.Choreographer.doFrame (Choreographer.java:1063)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1650)
at android.os.Handler.handleCallback (Handler.java:958)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:222)
at android.os.Looper.loop (Looper.java:314)
at android.app.ActivityThread.main (ActivityThread.java:8716)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:565)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1081)
Caused by android.os.RemoteException: Remote stack trace:
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased (Unknown Source)
at android.view.SurfaceControl$Transaction.checkPreconditions (SurfaceControl.java:2945)
at android.view.SurfaceControl$Transaction.setWindowCrop (SurfaceControl.java:3451)
at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask (TaskDisplayArea.java:1011)
at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask (TaskDisplayArea.java:1080)
wi...@google.com <wi...@google.com> #35
Hey shabinder.hoichoi@, the crash stack on
Caused by android.os.RemoteException: Remote stack trace:
at android.view.SurfaceControl.-$$Nest$mcheckNotReleased (Unknown Source)
at android.view.SurfaceControl$Transaction.checkPreconditions (SurfaceControl.java:2945)
at android.view.SurfaceControl$Transaction.setWindowCrop (SurfaceControl.java:3451)
at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask (TaskDisplayArea.java:1011)
at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask (TaskDisplayArea.java:1080)
Can you share on which Android version and device this was happened?
Du...@my.maryvillecollege.edu <Du...@my.maryvillecollege.edu> #36
Posting my stacktrace, as I don't think it is similar to anything here. I am using Native Android (no Cordova libraries nor any cross-platform usage). Interestingly enough, it ONLY affects our Android 10 builds, and not our Android 12 nor Android 14 (never tested on Android 11, nor Android 13). This has been our most prevalent crash for more than a year, now. Unfortunately, we can't simply force our users to upgrade their Operating System in order to resolve the issue. We also have no usage of the "SplashScreen API" in our applications.
Fatal Exception: java.lang.NullPointerException: Attempt to invoke direct method 'void android.view.SurfaceControl.checkNotReleased()' on a null object reference
at android.os.Parcel.createException(Parcel.java:2078)
at android.os.Parcel.readException(Parcel.java:2040)
at android.os.Parcel.readException(Parcel.java:1988)
at android.app.IActivityTaskManager$Stub$Proxy.activityPaused(IActivityTaskManager.java:4489)
at android.app.servertransaction.PauseActivityItem.postExecute(PauseActivityItem.java:64)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by android.os.RemoteException: Remote stack trace:
at android.view.SurfaceControl.access$800(SurfaceControl.java:77)
at android.view.SurfaceControl$Transaction.reparent(SurfaceControl.java:2429)
at com.android.server.wm.SurfaceAnimator.transferAnimation(SurfaceAnimator.java:238)
at com.android.server.wm.WindowContainer.transferAnimation(WindowContainer.java:1261)
at com.android.server.wm.AppWindowToken.transferStartingWindow(AppWindowToken.java:1576)
wi...@google.com <wi...@google.com> #37
Hey Dustin.McAfee@
That should be an issue in Android system server, but unfortunately Android won't maintain legacy version unless it could be security issue.
Preventing from launch activity with trampoline might help release this symptom, but not sure if it's worth doing for a specific platform version.
Description
Related to https://issuetracker.google.com/issues/233588959
We cannot reproduce this crash in local development, we discovered this crash in runtime logs via Crashlytics.
We believe this is related to the core SplashScreen API , which we have recently introduced to our application. Additionally, the stacktrace seems to suggest the Splashscreen is part of the crash.
Relevant configuration:
Stacktrace: