Skip to content

Crash: SIGABRT in React Native BarcodeZxingScanModule when entering wallet setup/recovery flow #71

@daxiami233

Description

@daxiami233

App Information

  • App name: Bold Wallet
  • Package name: com.boldwallet
  • Version: Unknown
  • Version code: Unknown
  • Issue type: Crash
  • Android version: 9.0

Expected Behavior

The app should remain stable when the user taps the central fingerprint/lock icon from com.boldwallet.MainActivity.

The wallet setup or recovery page should be opened normally, and any activity result from native modules should be handled safely without terminating the app process.

Actual Behavior

The app crashes after the user taps the central fingerprint/lock icon and enters the wallet setup/recovery flow.

The crash occurs in the React Native bridge/native callback path while handling an Activity result, and Android force-finishes com.boldwallet.MainActivity.

Reproduction Steps

  1. Launch the app and stay on com.boldwallet.MainActivity.
  2. Tap the circular fingerprint and lock icon in the center of the page.
  3. Observe whether the wallet setup and recovery page is opened successfully.
  4. The app crashes and the process is terminated.

Crash Log

05-23 19:37:02.158 F/libc (28083): Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 28083 (com.boldwallet), pid 28083 (com.boldwallet)
05-23 19:37:02.199 F/DEBUG (30596): pid: 28083, tid: 28083, name: com.boldwallet  >>> com.boldwallet <<<
05-23 19:37:02.255 F/DEBUG (30596): #01 pc 0000000000584b58 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000)
05-23 19:37:02.255 F/DEBUG (30596): #02 pc 0000000000583cb8 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000) (google::LogMessage::SendToLog()+1792)
05-23 19:37:02.255 F/DEBUG (30596): #03 pc 00000000005843c4 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000) (google::LogMessage::Flush()+216)
05-23 19:37:02.255 F/DEBUG (30596): #04 pc 0000000000588868 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000) (google::LogMessageFatal::~LogMessageFatal()+8)
05-23 19:37:02.256 F/DEBUG (30596): #05 pc 00000000003cc840 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000)
05-23 19:37:02.256 F/DEBUG (30596): #06 pc 000000000049d80c /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000) (_ZN8facebook3jni6detail13MethodWrapperIMNS_5react16JCxxCallbackImplEFvPNS3_11NativeArrayEEXadL_ZNS4_6invokeES6_EES4_vJS6_EE8dispatchENS0_9alias_refIPNS1_8JTypeForINS0_11HybridClassIS4_NS3_9JCallbackEE8JavaPartESD_vE11_javaobjectEEEOS6_+120)
05-23 19:37:02.256 F/DEBUG (30596): #07 pc 000000000049d71c /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/base.apk (offset 0x1c30000) (_ZN8facebook3jni6detail13MethodWrapperIMNS_5react16JCxxCallbackImplEFvPNS3_11NativeArrayEEXadL_ZNS4_6invokeES6_EES4_vJS6_EE4callEP7_JNIEnvP8_jobjectPNS1_8JTypeForINS0_11HybridClassIS5_NS1_15BaseHybridClassEE8JavaPartENS0_7JObjectEvE11_javaobjectE+76)
05-23 19:37:02.256 F/DEBUG (30596): #08 pc 0000000000034d88 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.odex (offset 0x33000) (com.facebook.react.bridge.CatalystInstanceImpl.jniSetSourceURL [DEDUPED]+152)
05-23 19:37:02.256 F/DEBUG (30596): #15 pc 00000000002a7376 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.bridge.CxxCallbackImpl.invoke+18)
05-23 19:37:02.256 F/DEBUG (30596): #21 pc 00000000003cca8a /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.reactlibrary.BarcodeZxingScanModule.onActivityResult+102)
05-23 19:37:02.256 F/DEBUG (30596): #27 pc 00000000002ad79c /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.bridge.ReactContext.onActivityResult+36)
05-23 19:37:02.256 F/DEBUG (30596): #33 pc 00000000002e5c46 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.runtime.ReactHostImpl.onActivityResult+114)
05-23 19:37:02.256 F/DEBUG (30596): #39 pc 0000000000296b44 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.ReactDelegate.onActivityResult+32)
05-23 19:37:02.256 F/DEBUG (30596): #45 pc 0000000000295b50 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.ReactActivityDelegate.onActivityResult+12)
05-23 19:37:02.256 F/DEBUG (30596): #51 pc 0000000000295f06 /data/app/com.boldwallet-lYCrSkDanHHSGroONaLaDg==/oat/arm64/base.vdex (com.facebook.react.ReactActivity.onActivityResult+10)
05-23 19:37:02.256 F/DEBUG (30596): #79 pc 00000000000b44c8 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+752)
05-23 19:37:02.385 W/ActivityManager( 1613): Force finishing activity com.boldwallet/.MainActivity
05-23 19:37:02.424 W/InputDispatcher( 1613): channel 'e1a2304 com.boldwallet/com.boldwallet.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9

Analysis

The crash is a native abort:

Fatal signal 6 (SIGABRT), code -6 (SI_TKILL)

The stack trace shows that the abort is triggered through a fatal native log path:

google::LogMessage::SendToLog()
google::LogMessage::Flush()
google::LogMessageFatal::~LogMessageFatal()

The relevant app-side call chain points to React Native Activity result handling:

com.reactlibrary.BarcodeZxingScanModule.onActivityResult
com.facebook.react.bridge.ReactContext.onActivityResult
com.facebook.react.runtime.ReactHostImpl.onActivityResult
com.facebook.react.ReactDelegate.onActivityResult
com.facebook.react.ReactActivityDelegate.onActivityResult
com.facebook.react.ReactActivity.onActivityResult

This indicates that the crash occurs when the app receives an Activity result and forwards it through the React Native bridge. The native module involved is:

com.reactlibrary.BarcodeZxingScanModule

The module then invokes a React Native callback through:

com.facebook.react.bridge.CxxCallbackImpl.invoke
facebook::react::JCxxCallbackImpl::invoke

Because the process aborts through google::LogMessageFatal, this is likely caused by an invalid or unsafe native/React Native bridge state, such as invoking a stale callback, invoking a callback with invalid arguments, calling into a destroyed React context, or mishandling the result from the barcode scanning activity.

Although the visible user action is tapping the fingerprint/lock icon to enter the wallet setup and recovery flow, the fatal stack trace shows that the immediate crash point is in BarcodeZxingScanModule.onActivityResult().

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions