Skip to content

[Bug]: NPE in BridgeActivity.onSaveInstanceState #8182

@theigl

Description

@theigl

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
  • 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions