capacitor icon indicating copy to clipboard operation
capacitor copied to clipboard

[Bug]: NPE in BridgeActivity.onSaveInstanceState

Open theigl opened this issue 2 months ago • 0 comments

Capacitor Version

💊 Capacitor Doctor 💊

Latest Dependencies:

@capacitor/cli: 7.4.3 @capacitor/core: 7.4.3 @capacitor/android: 7.4.3 @capacitor/ios: 7.4.3

Installed Dependencies:

@capacitor/cli: 7.4.3 @capacitor/core: 7.4.3 @capacitor/android: 7.4.3 @capacitor/ios: 7.4.3

[success] iOS looking great! 👌 [success] Android looking great! 👌

Other API Details


Platforms Affected

  • [ ] iOS
  • [x] Android
  • [ ] Web

Current Behavior

We are seeing NPEs in BridgeActivity.onSaveInstancState in Crashlytics:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.getcapacitor.Bridge.saveInstanceState(android.os.Bundle)' on a null object reference
    at com.getcapacitor.BridgeActivity.onSaveInstanceState(BridgeActivity.java:69)
    at android.app.Activity.performSaveInstanceState(Activity.java:2482)
    at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1749)
    at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:6626)
    at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:6034)
    at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:6000)
    at android.app.ActivityThread.handleStopActivity(ActivityThread.java:6064)
    at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:43)
    at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:63)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleItem(TransactionExecutor.java:169)
    at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:101)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:80)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2823)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loopOnce(Looper.java:248)
    at android.os.Looper.loop(Looper.java:338)
    at android.app.ActivityThread.main(ActivityThread.java:9067)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)

Expected Behavior

No NPEs happen in BridgeActivity.

Project Reproduction

We cannot reproduce this. Only shows up in Crashlytics.

Additional Information

It seems that the bridge field is null for some reason. Almost all methods in BridgeActivity are currently guarded against this with null checks. The exceptions are:

  • onDetachedFromWindow
  • onRestart
  • onSaveInstanceState

Would it make sense to add the same if (bridge != null) {} conditions to these 3 methods as well?

theigl avatar Oct 09 '25 09:10 theigl