facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
118.13k stars 24.2k forks source link

App Crash on Android OS 6 Samsung Galaxy S7 SM-G930FD (JSC Crash) 64 bit support A/libc: Fatal signal 11 (SIGSEGV) #24261

Closed dishantwalia closed 5 years ago

dishantwalia commented 5 years ago

Bug Report Crashed on launch Crashed with only this error log traced on android logcat A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 20217.

To Reproduce react-native run-android and navigate to second screen from initial route through stack navigator. I am using React-Navigation 3.6 App crashes as soon as I start going into react-navigation and crashing in Samsung S7 64 bit CPU device, working fine in other android devices which I am using.

Expected Behavior just to work in a stable manner. like in earlier react-native version 0.58

Environment React Native Environment Info: System: OS: Mac OS mojave 10.14 Binaries: npm: 6.4.1 Android Studio: Version 3.2.1 Android 6.0.1 (real device: Samsung S7 SM-G930FD) React Native v0.59.3

Temporary Workaround: When I removed 64 bit ndk filters "arm64-v8a", "x86_64" from ndk abiFilters in defaultConfig block of buidl.gradle by provide only 32 bit support. It works fine.


 ndk {
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"  -> change to
            abiFilters "armeabi-v7a", "x86"
        }```
react-native-bot commented 5 years ago

Thanks for submitting your issue. Can you take another look at your description and make sure the issue template has been filled in its entirety?

👉 Click here if you want to take another look at the Bug Report issue template.

dishantwalia commented 5 years ago

Thanks for submitting your issue. Can you take another look at your description and make sure the issue template has been filled in its entirety?

👉 Click here if you want to take another look at the Bug Report issue template.

Updated

dishantwalia commented 5 years ago

Logcat Error Screenshot for reference Screenshot 2019-04-03 at 5 38 07 PM

nadavmos commented 5 years ago

publishing 64bit split build I'm also getting this crash on launch on Galaxy S7 & Galaxy S7 Edge with Android 7.0 android vitals showing: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) WTFCrash backtrace:

00 pc 00000000007e048c /data/app/com.mosko.bus-1/lib/arm64/libjsc.so (WTFCrash+16)

01 pc 00000000000be650 /data/app/com.mosko.bus-1/lib/arm64/libjsc.so (_Z16WTFCrashWithInfoiPKcS0_i+24)

02 pc 0000000000489f2c /data/app/com.mosko.bus-1/lib/arm64/libjsc.so (operationLinkDirectCall+1120)

03 pc 000000000019e27c

on Crashlytics for those devices I'm getting: Fatal Exception: com.facebook.react.common.c Invariant Violation: Resuming work not yet implemented.

the workaround of only providing 32bit build is solving this for now

nsantacruz commented 5 years ago

I'm seeing the exact same errors as @nadavmos on Galaxy S7 running Android 7.0. The app is crashing at startup

nadavmos commented 5 years ago

I'm seeing the exact same errors as @nadavmos on Galaxy S7 running Android 7.0. The app is crashing at startup

@nsantacruz are you also using react-navigation? seems common to all other reporters

nsantacruz commented 5 years ago

@nadavmos, I'm not using react-navigation. This very well maybe the same issue as #24260 since that issue is also affecting 0.59 with Samsung S7 on Android 7.0

ishantsagar commented 5 years ago

@nadavmos The crash is not related to react-navigation, in-fact the app is crashing on a fresh RN Project created via react-native init.

ishantsagar commented 5 years ago

@hramos @mkonicek As of now we can conclude that this seems to be an issue with latest RN 0.59 release, affecting android builds running on Samsung S7, S7 Edge after we provided support for arm64-v8a, x86_64, removing them from build.gradle does not crash the app, which could potentially affect apps going live after 1 August 2019 as per Google Play 64 bit support policy. We would like you guys to draw some attention to it, please?

Merikw commented 5 years ago

Also happening on 0.58.5. Galaxy S7. Android 6.0. Setting it to 32 bit build is also not working.

wbercx commented 5 years ago

We're observing the same crashes on 64 bit builds of RN 0.59.4 on a Galaxy S7 running Android 7.0. Sadly we don't have access to that model of device. It works fine on all of ours.

taschik commented 5 years ago

Having the same issue with Huawai P9 device under the following environment:

  React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 63.57 MB / 32.00 GB
      Shell: 5.3 - /bin/zsh
    Binaries:
      Node: 11.3.0 - /usr/local/bin/node
      Yarn: 1.12.3 - /usr/local/bin/yarn
      npm: 6.9.0 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
      Android SDK:
        API Levels: 23, 26, 27, 28
        Build Tools: 23.0.1, 25.0.0, 26.0.3, 27.0.3, 28.0.1, 28.0.2, 28.0.3
        System Images: android-24 | Google APIs Intel x86 Atom, android-27 | Google APIs Intel x86 Atom, android-28 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.2/10E125 - /usr/bin/xcodebuild
    npmPackages:
      react: ^16.8.3 => 16.8.3
      react-native: ^0.59.4 => 0.59.4
    npmGlobalPackages:
      eslint-plugin-react-native: 3.5.0
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

This is the Crashlytics stack trace we get:


# Platform: android
# Issue ID: 5beec130f8b88c29632f185d
# Session ID: 5cb483b90037000127d26eeee3e996f5_DNE_0_v2
# Date: 2019-04-15T13:15:00Z
# OS Version: 7.0
# Device: PRA-LX1
# RAM Free: 1.3%
# Disk Free: 14.3%

#0. Crashed: Thread
0  (Missing)                              0xc00d9b20 (Missing)
1  (Missing)                              0x3ffffffd (Missing)
2  libc.so                                0xeda60d64 (Missing)
3  (Missing)                              0x3fdec95c (Missing)
4  libc.so                                0xeda3223f (Missing)
5  libutils.so                            0xee283df1 (Missing)
6  (Missing)                              0xea6ac55a (Missing)
7  libart.so                              0xebc85331 (Missing)
8  (Missing)                              0x12dfd11e (Missing)
9  (Missing)                              0x12da927e (Missing)
10 system@framework@boot-framework.oat    0x74d6de0d (Missing)
11 (Missing)                              0x3fdec95c (Missing)
12 (Missing)                              0x12f39976 (Missing)
13 (Missing)                              0x12c2064e (Missing)
14 (Missing)                              0x70e43ada (Missing)
15 (Missing)                              0x12f43b8e (Missing)
16 libart.so                              0xebc85331 (Missing)
17 (Missing)                              0x70d268be (Missing)
18 system@framework@boot.oat              0x716279db (Missing)
19 (Missing)                              0x70837262 (Missing)
20 (Missing)                              0x70190306 (Missing)
21 (Missing)                              0x2cb6ab0c (Missing)
22 (Missing)                              0x70d58d82 (Missing)
23 (Missing)                              0x2cb6ab0c (Missing)
24 (Missing)                              0x2cb6ab0c (Missing)
25 (Missing)                              0x70c63cee (Missing)
26 (Missing)                              0x12c2064e (Missing)
27 (Missing)                              0x70e43ada (Missing)
28 (Missing)                              0x12f43c1e (Missing)
29 libart.so                              0xebca3526 (Missing)
30 (Missing)                              0x3fdec95c (Missing)
31 (Missing)                              0x70e43ada (Missing)
32 (Missing)                              0x70e43ada (Missing)
33 (Missing)                              0x12f39976 (Missing)
34 (Missing)                              0x12f43b8e (Missing)
35 libart.so                              0xebc85331 (Missing)
36 (Missing)                              0x70d268e2 (Missing)
37 (Missing)                              0x3fdec95c (Missing)
38 libutils.so                            0xee283ced (Missing)
39 (Missing)                              0x70abe4f6 (Missing)
40 (Missing)                              0x70aadb2e (Missing)
41 libandroid_runtime.so                  0xecdb23ff (Missing)
42 (Missing)                              0x70abe4f6 (Missing)
43 (Missing)                              0x12c2fa8e (Missing)
44 system@framework@boot-framework.oat    0x749d1865 (Missing)
45 (Missing)                              0x12c2fa8e (Missing)
46 system@framework@boot-framework.oat    0x741f0347 (Missing)
47 (Missing)                              0x70d3b9ca (Missing)
48 (Missing)                              0x12c2fa8e (Missing)
49 (Missing)                              0x12c2fa8e (Missing)
50 (Missing)                              0x70abe4f6 (Missing)
51 (Missing)                              0x70aadb2e (Missing)

--

#0. Crashed: Thread
0  (Missing)                              0xc00d9b20 (Missing)
1  (Missing)                              0x3ffffffd (Missing)
2  libc.so                                0xeda60d64 (Missing)
3  (Missing)                              0x3fdec95c (Missing)
4  libc.so                                0xeda3223f (Missing)
5  libutils.so                            0xee283df1 (Missing)
6  (Missing)                              0xea6ac55a (Missing)
7  libart.so                              0xebc85331 (Missing)
8  (Missing)                              0x12dfd11e (Missing)
9  (Missing)                              0x12da927e (Missing)
10 system@framework@boot-framework.oat    0x74d6de0d (Missing)
11 (Missing)                              0x3fdec95c (Missing)
12 (Missing)                              0x12f39976 (Missing)
13 (Missing)                              0x12c2064e (Missing)
14 (Missing)                              0x70e43ada (Missing)
15 (Missing)                              0x12f43b8e (Missing)
16 libart.so                              0xebc85331 (Missing)
17 (Missing)                              0x70d268be (Missing)
18 system@framework@boot.oat              0x716279db (Missing)
19 (Missing)                              0x70837262 (Missing)
20 (Missing)                              0x70190306 (Missing)
21 (Missing)                              0x2cb6ab0c (Missing)
22 (Missing)                              0x70d58d82 (Missing)
23 (Missing)                              0x2cb6ab0c (Missing)
24 (Missing)                              0x2cb6ab0c (Missing)
25 (Missing)                              0x70c63cee (Missing)
26 (Missing)                              0x12c2064e (Missing)
27 (Missing)                              0x70e43ada (Missing)
28 (Missing)                              0x12f43c1e (Missing)
29 libart.so                              0xebca3526 (Missing)
30 (Missing)                              0x3fdec95c (Missing)
31 (Missing)                              0x70e43ada (Missing)
32 (Missing)                              0x70e43ada (Missing)
33 (Missing)                              0x12f39976 (Missing)
34 (Missing)                              0x12f43b8e (Missing)
35 libart.so                              0xebc85331 (Missing)
36 (Missing)                              0x70d268e2 (Missing)
37 (Missing)                              0x3fdec95c (Missing)
38 libutils.so                            0xee283ced (Missing)
39 (Missing)                              0x70abe4f6 (Missing)
40 (Missing)                              0x70aadb2e (Missing)
41 libandroid_runtime.so                  0xecdb23ff (Missing)
42 (Missing)                              0x70abe4f6 (Missing)
43 (Missing)                              0x12c2fa8e (Missing)
44 system@framework@boot-framework.oat    0x749d1865 (Missing)
45 (Missing)                              0x12c2fa8e (Missing)
46 system@framework@boot-framework.oat    0x741f0347 (Missing)
47 (Missing)                              0x70d3b9ca (Missing)
48 (Missing)                              0x12c2fa8e (Missing)
49 (Missing)                              0x12c2fa8e (Missing)
50 (Missing)                              0x70abe4f6 (Missing)
51 (Missing)                              0x70aadb2e (Missing)
gpetrosyan commented 5 years ago

Having the same issue with Samsung Galaxy S7, on Android 7

ASSERT|04-17 00:30:16.272|18763|18813||libc|Fatal signal 11 (SIGSEGV), code 1, fault addr 0xbbadbeef in tid 18813 (mqt_js)
ASSERT|04-17 00:30:16.402|18920|18920||DEBUG|Build fingerprint: 'samsung/heroltexx/herolte:7.0/NRD90M/G930FXXS1DQHF:user/release-keys'
ASSERT|04-17 00:30:16.402|18920|18920||DEBUG|*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
ASSERT|04-17 00:30:16.405|18920|18920||DEBUG|ABI: 'arm64'
ASSERT|04-17 00:30:16.405|18920|18920||DEBUG|Revision: '8'
ASSERT|04-17 00:30:16.406|18920|18920||DEBUG|pid: 18763, tid: 18813, name: mqt_js  >>> com.profibackoffice.reactnative <<<
ASSERT|04-17 00:30:16.406|18920|18920||DEBUG|signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xbbadbeef
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x16  00000070110b1acc  x17  000000700bc121a8  x18  0000000021ecfc88  x19  000000700fed7e80
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x20  00000070108cf560  x21  0000006ffd4c8070  x22  000000700bc00000  x23  0000006ff9616ca0
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x28  ffff000000000002  x29  00000070108cf560  x30  0000007011408484
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x24  0000000000000007  x25  0000000000000000  x26  0000000000000000  x27  ffff000000000000
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x8   00000000bbadbeef  x9   00000070114b19d0  x10  0000000000000000  x11  0000006ffc4f0000
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x0   00000070108cf3c8  x1   00000070108cf3c8  x2   0000000000000000  x3   00000000000000a8
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    sp   00000070108cf400  pc   000000701140848c  pstate 00000000a0000000
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x4   000000700bfaee80  x5   0000006ff62a4980  x6   0000006ffa6a6820  x7   0000000000000000
ASSERT|04-17 00:30:16.407|18920|18920||DEBUG|    x12  0000000000000000  x13  000000700b617c00  x14  0000000000000002  x15  00000000bd36143d
ASSERT|04-17 00:30:16.412|18920|18920||DEBUG|backtrace:
ASSERT|04-17 00:30:16.412|18920|18920||DEBUG|    #03 pc 00000000001afe80  <anonymous:000000700bdff000>
ASSERT|04-17 00:30:16.412|18920|18920||DEBUG|    #02 pc 0000000000489f2c  /data/app/com.profibackoffice.reactnative-1/lib/arm64/libjsc.so (operationLinkDirectCall+1120)
ASSERT|04-17 00:30:16.412|18920|18920||DEBUG|    #01 pc 00000000000be650  /data/app/com.profibackoffice.reactnative-1/lib/arm64/libjsc.so (_Z16WTFCrashWithInfoiPKcS0_i+24)
ASSERT|04-17 00:30:16.412|18920|18920||DEBUG|    #00 pc 00000000007e048c  /data/app/com.profibackoffice.reactnative-1/lib/arm64/libjsc.so (WTFCrash+16)
AndrewJack commented 5 years ago

~Adding this to your android/app/build.gradle ~may fix it~ (It didn't):~

packagingOptions {
      pickFirst '**/libjsc.so'
      pickFirst '**/libc++_shared.so'
}

~See https://github.com/react-native-community/jsc-android-buildscripts/pull/95~

gpetrosyan commented 5 years ago

Thank you for trying to help but the solution has not helped us.

16 апр. 2019 г., в 19:12, Andrew Jack notifications@github.com написал(а):

Adding this to your android/app/build.gradle may fix it:

packagingOptions { pickFirst '/libjsc.so' pickFirst '/libc++_shared.so' } See react-native-community/jsc-android-buildscripts#95 https://github.com/react-native-community/jsc-android-buildscripts/pull/95 Testing this now.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/facebook/react-native/issues/24261#issuecomment-483728028, or mute the thread https://github.com/notifications/unsubscribe-auth/AEO_1BMzddSncn2DtQeDcx_y1KIz0ZSGks5vhfaJgaJpZM4cX_xB.

taschik commented 5 years ago

Adding this to your android/app/build.gradle may fix it:

packagingOptions {
      pickFirst '**/libjsc.so'
      pickFirst '**/libc++_shared.so'
}

See react-native-community/jsc-android-buildscripts#95

I'm testing this now.

@AndrewJack was it working for you?

wbercx commented 5 years ago

Adding this to your android/app/build.gradle may fix it:

packagingOptions {
      pickFirst '**/libjsc.so'
      pickFirst '**/libc++_shared.so'
}

See react-native-community/jsc-android-buildscripts#95

I'm testing this now.

Sadly we already had those in there.

We have pulled our 64-bit builds from the Play Store. This may not be related at all to the crash in the 64bit build, but Galaxy S7 devices running the armeabi-v7a build are now crashing a lot as per the below. Immediately upon startup.

Really wondering what is so different about the S7 compared to other devices.

Version Code: 10000036
Version Name: 2.3.4
Android: 8.0.0
Android Build: R16NW
Manufacturer: samsung
Model: SM-G930F
Date: undefined

com.facebook.react.bridge.UnexpectedNativeTypeException: TypeError: expected dynamic type `double', but had type `null'
  at com.facebook.react.bridge.ReadableNativeMap.getIntNative
  at com.facebook.react.bridge.ReadableNativeMap.getInt
  at com.facebook.react.g.a.a
  at com.facebook.react.modules.core.ExceptionsManagerModule.reportSoftException
  at java.lang.reflect.Method.invoke(Method.java:-2)
  at com.facebook.react.bridge.JavaMethodWrapper.invoke
  at com.facebook.react.bridge.JavaModuleWrapper.invoke
  at com.facebook.react.bridge.queue.NativeRunnable.run
  at android.os.Handler.handleCallback(Handler.java:789)
  at android.os.Handler.dispatchMessage(Handler.java:98)
  at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
  at android.os.Looper.loop(Looper.java:164)
  at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
  at java.lang.Thread.run(Thread.java:764)
AndrewJack commented 5 years ago

@taschik It didn't work, I thought correcting the jsc-android-buildscripts config might work.

SpertsyanKM commented 5 years ago

I'm getting the same exception and it can't be caught by uncaught exception handler. In my Android app I've tried this code:

Thread.setDefaultUncaughtExceptionHandler(...);

with handler, which only writes exception name to console and then returns control to default handler, but that code hadn't been executed before the app crash.

I was trying to investigate, why Crashlytics doesn't log this exceptions. Maybe that is the reason... I remember, that once or twice I've seen native crashes in my fabric console, so crashlytics is able to log native crashes, but somehow not in this case.

AndrewJack commented 5 years ago

@SpertsyanKM The crash occurs at the ndk level. You won't see the crash in the firebase console, unless you add the Crashlytics NDK library. https://docs.fabric.io/android/crashlytics/ndk.html

As you've found the Thread.setDefaultUncaughtExceptionHandler will only catch Java exceptions.

taschik commented 5 years ago

I upgraded to RN 0.59.5 today and the crash still happens. This issue is not yet fixed.

Jeijie commented 5 years ago

Hi, everyone, I hava same issue in 0.59.5, remove android:screenOrientation="portrait" in AndroidManifest.xml. It works for me.

wbercx commented 5 years ago

@Jeijie I already did not have that in there, but it crashed anyway.

yinhangfeng commented 5 years ago

same issue on REDMI NOTE 4X Android 7.0 and huawei HRY AL00A Android 9

AutomaticThread
SIGSEGV(SEGV_MAPERR)
1 #00 pc 000000000042c064 /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
2 #01 pc 0000000000429638 /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
3 #02 pc 0000000000429d28 /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
4 #03 pc 000000000041664c /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
5 #04 pc 00000000007ea4cc /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
6 #05 pc 00000000007eabcc /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
7 #06 pc 00000000007e0fec /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
8 #07 pc 00000000007ee4fc /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
9 #08 pc 00000000007ffdb8 /data/app/com.example.app-gUSG17yMVBByrSNhEo7j7A==/lib/arm64/libjsc.so [arm64-v8a]
10 #09 pc 0000000000083550 /system/lib64/libc.so (__pthread_start(void*)+36) [arm64-v8a]
11 #10 pc 00000000000241a0 /system/lib64/libc.so (__start_thread+68) [arm64-v8a]
12 java:
13 [Failed to get Java stack]
ntorion commented 5 years ago

Same problem on Galaxy S7 Edge / Android 7.0 and with three different versions of React-Native : 0.58.4, 0.58.5 and 0.59.5. The crash has not been detected on others Android devices.

Only solution to avoid this issue currently is to build the app only on 32 bits. But the issue needs to be fixed for the first August because Play Store will not accept anymore only 32 bits apps.

danilobuerger commented 5 years ago

Experiencing the same, confined to Galaxy S7 with Android <= 7.0 (not 8.0). Happens since we enabled 64 bit support.

taschik commented 5 years ago

As of our gradle default config we do not even support 64bit and the crashes happen nevertheless.


defaultConfig {
        applicationId _applicationId
        minSdkVersion 16
        targetSdkVersion 27 
        versionCode _versionCode
        versionName _versionName
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }

        packagingOptions {
            exclude "lib/arm64-v8a/libgnustl_shared.so"
        }
        renderscriptTargetApi 27
        renderscriptSupportModeEnabled true
        vectorDrawables.useSupportLibrary = true /
        multiDexEnabled true 
    }```
murilobast commented 5 years ago

One more here, I've noticed that the issue happens with some Mediatek devices as well Alcatel A5 (ELSA6) Alcatel 1x / TCL L9 (U5A_PLUS_4G) An some other devices with MediaTek SoCs with x64 support

jeremyhon commented 5 years ago

Hi. We've found that:

  1. ~The fix to remove 64-bit support does work~ This only fixed the issue for some of our users
  2. ~We have had users fix this problem themselves by restarting their phone (no need to switch to 32-bit app)~ They did not have the same issue.
murilobast commented 5 years ago

I can confirm that removing the 64bit support reduced the crash reports by ~90% It is happening with some devices still. But the current "fix" is the best I can do right now

quietbits commented 5 years ago

I'm getting crashes on OnePlus 3 as well, but removing 64bit support doesn't help. I'm getting crashes with a clean react-native init project (also on emulators when opening app's APK).

bakir97 commented 5 years ago

same problem s7 edge android 7.0 crashing in production with bundle split ,other seem to be ok signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) backtrace:

00 pc 000000000009e144

01 pc 00000000000a4a70

ncuillery-youitv commented 5 years ago

This issue is already identified on the webkit repo. I have commented there when I discovered this issue months ago: https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/327#issuecomment-436781890

It would be great to coordinate the efforts.

Note: at Youi we use RN in a non-standard way. We build our own 64-bit JSC, so we got this issue far earlier, prior to 0.58.

AndrewJack commented 5 years ago

The common factors seem to be Android 6.0 or 7.0 (Level 23 & 24) and ARM 64 devices. The most common device with this combination is the S7. Upgrading an S7 to Android 8 fixes the issue.

I have reproduced the crash in an Android ARM 64 bit emulator, but the Android ARM emulator images are too unstable & buggy to work with. I also have an S7 to debug, which I'm attempting to downgrade to Android 7, though Samsung hasn't made this easy.

@kmagiera & @kudo you recently released a new version of JSC. Are you expecting this release to fix this issue? Would aligning NDK versions help? https://github.com/react-native-community/jsc-android-buildscripts/pull/95

Kudo commented 5 years ago

@AndrewJack The new release just for WebKit security patches & removing libc++_shared.so for https://github.com/facebook/react-native/pull/24672. I don't think these will fix the crash issues.

AFAIK, there are various JSC crash types. Some are from operationLinkDirectCall as this issue reported and some are NPE as https://github.com/react-native-community/jsc-android-buildscripts/issues/84. Most of them are related to JIT. JIT crash path is hard to reproduce in-house and hard to troubleshoot as well. I have some potential fixes but not quite sure if those will truly solve the crash issue.

IMO, if in-house reproduce is not possible, an alternative is to deliver experimented build.

My plan is to make upgrade JSC easier, simply yarn add jsc-android@experiment. This should happen at RN 0.60. With this mechanism, at least we could be a step ahead to fix crash issues.

On the other hand, it would help if there are reliable reproduce code & environment. For example, there is a repo from react-native-navigation. It helps much. https://github.com/react-native-community/jsc-android-buildscripts/issues/84#issue-407898908

quietbits commented 5 years ago

The crash happens also on Pixel 2 with Android 9, if that helps. Is there any way to get crash logs when running APK? I'll be happy to help to get more information on these crashes, but I don't know much about Android development.

j-wang commented 5 years ago

@quietbits, most of the logs related to these issues are not super helpful, but to get it out:

Look for when the crash occurs using adb logcat—it'll look something like this (not exactly, since I just extracted this from the top of the log, but it shows an exerpt which is why I'm pointing it out):

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/heroqltetmo/heroqltetmo:8.0.0/R16NW/G930TUVU4CRI2:user/release-keys'
Revision: '14'
ABI: 'arm'
pid: 32435, tid: 32482, name: mqt_js  >>> com.YOURAPP <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xcd
Cause: null pointer dereference

It'll also usually say that the log is written to a "tombstone."

To get the tombstone off, use adb bugreport ./MySuperSpecialBugReport with the latter part obviously being the path you want it in.

It'll get it off as a zip, and you can unzip it, navigate (on most devices) to: ./MySuperSpecialBugReport/FS/data/tombstones and then you can open up the tombstone with your text editor.

Again, just given the nature of these crashes, they're not super informative. At least with ours, they're usually with mqt_js, and at a low pointer address. They also still occur (though less and less weirdly/unpredictably) with 32-bit only apks.

===

@Kudo—definitely looking forward to being able to try out different JSCs more easily and see what it does. This has been a real pain point so far in upgrading to 0.59 with super non-deterministic and unpredictable crashes (that also only occur on certain devices... sometimes).

Kudo commented 5 years ago

To get the symbolicated backtrace, I used to combine adb logcat and ndk-stack For example, targeting RN 059 stock JSC (which is jsc-android@236355.0.0) and arm64-v8a ABI.

wget https://registry.npmjs.org/jsc-android/-/jsc-android-236355.0.0.tgz
tar xf jsc-android-236355.0.0.tgz
unzip package/dist/org/webkit/android-jsc/r236355/android-jsc-r236355.aar
adb logcat | ndk-stack -sym jni/arm64-v8a/libjsc.so
paulupendo commented 5 years ago

Any update on this issue?

dishantwalia commented 5 years ago

Removing 64 bit is not a solution as per Google Play 64 bit support policy. It could potentially affect apps going live after 1 August 2019. We would like to have proper solution for this issue. @hramos any update on this ? Please draw some attention.

sikeeoh commented 5 years ago

Hi, everyone, I hava same issue in 0.59.8, We would like to have proper solution for this issue.

Kudo commented 5 years ago

Hi, I am helping with the JSC crash issue and also a collaborator of jsc-android-buildscripts. RN 0.59 JSC is in fact from jsc-android-buildscripts.

To troubleshoot the crash issue, we need the crash backtrace. Hopefully, please follow the steps to below get backtrace and post here. I could then follow up to find potential solutions.

Install ndk-build and execute commands:

wget https://registry.npmjs.org/jsc-android/-/jsc-android-236355.0.0.tgz
tar xf jsc-android-236355.0.0.tgz
unzip package/dist/org/webkit/android-jsc/r236355/android-jsc-r236355.aar
adb logcat -c
adb logcat | ndk-stack -sym jni/arm64-v8a/libjsc.so

It seems a lot of crash comes from Samsung S7. Unfortunately, I have no S7 at hand. Hopefully to get some useful information to go further troubleshooting.

OtacilioN commented 5 years ago

@marlonchalegre

Mookiies commented 5 years ago

@Kudo This is the log I got running those commands on a fresh project on RN 0.59.8 I tried building debug and release builds and compiling the jsc myself by the logs looked the same in each case.

********** Crash dump: **********
Build fingerprint: ‘samsung/heroltexx/herolte:7.0/NRD90M/G930FXXU1DQEL:user/release-keys’
#00 0x00000000007e048c /data/app/com.testproj-2/lib/arm64/libjsc.so (WTFCrash+16)
                                                                    WTFCrash
                                                                    ??:0:0
#01 0x00000000000be650 /data/app/com.testproj-2/lib/arm64/libjsc.so (_Z16WTFCrashWithInfoiPKcS0_i+24)
                                                                    WTFCrashWithInfo(int, char const*, char const*, int)
                                                                    ??:0:0
#02 0x0000000000489f2c /data/app/com.testproj-2/lib/arm64/libjsc.so (operationLinkDirectCall+1120)
                                                                    operationLinkDirectCall
                                                                    ??:0:0
#03 0x00000000001710f0 <anonymous:00000072adbff000>
Crash dump is completed

I have a S7 at hand and would be happy to try running anything else to try and figure this out.

matthargett commented 5 years ago

My suggestion is to recompile the JSC with JIT disabled. It’s possible the security mechanisms in the OS interfere with the JIT’s operations in some unpredictable way.

AndrewJack commented 5 years ago

I've reproduced the same crash logs as @MalcolmScruggs. On a S7 - Android 7.1.2 - LineageOS 14.1.

On RN 0.59.8 & the latest version of the master branch.

No changes required to reproduce crash. The default RN template trigger a crash after a bit of tapping on the screen.

Repo here - https://github.com/AndrewJack/jsc_crash/tree/rn_master_branch Crash logs are in the README.md


Next steps: build own version of JSC with JIT disabled


If anyone has a S7 on a newer version of Android and they want to downgrade. This is what I did:

Download this software:

  1. Install TWRP recovery (using odin [requires windows] or other method)
  2. Boot into recovery
  3. mount storage
  4. copy LineageOS rom & gapps package
  5. install flash LineageOS and gapps images
  6. reboot.
AndrewJack commented 5 years ago

With latest react native master and using no_dfg_jit or no-jit from @Kudo's fork I cannot reproduce the crash.

https://github.com/AndrewJack/jsc_crash/tree/no_dfg_jit https://github.com/AndrewJack/jsc_crash/tree/no_jit

Kudo commented 5 years ago

@AndrewJack Amazing, you found my experimented builds so quick. Thanks for your feedback and good to know these versions fixed the crash for you.

Kudo commented 5 years ago

Dears,

I had two experimented JSC versions, please try if these could fix crashes for you. A brief steps here: https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17

One experimented version is to disable one kind of JIT. And the other one disable JIT totally from @matthargett recommended. If the two versions will fix crash for you, please also feedback to us the overall performance & TTI as mentions in my gist.

wbercx commented 5 years ago

@Kudo Thanks for those! What do you know about concurrent GC in those builds? I saw mentioned somewhere that was another difference compared to the 32 bit version, but of course I cannot find that comment anymore. May be another thing worth playing with incase crashes do persist.