React-native: Android OS 6上的App Crash三星Galaxy S7 SM-G930FD(JSC Crash)64位​​支持A / libc:致命信号11(SIGSEGV)

创建于 2019-04-02  ·  190评论  ·  资料来源: facebook/react-native

错误报告
发射时坠毁
仅在android logcat A / libc上跟踪此错误日志时崩溃

重现
react-native运行Android
并通过堆栈导航器从初始路径导航到第二个屏幕。 我正在使用React-Navigation 3.6
我一进入react-navigation并在Samsung S7 64 bit CPU设备中崩溃,应用程序崩溃,在我使用的其他android设备中工作正常。

预期行为
只是为了稳定地工作。 像早期反应本机版本0.58中一样

环境
反应本机环境信息:
系统:
操作系统:Mac OS mojave 10.14
二进制文件:
npm:6.4.1
Android Studio:版本3.2.1
Android 6.0.1(真实设备:Samsung S7 SM-G930FD)
React Native v0.59.3

临时解决方法:
当我从buidl.gradle的defaultConfig块中的ndk abiFilters中删除了64位ndk过滤器“ arm64-v8a”,“ x86_64”时,仅提供32位支持。
它工作正常。

ndk { abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" -> change to abiFilters "armeabi-v7a", "x86" }

Bug Android Ran Commands Locked

最有用的评论

@hramos @mkonicek到目前为止,我们可以得出结论,这似乎是最新的RN 0.59版本的问题,在我们为arm64-v8a提供支持后,会影响运行在Samsung S7S7 Edge上的android构建arm64-v8ax86_64 ,从build.gradle中删除它们不会使应用程序崩溃,这可能会影响根据Google Play 64位支持政策在1 August 2019之后运行的应用程序。 我们希望你们引起大家注意吗?

所有190条评论


感谢您提交问题。 您能否再看一下您的描述并确保问题模板已完整填写?

if如果您想再次查看错误报告问题模板,请单击此处。

感谢您提交问题。 您能否再看一下您的描述并确保问题模板已完整填写?

if如果您想再次查看错误报告问题模板,请单击此处。

更新

Logcat错误屏幕截图以供参考Screenshot 2019-04-03 at 5 38 07 PM

发布64位拆分版本时,在装有Android 7.0的Galaxy S7和Galaxy S7 Edge上启动时,我也遇到了崩溃
android vitals显示:
信号11(SIGSEGV),代码1(SEGV_MAPERR)WTFCrash
回溯:
#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

在那些设备上的Crashlytics上,我得到了:
致命异常:com.facebook.react.common.c
永久违反:恢复尚未执行的工作。

仅提供32位版本的解决方法暂时解决了此问题

我在运行Android 7.0的Galaxy S7上看到与@nadavmos完全相同的错误。 该应用程序在启动时崩溃

我在运行Android 7.0的Galaxy S7上看到与@nadavmos完全相同的错误。 该应用程序在启动时崩溃

@nsantacruz您是否还在使用react-navigation? 似乎是所有其他记者的共同点

@nadavmos ,我没有使用react-navigation 。 这个问题可能与#24260相同,因为该问题还会影响Android 7.0上的Samsung S7的0.59

@nadavmos崩溃与react-navigation无关,实际上,应用程序崩溃于通过react-native init创建的新RN项目。

@hramos @mkonicek到目前为止,我们可以得出结论,这似乎是最新的RN 0.59版本的问题,在我们为arm64-v8a提供支持后,会影响运行在Samsung S7S7 Edge上的android构建arm64-v8ax86_64 ,从build.gradle中删除它们不会使应用程序崩溃,这可能会影响根据Google Play 64位支持政策在1 August 2019之后运行的应用程序。 我们希望你们引起大家注意吗?

同样在0.58.5上发生。 Galaxy S7。 Android 6.0。 将其设置为32位版本也不起作用。

在运行Android 7.0的Galaxy S7上,我们在RN 0.59.4的64位版本上观察到相同的崩溃。 遗憾的是,我们无法使用该型号的设备。 它适用于我们所有人。

在以下环境下,Huawai P9设备存在相同的问题:

  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

这是我们获得的Crashlytics堆栈跟踪:


# 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@[email protected]    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@[email protected]              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@[email protected]    0x749d1865 (Missing)
45 (Missing)                              0x12c2fa8e (Missing)
46 system@[email protected]    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@[email protected]    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@[email protected]              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@[email protected]    0x749d1865 (Missing)
45 (Missing)                              0x12c2fa8e (Missing)
46 system@[email protected]    0x741f0347 (Missing)
47 (Missing)                              0x70d3b9ca (Missing)
48 (Missing)                              0x12c2fa8e (Missing)
49 (Missing)                              0x12c2fa8e (Missing)
50 (Missing)                              0x70abe4f6 (Missing)
51 (Missing)                              0x70aadb2e (Missing)

在Android 7上出现与Samsung Galaxy S7相同的问题

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)

〜将其添加到您的android/app/build.gradle 〜可能会解决〜(没有):〜

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

〜请参见https://github.com/react-native-community/jsc-android-buildscripts/pull/95~

感谢您尝试提供帮助,但是解决方案并没有帮助我们。

16日。 2019年6月19日,安德鲁·杰克(Andrew Jack) [email protected]написал (а):

将此添加到您的android / app / build.gradle可能会解决它:

包装选项{
pickFirst'/ libjsc.so'pickFirst'/ libc++_shared.so'
}
参见react-native-community / jsc-android-buildscripts#95 https://github.com/react-native-community/jsc-android-buildscripts/pull/95
现在进行测试。

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub https://github.com/facebook/react-native/issues/24261#issuecomment-483728028上查看,或忽略线程https://github.com/notifications/unsubscribe-auth/ AEO_1BMzddSncn2DtQeDcx_y1KIz0ZSGks5vhfaJgaJpZM4cX_xB

将其添加到您的android/app/build.gradle可以解决此问题:

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

参见react-native-community / jsc-android-buildscripts#95

我现在正在测试。

@AndrewJack对您

将其添加到您的android/app/build.gradle可以解决此问题:

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

参见react-native-community / jsc-android-buildscripts#95

我现在正在测试。

可悲的是我们已经在那里了。

我们已经从Play商店中撤出了64位版本。 这可能与64位版本中的崩溃根本不相关,但是运行armeabi-v7a版本的Galaxy S7设备现在崩溃的情况很多,如下所示。 启动后立即。

真的很想知道S7与其他设备相比有何不同。

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)

@taschik没用,我认为更正jsc-android-buildscripts配置可能有用。

我遇到了相同的异常,未捕获的异常处理程序无法捕获它。 在我的Android应用中,我尝试了以下代码:

Thread.setDefaultUncaughtExceptionHandler(...);

使用处理程序,该处理程序仅将异常名称写入控制台,然后将控制权返回给默认处理程序,但是在应用程序崩溃之前尚未执行该代码。

我正在尝试调查,为什么Crashlytics不会记录此异常。 也许这就是原因……我记得,我曾经在我的Fabric控制台中看到过一次或两次本地崩溃,因此crashlytics能够记录本地崩溃,但在某种情况下却无法。

@SpertsyanKM崩溃发生在ndk级别。 除非添加Crashlytics NDK库,否则您将不会在firebase控制台中看到崩溃。 https://docs.fabric.io/android/crashlytics/ndk.html

如您所见, Thread.setDefaultUncaughtExceptionHandler仅会捕获Java异常。

我今天升级到RN 0.59.5,崩溃仍然发生。 此问题尚未解决。

大家好,我在0.59.5中遇到了同样的问题,在AndroidManifest.xml中删除了android:screenOrientation = “ portrait”。 这个对我有用。

@Jiejie我已经没有那个了,但是还是崩溃了。

REDMI NOTE 4X And​​roid 7.0和华为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]

在Galaxy S7 Edge / Android 7.0上以及在三个不同版本的React-Native上,存在相同的问题:0.58.4、0.58.5和0.59.5。
在其他Android设备上未检测到崩溃。

当前唯一避免此问题的解决方案是仅在32位上构建应用程序。 但由于Play商店将不再只接受32位应用程序,因此该问题需要在8月1日解决。

遇到相同的情况,仅限于Android <= 7.0(而非8.0)的Galaxy S7。 由于我们启用了64位支持,因此发生。

从gradle默认配置开始,我们甚至不支持64位,并且仍然发生崩溃。
```
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 
}```

在这里,我注意到了一些联发科设备也出现了此问题
阿尔卡特A5(ELSA6)
阿尔卡特1x / TCL L9(U5A_PLUS_4G)
其他一些带有x64支持的联发科技SoC的设备

你好我们发现:

  1. 〜删除64位支持的修复程序确实起作用〜〜仅为我们的某些用户解决了该问题
  2. 〜我们让用户自己通过_重新启动手机_来解决此问题(无需切换至32位应用程序)〜他们没有相同的问题。

我可以确认删除64位支持后,崩溃报告减少了约90%
某些设备仍在发生这种情况。 但是目前的“修复”是我现在能做的最好的

我也在OnePlus 3上崩溃,但是删除64位支持无济于事。 我在使用干净的react-native初始项目时崩溃(也在打开应用程序APK时在模拟器上崩溃)。

相同的问题s7 edge android 7.0在捆绑拆分生产中崩溃,其他似乎还可以
信号11(SIGSEGV),代码1(SEGV_MAPERR)
回溯:
#00 pc 000000000009e144
#01 pc 00000000000a4a70

该问题已在Webkit存储库中找到。 几个月前当我发现此问题时,我已在此处发表评论: https :

协调努力将是很棒的。

注意:在Youi,我们以非标准方式使用RN。 我们构建了自己的64位JSC,因此我们早于0.58发行了此问题。

常见因素似乎是Android 6.0或7.0(23和24级)和ARM 64设备。
结合使用最常见的设备是S7。 将S7升级到Android 8可解决此问题。

我已经在Android ARM 64位仿真器中重现了崩溃,但Android ARM仿真器映像太不稳定且无法使用。 我也有一个S7要调试,我正在尝试将其降级到Android 7,尽管三星并没有做到这一点。

@kmagiera@kudo,您最近发布了JSC的新版本。 您是否希望此版本能够解决此问题? 对齐NDK版本会有所帮助吗? https://github.com/react-native-community/jsc-android-buildscripts/pull/95

@AndrewJack新发行版仅用于WebKit安全修补程序,并删除了https://github.com/facebook/react-native/pull/24672的libc ++ _ shared.so

AFAIK,有各种JSC崩溃类型。
一些是来自operationLinkDirectCall的,据此问题报道,有些是NPE的https://github.com/react-native-community/jsc-android-buildscripts/issues/84。
它们大多数与JIT有关。
JIT崩溃路径很难在内部复制,也很难进行故障排除。
我有一些潜在的修复程序,但不太确定这些修复程序是否能真正解决崩溃问题。

IMO,如果无法进行内部复制,则替代方法是交付经过实验的版本。

我的计划是简化JSC升级,只需yarn add jsc-android@experiment 。 这应该在RN 0.60处发生。
使用这种机制,至少我们可以在解决崩溃问题方面迈出一步。

另一方面,如果有可靠的复制代码和环境,这将有所帮助。
例如,react-native-navigation有一个仓库。 它很有帮助。
https://github.com/react-native-community/jsc-android-buildscripts/issues/84#issue -407898908

如果有帮助,崩溃也会发生在Android 9的Pixel 2上。
运行APK时是否有任何获取崩溃日志的方法? 我很乐于帮助您获取有关这些崩溃的更多信息,但是我对Android开发了解不多。

@quietbits ,与这些问题有关的大多数日志不是超级有用,但要弄清楚它:

使用adb logcat查找崩溃发生的时间-它看起来像这样(不完全是,因为我只是从日志顶部提取了它,但是它显示了摘录,这就是为什么我要指出它出):

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
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

通常还会说日志是写到“墓碑”上的。

要删除墓碑,请使用adb bugreport ./MySuperSpecialBugReport ,而后者显然是您要插入的路径。

它会以zip格式发布,您可以将其解压缩,(在大多数设备上)导航至: ./MySuperSpecialBugReport/FS/data/tombstones ,然后可以使用文本编辑器打开墓碑。

同样,仅鉴于这些崩溃的性质,它们并不是超级有用的信息。 至少对于我们来说,它们通常与mqt_js一起使用,并且指针地址较低。 它们也仅在32位apk时出现(尽管越来越少/不可思议/不可预测)。

===

@Kudo-绝对希望能够更轻松地尝试不同的JSC并查看其功能。 到目前为止,升级到具有超级不确定性和不可预测的崩溃(有时仅在某些设备上……有时)的0.59是一个真正的痛点。

为了获得带符号的回溯,我曾经结合使用adb logcat和ndk-stack
例如,定位到RN 059股票JSC(即[email protected])和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

关于此问题有任何更新吗?

根据Google Play 64 bit support policy.删除64位不是解决方案,它可能会影响1 August 2019之后上线的应用程序。 我们希望对此问题有适当的解决方案。 @hramos对此有任何更新吗? 请引起注意。

大家好,我在0.59.8中有同样的问题,
我们希望对此问题有适当的解决方案。

你好
我正在帮助解决JSC崩溃问题,同时也是jsc-android-buildscripts的合作者。
RN 0.59 JSC实际上来自jsc-android-buildscripts

要解决崩溃问题,我们需要崩溃回溯。
希望请按照以下步骤操作以获取追溯并在此处发布。
然后,我可以跟进以找到潜在的解决方案。

安装ndk-build并执行命令:

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

三星S7似乎造成了很多崩溃。 不幸的是,我手头没有S7。
希望获得一些有用的信息,以进行进一步的故障排除。

@marlonchalegre

@Kudo这是我在RN 0.59.8的新项目上运行这些命令的日志
我尝试构建调试和发行版本,并通过日志自己编译jsc,每种情况下看起来都一样。

********** 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

我手头有一个S7,很乐意尝试运行其他任何东西来解决这个问题。

我的建议是在禁用JIT的情况下重新编译JSC。 操作系统中的安全机制可能会干扰JIT的
以某种不可预测的方式进行操作。

我已经复制了与@MalcolmScruggs相同的崩溃日志。 在S7上-Android 7.1.2-LineageOS 14.1。

在RN 0.59.8和master分支的最新版本上。

无需更改即可重现崩溃。 在屏幕上点击几下后,默认的RN模板会触发崩溃。

在此处回购-https: //github.com/AndrewJack/jsc_crash/tree/rn_master_branch
崩溃日志位于README.md中


后续步骤:在禁用JIT的情况下构建自己的JSC版本


如果有人在较新版本的Android上安装了S7,并且想降级。 这是我所做的:

下载此软件:

  1. 安装TWRP恢复(使用odin [需要Windows]或其他方法)
  2. 启动恢复
  3. 挂载存储
  4. 复制LineageOS rom&gapps程序包
  5. 安装Flash LineageOS和间隙图像
  6. 重启。

有了最新的反应本地主机和使用no_dfg_jit或无JIT@Kudo的叉,我不能重现崩溃。

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

@AndrewJack太神奇了,您发现我尝试过的构建是如此之快。
感谢您的反馈,很高兴知道这些版本为您解决了崩溃问题。

亲爱的,

我有两个实验过的JSC版本,请尝试这些是否可以为您解决崩溃问题。
这里有一个简单的步骤:
https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17

一种试验版本是禁用一种JIT。
另一个建议完全禁用@matthargett的JIT。
如果这两个版本将为您解决崩溃问题,也请按照我的要旨向我们反馈总体性能和TTI。

@工藤谢谢你! 您对那些构建中的并发GC有什么了解? 我看到提到的某个地方与32位版本相比有另一个差异,但是我当然找不到该评论了。 万一崩溃确实持续存在,可能还有另一件事值得一玩。

@wbercx是指并发GC还是并发JS(并发JIT)?
默认情况下,仅对arm64和x64启用并发GC。
并发GC可能与崩溃问题无关。 这可能与堆管理有关,而不与JIT有关。

我的两个版本均禁用了并发JS。
(默认情况下,只会启用ENABLE(DFG_JIT) && USE(JSVALUE64)

顺便说一句,JavaScriptCore中的JIT很复杂,我不是专家。
如果我错了,请随时指出。

@Kudo我尝试了您的no-jitno-dfg-jit实验性JSC版本,无法重现崩溃。 这似乎与@AndrewJack的报告一致。

我在一个基本项目上尝试过此操作,因此无法评论任何性能影响。

我有更多信息,我也看到了此崩溃:
三星Galaxy S7(herolte),Android 7.0
Oppo F7(CPH1819),Android 8.1

同样在0.58.5上发生。 Galaxy S7。 Android 6.0。 将其设置为32位版本也不起作用。

恢复到32位后,此处崩溃仍然还在发生

@MalcolmScruggs很高兴听到两个试验版本为您修复了崩溃。
我正在考虑禁用DFG_JIT,至少JIT选项与旧的JSC对齐。

@Kudo是否计划针对仅禁用DFG_JIT到受影响的设备/ CPU的修复进行定位?

是否有人尝试使用最新版本的React Native(0.59.8)来修复一些崩溃(发行说明中提到)?
https://github.com/facebook/react-native/releases

是否有人尝试使用最新版本的React Native(0.59.8)来修复一些崩溃(发行说明中提到)?
https://github.com/facebook/react-native/releases

在我的情况下,我使用的是0.59.8,从那以后我又恢复为0.57.8,因为似乎没有其他工作。 此错误特别严重,因为它会导致应用程序在打开后立即崩溃。 我的应用在评论中占了上风。

这些设备的信号11崩溃,但仅显示内存位置。

通用移动GM8 Go-Android 8.1
摩托罗拉Moto E-Android 7.1
三星Galaxy A6 +-Android 8.0
三星Galaxy Grand Prime Pro-安卓8.0
三星Galaxy Tab S2-安卓8.0
三星Galaxy J5 Prime-安卓8.0
三星Galaxy J6-Android 8.0
三星Galaxy J7 Max-Android 8.1

这些设备似乎显示有一个== / lib / arm64 / libjsc.so的错误。 我对内部工作原理还不了解,但这意味着什么,但希望对您有所帮助。

华为Y9-Android 8.1
Oppo RMX1811-安卓8.1
Oppo R15-Android 8.1
摩托罗拉Moto X-Android 9.0
诺基亚3-Android 8.1
三星Galaxy Note9-Android 9.0
三星Galaxy S9-Android 9.0
Xaomi Redmi Note 5 Pro-安卓8.1

我可以将一些设备添加到@ harryt2列表中。

仅存储位置的信号11崩溃:

三星Galaxy Note 9-Android 9.0
华为荣誉8X-Android 9.0
三星Galaxy A7(2018)-安卓9.0
三星Galaxy S9-Android 9.0
三星Galaxy A6 +-Android 9.0
诺基亚诺基亚8-Android 9.0
华为华为P30精简版-Android 9.0
三星Galaxy Note8-Android 9.0
三星Galaxy A9-Android 8.0
三星Galaxy S7-Android 8.0
...
这份清单继续列出了65种不同的设备以及7.0至9.0之间的Android版本。

该错误并不总是在此设备上发生。 但是,这确实令人担忧,因为在Google Play中报告的我的应用程序的崩溃率从0.57.8更改为0.59.5后,从0.16%更改为1.02%。

0.57.8:
Bildschirmfoto 2019-05-22 um 09 53 12

0.59.5:
Bildschirmfoto 2019-05-22 um 09 52 05

我不是Android开发方面的专家,也不了解崩溃的原因。 如果有帮助,我可以提供更多数据。

在我们的项目@ntorion我们仍然看到三星S7这些崩溃,反应母语0.59.8我害怕。

目前对此有什么解决方案?
我已经在两个不同的银河笔记9中进行了测试,每个电话都会立即崩溃

{"dependencies": {
    "axios": "^0.18.0",
    "prop-types": "^15.7.2",
    "react": "16.8.3",
    "react-native": "0.59.8",
    "react-native-gesture-handler": "^1.2.1",
    "react-native-iphone-x-helper": "^1.2.0",
    "react-native-linear-gradient": "^2.5.4",
    "react-native-vector-icons": "^6.4.2",
    "react-navigation": "^3.11.0",
    "react-redux": "^7.0.3",
    "reactotron-react-native": "^3.5.2",
    "reactotron-redux": "^3.1.0",
    "reactotron-redux-saga": "^4.2.2",
    "realm": "^2.27.0",
    "redux": "^4.0.1",
    "redux-saga": "^1.0.2",
    "reduxsauce": "^1.1.0",
    "seamless-immutable": "^7.1.4",
    "styled-components": "^4.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.4.5",
    "@babel/runtime": "^7.4.5",
    "babel-eslint": "^10.0.1",
    "babel-jest": "^24.8.0",
    "babel-plugin-root-import": "^6.2.0",
    "eslint": "^5.16.0",
    "eslint-config-airbnb": "^17.1.0",
    "eslint-import-resolver-babel-plugin-root-import": "^1.1.1",
    "eslint-plugin-import": "^2.17.2",
    "eslint-plugin-jsx-a11y": "^6.2.1",
    "eslint-plugin-react": "^7.13.0",
    "eslint-plugin-react-native": "^3.7.0",
    "jest": "^24.8.0",
    "metro-react-native-babel-preset": "^0.54.1",
    "react-test-renderer": "16.8.3"
  }}

@matpaul @Kudo我可以确认这个js核心的实验版本似乎也为我们解决了这个问题(在Samsung s7上进行了测试)。

当我降级为0.58.6时,与此跟踪相关的崩溃在Android上消失57.6 ,但是58.6似乎已经为我解决了这个问题(尽管我不得不缓解

@工藤

亲爱的,

我有两个实验过的JSC版本,请尝试这些是否可以为您解决崩溃问题。
这里有一个简单的步骤:
https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17

一种试验版本是禁用一种JIT。
另一个建议完全禁用@matthargett的JIT。
如果这两个版本将为您解决崩溃问题,也请按照我的要旨向我们反馈总体性能和TTI。

@工藤我在这里有两个观察,正如您的要点中所述

  • 当使用我们的生产应用程序之一几分钟时,应用程序会挂起@kudo-ci/jsc-android@241213-no-dfg-jit依赖性。
  • 应用在@kudo-ci/jsc-android@241213-no-jit依赖性as of now ,TTI与以前的版本相同/不明显。

工藤,您的拉取请求足以解决此问题,因为在对no_dfg_jit进行测试时,我注意到该应用程序已挂起

这里有更多更新:
我真的怀疑本地崩溃是否很容易在S7边缘发生,是否应该有其他应用程序遇到此类问题。
知道了!
带有Text API的Google Play服务存在此问题,但没有OSS修复
Mono在S7 Exynos bit.LITTLE拱上发现了一个崩溃问题这是修复程序

JavaScriptCore确实在ARM64Assembler中使用了__clear_cache
我将在本周晚些时候尝试另一个用于修补__clear_cache的版本。

修复__clear_cache经过实验的版本已准备就绪。

步骤与之前相同,但仅使用不同的npm依赖项。

  1. yarn add '@kudo-ci/jsc-android@241213-fix-clear-cache-dfg'和已确认的adb logcat版本241213.8000.0在此处引用源代码
  2. yarn add '@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg'和已确认的adb logcat版本241213.9000.1 (请参见此处的参考源代码

很抱歉,我无法再次验证崩溃问题,而只能验证基本功能。
如果可能,请帮助测试这两个实验性JSC。
非常感谢大家,并祝我们这次运气好。

抄送@AndrewJack @MalcolmScruggs @tijs @ishantsagar @timhatch

@Kudo我现在对使用@kudo-ci/jsc-android@241213-fix-clear-cache-dfg@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg测试版本都有反馈。
到目前为止,两个测试版本在Samsung Galaxy S7 Edge / Android 7.0上似乎都没有崩溃(到目前为止,是问题组合)

@Kudo我在运行React-Native 0.59.8的基本项目上尝试了@kudo-ci/jsc-android@241213-fix-clear-cache-dfg@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg ,并且在这两个版本上都没有发生崩溃。 我在android 7.0的Samsung Galaxy S7上进行了测试:

[ro.product.board]: [universal8890]
[ro.product.brand]: [samsung]
[ro.product.cpu.abi]: [arm64-v8a]
[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: [arm64-v8a]
[ro.product.device]: [herolte]
[ro.product.first_api_level]: [23]
[ro.product.locale]: [en-GB]
[ro.product.manufacturer]: [samsung]
[ro.product.model]: [SM-G930F]
[ro.product.name]: [heroltexx]

@Kudo我尝试了最新的@kudo-ci/jsc-android@241213-fix-clear-cache-dfg但是我在Samsung Galaxy S5(SM-G900F)上遇到了崩溃,类似于我们在React Native 0.59.8中使用JSC遇到的崩溃

没有JIT的版本运行良好( @kudo-ci/jsc-android@241213-no-jit ),并且无论我将应用程序推到极限的程度,都没有遇到任何崩溃。 因此,我认为我们现在将继续使用该选项。

我们在viewpager中使用ReactRootViews,因此我们经常创建和销毁react-native实例,这似乎触发了崩溃。 这可能就是为什么我们比大多数人更经常遇到此问题的原因。 目前,我们正在重新使用viewpager方法,但是与此同时,我希望这个崩溃日志会有所帮助。 (适用于版本241213.8000.0 ,react-native 0.59.8)

A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x66 in tid 16184 (mqt_js)
D/InputReader: Input event: value=1
I/InputReader: Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.1239 ] when=8467503214000
I/InputDispatcher: Delivering touch to (1173): action: 0x4, toolType: 1
I/InputDispatcher: Delivering touch to (16117): action: 0x0, toolType: 1
I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG: Build fingerprint: 'samsung/kltexx/klte:5.0/LRX21T/G900FXXU1BOH4:user/release-keys'
I/DEBUG: Revision: '14'
I/DEBUG: ABI: 'arm'
I/DEBUG: pid: 16117, tid: 16184, name: mqt_js  >>> uk.co.thetimes.debug <<<
I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x66
I/DEBUG:     r0 00000036  r1 8cc43b20  r2 8e558040  r3 fffffffb
I/DEBUG:     r4 00000000  r5 91800000  r6 8c752df0  r7 92efea88
I/DEBUG:     r8 fffffffb  r9 8cce0000  sl 91a08821  fp fffffffc
I/DEBUG:     ip 8c752df0  sp 92efe8e0  lr 91d970a9  pc 91ea6502  cpsr 600b0030
I/DEBUG: backtrace:
I/DEBUG:     #00 pc 004a7502  <unknown>
I/DEBUG:     #01 pc 003980a7  <unknown>

可悲的是我们已经在那里了。

我们已经从Play商店中撤出了64位版本。 这可能与64位版本中的崩溃根本不相关,但是运行armeabi-v7a版本的Galaxy S7设备现在崩溃的情况很多,如下所示。 启动后立即。

真的很想知道S7与其他设备相比有何不同。

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)

我们在内部已经看到了这一点,并注意到我们的某些样式属性有条件地返回null。 删除该内容并仅有条件地添加style属性可解决类似的异常-本地模块类型可能会发生某些变化?

@tuncaulubilge感谢您提供信息。
再次确认三星S5(SM-G900F)是arm(不是arm64)架构,对吗?
您可以通过adb shell getprop ro.product.cpu.abi
从崩溃日志中看,它似乎是手臂。

如果是这样,我认为根本原因应该是这里的故事。
您是否曾经测试过no-dfg-jit版本,即@kudo-ci/jsc-android@241213-no-dfg-jit@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg
这两个版本在arm32上应该相同,您可以只测试其中一个。

@工藤更新

通过开发者控制台报告回溯的原始问题(在[专有] Samsung S7 Edge + Android 7.0上启动应用程序时,可重复崩溃)如下所示:

 #00  pc 00000000007e048c  /data/app/org.ifsc.boulder14-1/lib/arm64/libjsc.so (WTFCrash+16)
 #01  pc 00000000000be650  /data/app/org.ifsc.boulder14-1/lib/arm64/libjsc.so (_Z16WTFCrashWithInfoiPKcS0_i+24)
 #02  pc 0000000000489f2c  /data/app/org.ifsc.boulder14-1/lib/arm64/libjsc.so (operationLinkDirectCall+1120)
 #03  pc 00000000002149a8  <unknown>

原始问题似乎由以下每个版本修复:
@kudo-ci/jsc-android@241213-no-jit
@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg
@kudo-ci/jsc-android@241213-fix-clear-cache-dfg

但是,我设法在不同的设备上使用了不同的回溯,两次导致了最后一次崩溃( @kudo-ci/jsc-android@241213-fix-clear-cache-dfg ):

  #00  pc 00000000004886ac  /data/app/org.ifsc.boulder14-ECb5NhJUQgyp_UkWAZLdKg==/lib/arm64/libjsc.so (operationLinkDirectCall+176)
  #01  pc 000000000043ad90  <anonymous>

尽管我设法使测试应用程序两次崩溃,但每次崩溃都具有相同的签名,但是崩溃不是系统可重复的,而是在测试应用程序中不同屏幕之间的导航期间发生的,而不是在启动时发生的。 随着相关设备的到来,我已经能够从设备中获取更完整的跟踪,内容如下:

05-29 15:39:06.132  9361  9361 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1c
05-29 15:39:06.132  9361  9361 F DEBUG   : Cause: null pointer dereference
05-29 15:39:06.132  9361  9361 F DEBUG   :     x0  0000007363fc4900  x1  000000735b75a000  x2  0000000000000004  x3  0000000000000000
05-29 15:39:06.132  9361  9361 F DEBUG   :     x4  000000736470caa0  x5  e805b658e92d4328  x6  0000007368dfc8f0  x7  0000000000000000
05-29 15:39:06.132  9361  9361 F DEBUG   :     x8  0000000000000007  x9  0000000000000000  x10 0000007364d39d80  x11 0000000000000040
05-29 15:39:06.132  9361  9361 F DEBUG   :     x12 0000007364d39d80  x13 000000000000b324  x14 00000000ffdaeb75  x15 00000073609a09c0
05-29 15:39:06.132  9361  9361 F DEBUG   :     x16 000000736a1515fc  x17 00000073647121a8  x18 0000000000000002  x19 000000735b75a000
05-29 15:39:06.132  9361  9361 F DEBUG   :     x20 0000007368dfca10  x21 0000007363f0c070  x22 0000007364700000  x23 0000000000000004
05-29 15:39:06.132  9361  9361 F DEBUG   :     x24 0000000000000000  x25 0000000000000007  x26 0000000000000000  x27 ffff000000000000
05-29 15:39:06.132  9361  9361 F DEBUG   :     x28 ffff000000000002  x29 0000007368dfca10
05-29 15:39:06.132  9361  9361 F DEBUG   :     sp  0000007368dfc920  lr  000000736a1516ac  pc  000000736a1516ac
05-29 15:39:06.154  9361  9361 F DEBUG   : 
05-29 15:39:06.154  9361  9361 F DEBUG   : backtrace:
05-29 15:39:06.154  9361  9361 F DEBUG   :     #00 pc 00000000004886ac  /data/app/org.ifsc.boulder14-ECb5NhJUQgyp_UkWAZLdKg==/lib/arm64/libjsc.so (operationLinkDirectCall+176)
05-29 15:39:06.154  9361  9361 F DEBUG   :     #01 pc 000000000043ad90  <anonymous:00000073648ff000>

05-29 15:10:13.010  7853  7853 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1018
05-29 15:10:13.010  7853  7853 F DEBUG   :     x0  00000073642c6c40  x1  0000007359684500  x2  0000000000001000  x3  0000000000000000
05-29 15:10:13.010  7853  7853 F DEBUG   :     x4  00000073008a3030  x5  000000000000006d  x6  00000000ffffffff  x7  cb010063d1004021
05-29 15:10:13.010  7853  7853 F DEBUG   :     x8  0000000000000007  x9  0000000000000000  x10 00000073651159c0  x11 0000000000000040
05-29 15:10:13.010  7853  7853 F DEBUG   :     x12 00000073651159c0  x13 000000736a744558  x14 000000736249dc00  x15 000000736928a2e8
05-29 15:10:13.010  7853  7853 F DEBUG   :     x16 000000736a1575fc  x17 0000007364a121a8  x18 0000000000000045  x19 0000007359684500
05-29 15:10:13.010  7853  7853 F DEBUG   :     x20 000000736928a2a0  x21 0000007362fb7700  x22 0000007364a00000  x23 0000000000001000
05-29 15:10:13.010  7853  7853 F DEBUG   :     x24 0000000000000000  x25 0000000000000007  x26 0000000000000000  x27 ffff000000000000
05-29 15:10:13.010  7853  7853 F DEBUG   :     x28 ffff000000000002  x29 000000736928a2a0
05-29 15:10:13.010  7853  7853 F DEBUG   :     sp  000000736928a110  lr  000000736a1576ac  pc  000000736a1576ac
05-29 15:10:13.024  7853  7853 F DEBUG   : 
05-29 15:10:13.024  7853  7853 F DEBUG   : backtrace:
05-29 15:10:13.024  7853  7853 F DEBUG   :     #00 pc 00000000004886ac  /data/app/org.ifsc.boulder14-ECb5NhJUQgyp_UkWAZLdKg==/lib/arm64/libjsc.so (operationLinkDirectCall+176)
05-29 15:10:13.024  7853  7853 F DEBUG   :     #01 pc 00000000005169d8  <anonymous:0000007364bff000>

不知道这是否有帮助,我之前没有做过Android上的崩溃调试和解释工作

@Kudo这是我的发现:

三星S5是armeabi-v7a 。 我已经尝试了您提供的所有4种选择,而没有jit的选择似乎是唯一没有崩溃的选择。 禁用dfg可以大大降低崩溃率,但是我仍然可以使它崩溃。

我也在Pixel XL( arm64-v8a )上进行测试,尚未在kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg上遇到任何崩溃,但由于根本原因似乎无法在高端设备上重现崩溃内存压力低。

总结一下:
@kudo-ci/jsc-android@241213-no-jit :两个设备上均无崩溃
@kudo-ci/jsc-android@241213-fix-clear-cache-no-dfg :这确实会在低端设备上崩溃,无法在高端设备上重现
@kudo-ci/jsc-android@241213-fix-clear-cache-dfg :与低端设备上的其他构建相比,此崩溃更频繁。 (仍然比RN 59 jsc股票更好)
@kudo-ci/jsc-android@241213-no-dfg-jit :这在低端设备上也崩溃了,我还没有在高端设备上进行过测试。

即使没有jit的构建也比库存JSC快得多,因此我们计划使用@kudo-ci/jsc-android@241213-no-jit并且我们将对其进行更多的测试以确保其投入生产。

非常感谢您提供的所有帮助。 让我知道我是否有帮助

@timhatch @tuncaulubilge感谢您的
现在,我真的不知道要解决这个问题。
禁用DFG或修复__clear_cache都无济于事。
此外,崩溃也发生在arm32上(并且根本原因可能与arm64不同)

以我个人的观点,我想默认情况下完全禁用JIT,至少是要确保我们首先拥有无崩溃的JSC。
顺便说一句@tuncaulubilge ,您如何衡量@kudo-ci/jsc-android@241213-no-jit比股票JSC快?
只是好奇,因为从基准测试结果来看,无记号版本的运行速度稍慢一些。

@Kudo您是否还测量应用程序的启动时间和内存使用情况? 我一直以为没有JIT,这两个指标会更好。 由于大多数应用程序的UI繁重,因此我不确定JIT在现实世界中的应用程序是否会带来很多好处,因此,我希望禁用JIT以改善启动和内存使用率。 我也很好奇,如果没有JIT,JSC是否会占用较小的磁盘空间。

@工藤
像在这些测试版本中所做的那样,修复__clear_cache肯定可以改善这种情况,但是该修复会产生副作用,或者是尚不明显的更复杂的交互。 也就是说,我无法再次使-fix-clear-cache-dfg测试应用崩溃。 就像@tuncaulubilge所说,行为可能取决于内存压力和/或其他因素。

完全禁用JIT似乎是“无崩溃”选项,我没有注意到此选项会降低性能,因此它是“安全”的选择。

@Kudo澄清@kudo-ci/jsc-android@241213-no-jit

我没有做任何测量,但是性能改善非常明显。 我希望no jit版本比您提到的[email protected]慢一些,但是相比之下这是可以忽略的。 我建议也将no-jit版本作为默认选项,因为稳定性的提高远远超过了jit带来的次要性能提高。

我们正在使用Expo v32来构建我们的应用程序,并且在Android版本和设备上看到此错误。

Screen Shot 2019-05-31 at 16 11 49
Screen Shot 2019-05-31 at 16 11 32

@ tido64 TTI没有太大区别。 二进制文件的大小从no_dfg版本减少了大约1MB。 内存减少约48%。
我已发送PR完全禁用JIT,并且有测量结果。
https://github.com/react-native-community/jsc-android-buildscripts/pull/108

@timhatch
我仍然怀疑根本原因是来自big.LITTLE,但是我还没有找到其他引起问题的JSC代码。
三星S5和S7都很大。小和两个CPU的缓存行大小不同。
这也许就是为什么我无法在Samsung Note 5上重现崩溃的原因,它的两个CPU设置的缓存行大小均为64B。
不确定OS调度程序和JSC是否可以在运行时在大型<-> LITTLE CPU之间转换。
如果属实,则该问题可能在那时特别发生。

@tuncaulubilge这对我很好奇。
您可以检查一下我的PR ,无记号版本比库存的RN058 JSC慢。
这也是我在测量过程中的感受。
基准测试可能是极端情况,而不像以前的RN应用程序那样。
顺便说一句,我确实看到二进制大小和内存大小比no-jit版本有所减少。
这两个好处和无崩溃对我来说更合理。

@RomanovYurii当我们从build.gradle的defaultConfig块中的ndk abiFilters中删除64位ndk过滤器“ arm64-v8a”,“ x86_64”时,仅提供32位支持。 崩溃已经消失了,但是根据Google 64位支持的要求,必须通过64位ndk支持来解决。

25060

@dishantwalia @Kudo禁用的JIT在64位系统上对我有效,并且到目前为止未发现任何性能问题。

亲爱的,

我们已经将no-JIT JSC发布到了jsc-android npm中,我修改了以前的要点,以使用jsc-android@next
https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17
希望能解决所有崩溃问题。
如果性能没有明显下降,我们将正式建议no-JIT版本作为@latest版本,并发送PR使其内置在较新的RN中。

亲爱的,

我们已经将no-JIT JSC发布到了jsc-android npm中,我修改了以前的要点,以使用jsc-android@next
https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17
希望能解决所有崩溃问题。
如果性能没有明显下降,我们将正式建议no-JIT版本作为@latest版本,并发送PR使其内置在较新的RN中。

谢谢@Kudo disable-jit对我们来说就像一个魅力!

感谢@Kudo的辛勤工作! 241213.2.0似乎已为我们解决了崩溃问题。 不幸的是,性能影响非常显着。 在某些繁忙的屏幕上的低端设备上,我们发现js fps降低了20-30%。

我还可以确认崩溃已消失,但我们还发现低端设备的性能相当差。 考虑到我们一直在等待升级到更现代的JSC到RN58 / RN59,这让我非常失望。

@kudo最坏的情况下,应该仅对64位版本禁用jit,只有支持64位的设备崩溃

@yenda如果该构建确实成为修复,那么拥有该选项将是不错的。 不知道会有多困难。 希望这并不意味着将发行两个版本的JSC

@benoitdion @ItsNoHax您可以列出观察到其性能不佳的特定设备吗? 谢谢!

在Nexus 5和Samsung Tab E等设备上进行了测试。

对于将其RN项目升级到59.x的所有Google员工,请确保android/app/build.gradle -> android {defaultConfig {versionName}}与您的react-native-code-push指定版本不匹配。

我为同一问题苦苦挣扎了三天,后来发现我的v59.3升级后的React Native项目正在通过具有React Native v54.7的code-push进行更新。

对于90%的人来说并非如此。 但是对于像我这样的人,可以节省时间。

之后,感谢@Kudo。 修复了崩溃问题。

华为荣耀8X也有这个问题

我还可以确认崩溃已消失,但我们还发现低端设备的性能相当差。 考虑到我们一直在等待升级到更现代的JSC到RN58 / RN59,这让我非常失望。

同样在这里。 Android上的旧RN缓慢且崩溃,新RN迅速且崩溃,并且通过此修复,新RN稳定且缓慢。 似乎我们无法在Android上拥有全部功能。 🙈

亲爱的,

非常抱歉,对于非JIT版本的性能表现不佳。
很抱歉,我目前没有解决方案。
对我来说,很难重现无法重现的问题。
希望社区中有人可以帮助解决问题。

适用于RN的JSC是位于https://github.com/react-native-community/jsc-android-buildscripts的OSS
它支持通过在https://github.com/react-native-community/jsc-android-buildscripts/blob/master/scripts/start.sh#L10中取消注释行来启用调试构建
附加gdb或lldb以进行本机调试,也许会有一些线索。
崩溃可能违反了https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.22.6/Source/JavaScriptCore/jit/JITOperations.cpp#L1067中的RELEASE_ASSERT,但不确定问题如何到州。

感谢您为此所做的所有工作以及jsc-android-buildscripts @Kudo。 随着您的进步,这真是太神奇了! 我们(关注此问题的社区)可以做些什么来帮助您? 我相信@tuncaulubilge的repro案基本稳定。

也许内部Facebook反应本地团队有jsc专家?

我刚刚遇到此问题,仅在REAL DEVICE,LENOVO A701a48,RUNNING ANDROID 6上发生。
从中删除"arm64-v8a", "x86_64"

ndk {
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
 }

确实解决了它,但感觉有点骇人听闻。

希望有RN的团队尽快更新:(

亲爱的,

这可能是我最后的尝试-使用较新的WebKit版本。
@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg基于WebKitGTK 2.24.2,具有基线JIT但没有DFG JIT。
一个显着的变化是,新的WebKit更改了JIT字节码格式。
不支持x86的JIT,armeabi-v7a JIT支持来自社区(感谢Igalia)。
由于崩溃仅发生在arm64上,因此仍然值得尝试新版本。

集成此版本的详细步骤位于https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17#file -steps_for_webkitgtk_2_24_2-md。
值得注意的变化是241213 -> 245459与以前的JSC版本相同,并确保adb日志中有245459.9000.0
请帮助验证此经过实验的JSC。
希望这次我们能走运。 🤞

@benoitdion感谢您的鼓励❤️

@Kudo @kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg可以正常工作!

可以确认使用上述JSC后,RN v0.59所发生的崩溃已消失。 在Google Nexus 6中经过测试后,其他产品将在推出后得到确认。

谢谢!!

@Kudo我可以确认@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg对我有用。 在RN v0.59之前的三星Galaxy S7 SM-G930FD中没有发生崩溃,并已通过no-jitjsc-android v241213.2.0进行了修复。

我还没有机会集成这个新版本,因为我还有其他一些项目里程碑正在计划中,但计划在这些目标完成之后立即进行。

@Kudo最初的no-dfg可以修复我所见过的崩溃的99%,尽管我能够刺激一次崩溃,但是却无法重复。

我相信@tuncaulubilge能够使用原始no-dfg版本重现崩溃,因此很有趣的是,看看他对这个新版本的理解。

@rimzici @dishantwalia @timhatch感谢您的帮助。

@tuncaulubilge如果您有时间,可以请您帮忙验证最新的实验版本吗?
IIRC,只有您和@timhatch上次报告了从“ 241213 -fix-clear-cache-no-dfg”崩溃的情况。
希望我们可以通过更新的版本修复崩溃问题。
谢谢。

@工藤
Error when loading lib: dlopen failed: "/data/data/com.amiclient.qa/lib-main/librealmreact.so" is 32-bit instead of 64-bit lib hash: 28b81ed6ba5d3bb31c51509ac8150cd4 search path is /data/app/com.amiclient.qa-1/lib/arm64
在ZTE Blade,Samsung S8,OnePlus 6上集成了@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg之后,就会出现此问题。仅在Motorola Z2 Android 7.1.1上开始构建!

@工藤
Error when loading lib: dlopen failed: "/data/data/com.amiclient.qa/lib-main/librealmreact.so" is 32-bit instead of 64-bit lib hash: 28b81ed6ba5d3bb31c51509ac8150cd4 search path is /data/app/com.amiclient.qa-1/lib/arm64
在ZTE Blade,Samsung S8,OnePlus 6上集成了@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg之后,就会出现此问题。仅在Motorola Z2 Android 7.1.1上开始构建!

这似乎与realm请检查https://github.com/realm/realm-js/issues/2261#issuecomment -468691502
https://github.com/realm/realm-js/issues/2221

@Kudo再次感谢您的出色工作! 不幸的是,我已移至新项目,而无法再访问旧项目。 我将尝试联系我的旧队友,并请某人尝试一下。

特别是在reactRootView.unmountReactApplication ,我们发生了崩溃,这会触发垃圾回收,从而导致偶发的崩溃。 您可能可以使用示例应用程序重现它,创建并销毁ReactRootViews。

@工藤
Error when loading lib: dlopen failed: "/data/data/com.amiclient.qa/lib-main/librealmreact.so" is 32-bit instead of 64-bit lib hash: 28b81ed6ba5d3bb31c51509ac8150cd4 search path is /data/app/com.amiclient.qa-1/lib/arm64
在ZTE Blade,Samsung S8,OnePlus 6上集成了@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg之后,就会出现此问题。仅在Motorola Z2 Android 7.1.1上开始构建!

这似乎与realm请检查realm / realm-js#2261(评论)
realm / realm-js#2221

非常感谢! 只需将领域更新为2.28。
@工藤特别感谢。 我的应用程序已正确运行!

@Kudo我已经使用以前的测试重新构建了以前受影响的应用程序版本,但使用@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg
到目前为止,还没有崩溃或挂起-我将看看我是否可以在整个周末对应用程序进行压力处理,如果遇到任何问题,请向我报告。

@timhatch非常感谢,请在周末花费您的时间。
手指交叉,下次可以听到您的好消息。

我无法使用此修补程序进行构建。 我从FBSDK中收到以下错误:

``
任务:react- native- fbsdk:compileReleaseJavaWithJavac失败
/用户/ waltermonecke /文档/代码/ React-Native2 / moodPixel / node_modules / react-native-fbsdk / android / src / main / java / com / facebook / reactnative / androidsdk / FBAppEventsLoggerMod
ule。 java:209 :错误:找不到符号
@ReactMethod(isBlockingSynchronousMethod = true)
^
符号:method isBlockingSynchronousMethod()
位置: @interface ReactMethod
注意:某些输入文件使用或覆盖不推荐使用的API。
注意:有关详细信息,请使用-Xlint:deprecation重新编译。
注意:/Users/waltermonecke/Documents/Code/React-Native2/moodPixel/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java使用未经检查或不安全的操作。
注意:使用-Xlint:unchecked重新编译以获取详细信息。
1个错误

失败:生成失败,发生异常。
``

@wmonecke这个问题对我来说似乎很奇怪。 我没有碰到JSC AAR中的任何Java代码或gradle依赖项。
您能否检查一下该问题,或简要描述一下如何应用补丁?
我猜你不小心使用了旧的RN依赖关系,
您可以通过./gradlew :app:dependencies | grep 'com.facebook.react:react-native:'进行验证(请确保返回的RN版本符合您的预期)。

我无法使用此修补程序进行构建。 我从FBSDK中收到以下错误:

Task :react-native-fbsdk:compileReleaseJavaWithJavac FAILED
/Users/waltermonecke/Documents/Code/React-Native2/moodPixel/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerMod
ule.java:209: error: cannot find symbol
     @ReactMethod(isBlockingSynchronousMethod = true)
                                                ^
  symbol:   method isBlockingSynchronousMethod()
  location: <strong i="7">@interface</strong> ReactMethod
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/waltermonecke/Documents/Code/React-Native2/moodPixel/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

FAILURE: Build failed with an exception.

@wmonecke,您必须同时添加(react-native和kudo ci)maven存储库才能进行编译
专家{
//所有React Native(JS,Obj-C源代码,Android二进制文件)都是从npm安装的
网址“ $ rootDir /../ node_modules / react-native / android”
}

专家{
//包含AAR的本地Maven存储库,该库具有为Android构建的JSC库
网址“ $ rootDir /../ node_modules / @ kudo-ci / jsc-android / dist”
}

@Kudo @kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg没有问题。 没有应用程序挂起或崩溃。

@Kudo @kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg没有问题。 没有应用程序挂起或崩溃。

@Kudo请在jsc-android-buildscripts推送该修复程序并发布一个版本。 因此,我们可以在生产应用程序https://github.com/react-native-community/jsc-android-buildscripts中推出该功能

@timhatch太棒了! 特别感谢您的验证。 即将将JSC更改推入RN。

@dishantwalia是的,正在进行中。 谢谢。

感谢@Kudo为您所做的所有工作。 您(或其他知道正在发生什么情况的人)能否请您以正确的方向指导我实施此修复程序(我意识到这是一项正在进行的工作)。

我目前使用RN 0.59.9。 随着更改的推出,是否将提供RN的更新版本,例如0.59.10,或者我应该安装jsc-android-buildscripts作为第三方软件包,并根据文档实施0.59x?

@Kudo您的最新版本也没有问题。 做得好! 💪

谢谢@Kudo ,我有一个同样的问题@jacquesdev在问0.59.10还是jsc-android-buildscripts

@工藤@dishantwalia
谢谢! 我只是保持:
maven { // workaround for crash on 64 bit devices - remove once RN 59+ has resolved issue. // issue: https://github.com/facebook/react-native/issues/24261 url "$rootDir/../node_modules/@kudo-ci/jsc-android/dist" }

与build.gradle

@Kudo不幸的是问题仍然存在(Galaxy S7,Android7)。 我已经尝试过@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg

我还尝试了无JIT版本,但没有帮助。 我没有设法使用您提供的grep在adb logcat中打印出“ JavaScriptCore”版本,也没有通过手动查找在日志本身中看到任何JavaScriptCore。

我可以经常重现崩溃。 它并不总是在同一位置崩溃。

这是错误(245459-fix-clear-cache-no-dfg):

06-26 13:56:22.982  4374  4521 W google-breakpad: Chrome build fingerprint:
06-26 13:56:22.982  4374  4521 W google-breakpad: 3.0.70
06-26 13:56:22.982  4374  4521 W google-breakpad: 30070
06-26 13:56:22.982  4374  4521 W google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
06-26 13:56:22.984  4374  4521 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0xafca in tid 4521 (mqt_js)
06-26 13:56:22.986  3075  3075 W         : debuggerd: handling request: pid=4374 uid=10169 gid=10169 tid=4521
06-26 13:56:23.089  3769  5715 D SSRM:k  : SIOP:: AP = 430, PST = 398 (W:6), CP = 318, CUR = -104, LCD = 99
06-26 13:56:23.154  4557  4557 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-26 13:56:23.156  4557  4557 F DEBUG   : Build fingerprint: 'samsung/hero2ltexx/hero2lte:7.0/NRD90M/G935FXXU1ZPL3:user/release-keys'
06-26 13:56:23.156  4557  4557 F DEBUG   : Revision: '8'
06-26 13:56:23.156  4557  4557 F DEBUG   : ABI: 'arm64'
06-26 13:56:23.157  4557  4557 F DEBUG   : pid: 4374, tid: 4521, name: mqt_js  >>> com.myapp <<<
06-26 13:56:23.157  4557  4557 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xafca
06-26 13:56:23.157  4557  4557 F DEBUG   :     x0   000000000000a01a  x1   0000000000000000  x2   00000079f6a30000  x3   0000007a05afe748
06-26 13:56:23.157  4557  4557 F DEBUG   :     x4   0000000000000000  x5   0000000000000010  x6   ffff000000000002  x7   0000000000009ab0
06-26 13:56:23.158  4557  4557 F DEBUG   :     x8   0000007a045acd6c  x9   0000000000000002  x10  0000000000000001  x11  0000000000000000
06-26 13:56:23.158  4557  4557 F DEBUG   :     x12  0000000000000fff  x13  00000079df7ed2b8  x14  00000079f6973890  x15  0000000000000001
06-26 13:56:23.158  4557  4557 F DEBUG   :     x16  00000079f6a59a30  x17  0000007a1ae56058  x18  000000000045b4fb  x19  0000007a05afe7f0
06-26 13:56:23.158  4557  4557 F DEBUG   :     x20  0000007a05afe750  x21  00000079f6a3a6b8  x22  0000007a1ae4b000  x23  00000079f693cf50
06-26 13:56:23.158  4557  4557 F DEBUG   :     x24  0000000000000000  x25  00000079df415e10  x26  0000000000000001  x27  ffff000000000000
06-26 13:56:23.158  4557  4557 F DEBUG   :     x28  ffff000000000002  x29  0000007a05afe750  x30  0000007a045ac890
06-26 13:56:23.158  4557  4557 F DEBUG   :     sp   0000007a05afe640  pc   0000007a045a27e4  pstate 0000000040000000
06-26 13:56:23.173  4557  4557 F DEBUG   : 
06-26 13:56:23.173  4557  4557 F DEBUG   : backtrace:
06-26 13:56:23.173  4557  4557 F DEBUG   :     #00 pc 00000000001647e4  /data/app/com.test.app-1/lib/arm64/libjsc.so
06-26 13:56:23.173  4557  4557 F DEBUG   :     #01 pc 000000000016e88c  /data/app/com.test.app-1/lib/arm64/libjsc.so
06-26 13:56:23.173  4557  4557 F DEBUG   :     #02 pc 000000000016ebf0  /data/app/com.test.app-1/lib/arm64/libjsc.so
06-26 13:56:23.173  4557  4557 F DEBUG   :     #03 pc 000000000016ed8c  /data/app/com.test.app-1/lib/arm64/libjsc.so
06-26 13:56:23.173  4557  4557 F DEBUG   :     #04 pc 0000000000005ecc  <anonymous:00000079eb5f9000>

回溯没有说任何有意义的事情。

我还要提到,我在Galaxy S7上没有官方的Android7,因为不可能从Android8降级(Android8无法产生问题),因此我不得不找到支持Android7的自定义rom。

我正在研究尝试使用对jsc-android-buildscripts的最后一次提交来编译自己的jsc-android调试版本,但是这将花费我一段时间。

我相信我们有同样的问题。

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.groundspeak.react.adventures <<<

backtrace:
  #00  pc 00000000007e048c  /data/app/com.groundspeak.react.adventures-1/lib/arm64/libjsc.so
  #01  pc 00000000000be650  /data/app/com.groundspeak.react.adventures-1/lib/arm64/libjsc.so
  #02  pc 0000000000489f2c  /data/app/com.groundspeak.react.adventures-1/lib/arm64/libjsc.so
  #03  pc 000000000025fd98  <anonymous>

通过Android版本:

版本| 编号百分
-| -| -
Android 7.0 | 66 | 100.0%

按设备:

设备| 编号百分
-| -| -
hero2lte | 26 | 39.4%
herolte | 24 | 36.4%
heroltebmc | 16 | 24.2%

将RN从0.58.6更新为0.59.9后,我也一直在遭受Galaxy S7崩溃。

当前jsc-android npm版本仍然会使应用程序崩溃,但是使用@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg和JSC版本245459.9000.0解决我在S7上的崩溃问题。

@ChrisEelmaa adb logcat中的“ JavaScriptCore.Version”日志是一种确认选择正确的JSC版本的方法。
因为RN 0.59具有内置的libjsc.so和pickFirst'** / libjsc.so'在我看来不可靠。

确认JSC版本的另一种方法是执行以下步骤:

  1. 解压缩/path/to/app.apk
  2. 字符串jni / arm64-v8a / libjsc.so | grep -C 1 JavaScriptCore.Version

输出应该是这样的:

$ strings jni/arm64-v8a/libjsc.so|grep -C 1 JavaScriptCore.Version                                                                                                   
API Wrapper
JavaScriptCore.Version
245459.9000.0

@Kudo感谢您的修复,它似乎可以防止发生地狱。

我在那里的2美分:我没有jni文件夹,而是一个lib文件夹,所以在解压缩后使用此命令检查版本:

$ strings lib/arm64-v8a/libjsc.so | grep -C 1 JavaScriptCore.Version
API Wrapper
JavaScriptCore.Version
245459.9000.0

谢谢@工藤

我以前有本机0.58.3,我经常看到人们提到0.59,因此我决定也进行更新。 使用0.59.0和@ kudo-ci / jsc-android @ 245459-fix-clear-cache-no-dfg的组合似乎对我

我再也无法崩溃了。

有谁知道下一个RN版本中是否会解决此问题?

有谁知道下一个RN版本中是否会解决此问题?

https://github.com/react-native-community/jsc-android-buildscripts#for -react-native-version-060-and-newer

@kristerkari
只是为了确认您遵循的步骤。

您在这里按照说明进行操作, https: //github.com/react-native-community/jsc-android-buildscripts#for -react-native-version-059

但是您交换了而不是添加"jsc-android": "241213.x.x", ,而是将@kudo-ci/jsc-android": "^245459.9000.0到package.json? 您还有其他更改吗?

例如,我看到在build.grade中,您应该添加implementation "org.webkit:android-jsc:r241213" ,该行是否也必须更改,如果是,那应该是什么?

我不断收到构建错误Could not find org.webkit:android-jsc:r241213.Could not find org.webkit:android-jsc:r245459.9000.0.所以我猜我的问题在那儿使用了错误的引用,但无法完全确定应该是什么。

@jacquesdev请遵循本指南中的步骤: https: //gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17#file -steps_for_webkitgtk_2_24_2-md

亲爱的,

只是为了在@kmagiera的帮助下进行更新,我的补丁已发布为“ [email protected] ”。
我已发送https://github.com/facebook/react-native/pull/25426将更新的JSC放入RN。
@kelset也将其放入RN 0.60 RC中。
希望我们最终可以解决并解决此问题。
在这里向人们大喊大叫,以获取帮助来回验证我的实验版本。
我们就是所谓的RN社区!

谢谢@工藤! 您是否知道发行0.59.x版本是否有机会,还是只有0.60版本?

如果我们能在0.59.x中得到它,那就太好了
0.60在AndroidX和外部库中有很多重大更改。

为我们+1,将其放入0.59.x将会为我们解决很多问题
应用。

由于Android X中的支持,您真的不想进入0.60
到目前为止的图书馆。

JSC的pickFirst不适用于我们,必须是我们的本机库之一
引起问题,但似乎总是选择rn内部版本。
(尽管清理项目有效,所以一定是导致它的部门之一)

柯克

2019年6月29日星期六,19:35阿努拉格·达德希奇, notifications @github.com
写道:

如果我们能在0.59.x中得到它,那就太好了
0.60在AndroidX和外部库中有很多重大更改。

-
您收到此消息是因为您已订阅此线程。
直接回复此电子邮件,在GitHub上查看
https://github.com/facebook/react-native/issues/24261?
或使线程静音
https://github.com/notifications/unsubscribe-auth/AABPHZ2D5WUEM4S3242ZTYTP46TN3ANCNFSM4HC77RAQ

嗨,我可以知道在哪里添加此“ @ kudo-ci / jsc-android @ 245459-fix-clear-cache-no-dfg ”吗?

您好@工藤,谢谢您的

在没有DFG JIT的旧WebKit中,仍然会发生崩溃,但是没有DFG JIT的较新WebKit 2.24.2似乎可以解决该问题。 我想知道是否应该尝试启用DFG JIT的新WebKit,以便在可行的情况下获得最高的性能。

我同意一些评论,然后将此修补程序设置为0.59.10会更好,因为将很难升级到0.60 @Kudo @kelset @grabbou @turnrye

这里有同样的问题

我们无法升级到0.60,因为react-native-maps还不支持AndroidX,也无法将我们的更新推送到0.59.X,因为S7和S7 plus崩溃了。

对于企业来说,这确实是一个问题,这取决于本机

有什么解决方法吗?

我同意@adnkh ,我们现在无法升级到AndroidX,但是我们需要解决0.59崩溃的问题。

您不需要升级到0.60即可使用此修复程序。 您应该能够按照https://github.com/react-native-community/jsc-android-buildscripts/#for -react-native-version-059上的说明进行操作。 您要安装的版本是245459.0.0或更高版本。

@benoitdion

是的,即使不在主库中,也可以使用它,实际上,我遵循了这些指令https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17 。 而且有效

但是我不认为这是一个永久性的解决方案,因为您需要向Android项目中添加很多东西,所以我认为它不是整洁的。从开发人员的角度来看,主RN中的修补程序会更方便,并且它解决了许多崩溃的问题在Android应用上

您不需要升级到0.60即可使用此修复程序。 您应该能够按照https://github.com/react-native-community/jsc-android-buildscripts/#for -react-native-version-059上的说明进行操作。 您要安装的版本是245459.0.0或更高版本。

@benoitdion是的,但这是一种解决方法,将官方发布为0.59.10会更好。

谢谢@工藤
使用@kudo-ci/jsc-android@245459-fix-clear-cache-no-dfg减少大多数崩溃
但是生产中仍然有一些崩溃

小米MIX 3小米/ MIUI安卓9,级别28 arm64-v8a

1 #00 pc 00000000000f7748 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::AccessCase::propagateTransitions(JSC::SlotVisitor&) const+16) [arm64-v8a]
2 #01 pc 0000000000143fe8 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::PolymorphicAccess::propagateTransitions(JSC::SlotVisitor&) const+48) [arm64-v8a]
3 #02 pc 000000000012f0a8 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::CodeBlock::propagateTransitions(JSC::ConcurrentJSLocker const&, JSC::SlotVisitor&)+556) [arm64-v8a]
4 #03 pc 0000000000139484 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::ExecutableToCodeBlockEdge::runConstraint(JSC::ConcurrentJSLocker const&, JSC::VM&, JSC::SlotVisitor&)+40) [arm64-v8a]
5 #04 pc 000000000013900c /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::ExecutableToCodeBlockEdge::visitChildren(JSC::JSCell*, JSC::SlotVisitor&)+1044) [arm64-v8a]
6 #05 pc 00000000001fb9c4 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (_ZZN3JSC11SlotVisitor5drainEN3WTF13MonotonicTimeEENK3$_3clERNS_14MarkStackArrayE+324) [arm64-v8a]
7 #06 pc 00000000001f8e90 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::SlotVisitor::drain(WTF::MonotonicTime)+132) [arm64-v8a]
8 #07 pc 00000000001f96bc /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)+580) [arm64-v8a]
9 #08 pc 00000000001e41a0 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (_ZN3WTF17SharedTaskFunctorIFvvEZN3JSC4Heap13runBeginPhaseENS2_11GCConductorEE4$_17E3runEv+580) [arm64-v8a]
10 #09 pc 00000000006171ec /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (WTF::ParallelHelperClient::runTask(WTF::RefPtr<WTF::SharedTask<void ()>, WTF::DumbPtrTraits<WTF::SharedTask<void ()> > > const&)+40) [arm64-v8a]
11 #10 pc 0000000000617950 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (WTF::ParallelHelperPool::Thread::work()+16) [arm64-v8a]
12 #11 pc 000000000060de7c /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (_ZN3WTF8FunctionIFvvEE15CallableWrapperIZNS_15AutomaticThread5startERKNS_14AbstractLockerEE3$_0E4callEv+376) [arm64-v8a]
13 #12 pc 000000000061b084 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)+212) [arm64-v8a]
14 #13 pc 0000000000646dc8 /data/app/com.gezbox.windmessage--4BWJ7puodXEdg5g4H7Mdg==/lib/arm64/libjsc.so (WTF::wtfThreadEntryPoint(void*)+4) [arm64-v8a]
15 #14 pc 0000000000081dac /system/lib64/libc.so (__pthread_start(void*)+36) [arm64-v8a]
16 #15 pc 0000000000023788 /system/lib64/libc.so (__start_thread+68) [arm64-v8a]

OPPO R9S Oppo / COLOROS Android 6.0.1,级别23 arm64-v8a

1 #00 pc 00000000000f7748 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::AccessCase::propagateTransitions(JSC::SlotVisitor&) const+16) [arm64-v8a]
2 #01 pc 0000000000143fe8 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::PolymorphicAccess::propagateTransitions(JSC::SlotVisitor&) const+48) [arm64-v8a]
3 #02 pc 000000000012f0a8 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::CodeBlock::propagateTransitions(JSC::ConcurrentJSLocker const&, JSC::SlotVisitor&)+556) [arm64-v8a]
4 #03 pc 0000000000139484 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::ExecutableToCodeBlockEdge::runConstraint(JSC::ConcurrentJSLocker const&, JSC::VM&, JSC::SlotVisitor&)+40) [arm64-v8a]
5 #04 pc 000000000013900c /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::ExecutableToCodeBlockEdge::visitChildren(JSC::JSCell*, JSC::SlotVisitor&)+1044) [arm64-v8a]
6 #05 pc 00000000001fb9c4 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (_ZZN3JSC11SlotVisitor5drainEN3WTF13MonotonicTimeEENK3$_3clERNS_14MarkStackArrayE+324) [arm64-v8a]
7 #06 pc 00000000001f8e90 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::SlotVisitor::drain(WTF::MonotonicTime)+132) [arm64-v8a]
8 #07 pc 00000000001f96bc /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)+580) [arm64-v8a]
9 #08 pc 00000000001e41a0 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (_ZN3WTF17SharedTaskFunctorIFvvEZN3JSC4Heap13runBeginPhaseENS2_11GCConductorEE4$_17E3runEv+580) [arm64-v8a]
10 #09 pc 00000000006171ec /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (WTF::ParallelHelperClient::runTask(WTF::RefPtr<WTF::SharedTask<void ()>, WTF::DumbPtrTraits<WTF::SharedTask<void ()> > > const&)+40) [arm64-v8a]
11 #10 pc 0000000000617950 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (WTF::ParallelHelperPool::Thread::work()+16) [arm64-v8a]
12 #11 pc 000000000060de7c /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (_ZN3WTF8FunctionIFvvEE15CallableWrapperIZNS_15AutomaticThread5startERKNS_14AbstractLockerEE3$_0E4callEv+376) [arm64-v8a]
13 #12 pc 000000000061b084 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)+212) [arm64-v8a]
14 #13 pc 0000000000646dc8 /data/app/com.gezbox.windmessage-1/lib/arm64/libjsc.so (WTF::wtfThreadEntryPoint(void*)+4) [arm64-v8a]
15 #14 pc 00000000000664a4 /system/lib64/libc.so (__pthread_start(void*)+52) [arm64-v8a]
16 #15 pc 000000000001ebc4 /system/lib64/libc.so (__start_thread+16) [arm64-v8a]

RMX1901 Oppo / COLOROS Android 9,级别28 arm64-v8a

1 #00 pc 0000007772fbb2c0 <unknown>
2 #01 pc 00000000005519bc /data/app/com.gezbox.windmessage-vCMpnEKA509f1Di2EyrZ2w==/lib/arm64/libjsc.so (JSC::RegExp::match(JSC::VM&, WTF::String const&, unsigned int, WTF::Vector<int, 0ul, WTF::CrashOnOverflow, 16ul>&)+500) [arm64-v8a]
3 #02 pc 00000000005722e8 /data/app/com.gezbox.windmessage-vCMpnEKA509f1Di2EyrZ2w==/lib/arm64/libjsc.so (JSC::stringProtoFuncReplaceUsingRegExp(JSC::ExecState*)+3072) [arm64-v8a]
4 #03 pc 0000007772dff1ec <unknown>

👋大家。

我们听到了大家的声音,由于这些问题,我们中的许多人都做了最后一个0.59.10补丁程序发行,以便为您提供JSC的新版本。

非常感谢@Kudo为将其反向移植到0.59所做的工作。

在可预见的将来,我们将不会再发布其他0.59版本,因为这是一项具有挑战性的工作,甚至会更加艰辛,因为我们还在开发0.60(也将有新的JSC!)。

由于主要的核心问题已解决,因此我将结束本节,但是我建议为0.59.10之后可能遇到的其他崩溃打开一个新的崩溃。

好消息!

谢谢大家,特别是@kudo

星期二,2019年7月2日,12:29 Lorenzo Sciandra, notifications @github.com
写道:

👋大家。

我们听到了大家的声音,由于这些问题,你们中的很多人
最近发布了0.59.10补丁程序,为您提供了新版本的
JSC。

非常感谢@Kudo https://github.com/Kudo为他所做的工作
向后移植到0.59。

我们不会发布新的0.59版本,因为这是一项艰巨的工作,甚至
更加困难,因为我们也在努力开发0.60(它将使用新的JSC
太!)。

由于主要的核心问题已经解决,因此我将结束本节,但是我想
建议为您可能遇到的其他崩溃打开一个新的
在0.59.10之后。

-
您收到此消息是因为您已订阅此线程。
直接回复此电子邮件,在GitHub上查看
https://github.com/facebook/react-native/issues/24261?
或使线程静音
https://github.com/notifications/unsubscribe-auth/AABPHZ5PYT4F7ZZGQXZKKKLP5M325ANCNFSM4HC77RAQ

非常感谢您的修复! 将react-native升级到版本0.59.10 ,我仍然需要执行此处提到的步骤吗?

凯文

升级到RN 0.59.10后,您无需遵循任何要旨
说明了。

ķ

2019年7月3日,星期三,15:42凯文·埃托尔(kevin Etore), notifications @github.com写道:

非常感谢您的修复! 将react-native升级到0.59.10版后,
我仍然需要执行这里提到的步骤吗
https://gist.github.com/Kudo/cc40662163fbd69dd01d66fd99476c17吗?

-
您收到此消息是因为您已订阅此线程。
直接回复此电子邮件,在GitHub上查看
https://github.com/facebook/react-native/issues/24261?
或使线程静音
https://github.com/notifications/unsubscribe-auth/AABPHZ6UMO5NS4F4OZ7RWPTP5S3DVANCNFSM4HC77RAQ

我的应用仍在带有RN-0.59.10的魅族M5s M612H Android OS 6上崩溃。 我按照@kelset的建议创建了新问题

仍然在Caterpillar S41(Android 8.0)上崩溃。 该修复程序解决了所有其他设备上的问题。 也造成了新的问题。 告诉我这是否不是正确的方法。

嗨,大家好
当我以64位元编译时,我的应用程式也会在某些Android装置中当机

您是否正在使用1.1.0版本的react-native-elements软件包?
因为当我放置道具图标或标题时,组件标头使我的应用程序以及Avatar组件崩溃

别人可以检查他们是否也发生了同样的事情吗?

任何S7所有者都有机会与爱马仕一起测试此问题?

如果我使用以下应用程序崩溃并被Google Play商店接受
ndk {abiFilters“ armeabi-v7a”,“ arm64-v8a”,“ x86”,“ x86_64”}
如果我使用下面的应用程序正常工作,但未被Google Play商店接受
ndk {abiFilters“ armeabi-v7a”,“ x86”}

请任何人帮我解决

使用64位手臂APK的Moto G7和Pixel 2(均为Android 9.0)仍然崩溃。 与32位手臂APK配合使用时效果很好。

@ afras21-这是因为该错误存在于64位版本中,而Google Play商店已将该错误定为强制性版本。

@jacquesdev感谢jacq,现在他们删除了强制性命令,并且现在可以正常工作了

@ afras21您的意思是Google取消了Playstore的64位限制?

我有同样的问题。 如果我将项目从0.59.9更新到0.60.4,我应该解决此问题吗?

我有同样的问题。 我目前正在使用0.59.9。 如果我升级到0.60.x,该问题可以解决吗?

请先尝试0.59.10是否确实为您解决了问题。
如果没有,也许值得升级RN 0.60.4并打开Hermes

重复Kudo所说的,只是提供上下文信息并总结该问题的先前内容(因为此时可能很难整理出这么多评论):

如果您具有0.59.9或更低的值,则这是旧JSC的已验证问题。 这是上面(以及其他问题)上数百条评论的主题。 该问题并不只限于64位,而是最常见于64位。

0.60+具有各种重大变化,尤其是在Android上。

如果您不想这样做,请尝试使用0.59.10,因为它具有直接集成在版本/内部版本中的修复程序(如上所述),并且似乎可以解决大多数情况下的问题。

在某些情况下,某些电话还是有问题的(我也遇到过),请参阅#25494。如果您有此问题,建议将堆栈跟踪信息发布到该处。 但是,如果您说自己有0.59.9,则可以_0.59.10来解决问题。

@MalcolmScruggs @ntorion @ harryt2
解决了吗如何解决?谢谢

0.59.10并没有为我解决。 我将尝试进行0.60.x升级

@MalcolmScruggs @ntorion @ harryt2
解决了吗如何解决?谢谢

0.59.10也不适合我。 我无法升级到0.60.x,因为我的某些依赖项无法正常工作。 可以在Hermes上进行编译,但是看到了ANR的大幅增长(感谢上帝分阶段推出)。 仍然坐在RN 0.57.8版的Play商店中,但由于64位要求,我无法再更新我的应用。 相当沮丧,并试图决定是否只是使用另一个框架来重建整个应用程序。

@ harryt2 @rogerkerse谢谢。
我的情况更糟。 发布的版本存在错误,因此我必须升级64应用程序。 我目前无法解决此问题。 我也在尝试拍打,但没有那么快地完成更换。

我实际上遇到了将React-Native提升到0.60.5并启用Hermes + 64位(这很痛苦,因为升级react-native总是很麻烦)的麻烦,而我在多部Android手机上仍然遇到这些问题(包括华为MYA-L41)。

我已经尝试了在其他线程中发现的几乎所有内容,但运气不佳,所以我可以告诉您颠覆性的本机操作,使用爱马仕并不能解决所有这些问题。

在我运行过的其他Android设备上,更新后的react-native + Hermes和64位版本令人惊叹,我们的应用程序从未如此流畅。

但是,每当我在提到的特定设备(Huawei)上进行测试时,它立即崩溃,或者在打开应用程序1-2秒而没有特定崩溃消息后,除了该设备和一个较新的Huawei(效果很好),所以我无法在其他手机上给您更多信息。

如果有人在此问题上取得任何进展,或者对记录我的问题有任何想法,我们总是欢迎您提出建议,并且我愿意分享有关此问题的任何信息。
感谢此线程中的人员提供的解决方案,但到目前为止还没有运气。 🙂

@YoranRoels您是否尝试过运行由react-native init创建的干净应用程序? 我想知道崩溃是由RN本身还是您编写的某些库或代码引起的。

@armenbadalyan感谢您的迅速答复。

我刚刚建立了一个新项目,并尝试在设备上运行它,一切似乎都很好,所以最后,我的设置看起来确实有些像。 因为除com.<our_app_id>之外我的logcat不会喷出任何有用的东西,所以有没有一种有效的方法来调试此错误?

React Native 59.10也无法为我们解决。 应用程序在首次启动时仍然崩溃。

@GreanBeetle参见https://github.com/facebook/react-native/issues/25494。 不幸的是,目前已知0.59.10不能在所有情况下都解决此问题。

最新的路径是使用(如本线程中所述),0.60 +和Hermes。

@YoranRoels从设备获取墓碑。 参见: https :

@GreanBeetle您可以在0.59.10上使用V8引擎来摆脱此问题
https://github.com/Kudo/react-native-v8

谢谢@ j-wang。 @manuhook将为您提供解决方案。

@GreanBeetle您可以在0.59.10上使用V8引擎来摆脱此问题
https://github.com/Kudo/react-native-v8

可以为我们确认这解决了问题。 在0.59.10 react-native-v8上使用

我尝试了提到的墓碑记录@ j-wang,但是我从未真正使用过它,它是一个庞大的文件,很难找到,在搜索了一段时间之后,我似乎并没有找到可读的根本原因。

接受@armenbadalyan的建议后,我开始怀疑它在我们的应用程序启动时是否不是一件愚蠢的事情,并且在删除第一个组件的UI时足够确定,我注意到该应用程序再次运行且稳定。 因此,在进一步挖掘之后,我注意到在渲染图像时会遇到特定组件的问题。

在该组件中,我们有可能通过null作为react-native Image上的source变量。 花了我一段时间寻找这个没有真正明确的错误,但这最终为我解决了所有问题,并且可以在我们所有的测试设备上运行。 仍然不知道为什么它在我们的其他测试设备上没有失败...

可能会帮助其他人简化其应用程序的第一个组件,以确保该应用程序不会在该代码上崩溃。

TL; DR:这可能是完全题外话现在,但是向谁关注:不要使用nullsource的变量Image ,这不是”不能在所有设备上使用。 😅

@ harryt2是的,我也是。 升级到RN 0.60后,我的ANR大幅增加。

对仍在尝试解决启动崩溃的用户的一些帮助:

  1. 在控制台中运行adb logcat
  2. 等待控制台垃圾邮件停止
  3. 在您的设备上打开崩溃的应用
  4. 使用Ctrl + c停止adb logcat
  5. 向上滚动并查找崩溃

它不能解决问题,但可以让您了解更多。 我有2个应用程序,其中一个可以在64位上很好地工作,即使它们具有相同的配置,但在另一个应用程序上仍然很挣扎。 我的当机设备是One Plus 5t(64位)

我刚刚在使用RN 59.10构建的新版App中看到了这一点,尤其是在Android 9上的Samsung Galaxy Note9上。还有其他人看到过类似的问题吗?

@msspshaw如上所述和其他问题,是的。 新的JSC在某些Android设备上随机冻结/崩溃,因为它不确定地收集了垃圾,然后整个应用程序崩溃了。

解决方案是升级到0.60+并使用Hermes,或将JSC切换到v8。

我尝试了提到的墓碑记录@ j-wang,但是我从未真正使用过它,它是一个庞大的文件,很难找到,在搜索了一段时间之后,我似乎并没有找到可读的根本原因。

接受@armenbadalyan的建议后,我开始怀疑它在我们的应用程序启动时是否不是一件愚蠢的事情,并且在删除第一个组件的UI时足够确定,我注意到该应用程序再次运行且稳定。 因此,在进一步挖掘之后,我注意到在渲染图像时会遇到特定组件的问题。

在该组件中,我们有可能通过null作为react-native Image上的source变量。 花了我一段时间寻找这个没有真正明确的错误,但这最终为我解决了所有问题,并且可以在我们所有的测试设备上运行。 仍然不知道为什么它在我们的其他测试设备上没有失败...

可能会帮助其他人简化其应用程序的第一个组件,以确保该应用程序不会在该代码上崩溃。

TL; DR:这可能是完全题外话现在,但是向谁关注:不要使用nullsource的变量Image ,这不是”不能在所有设备上使用。 😅

+1对我有用。 我有同样的问题。 谢谢!

还可以看到它发生在Android 7.0 RN 0.59.10上的Samsung Galaxy S7 IO-IL 086上

@BracketMan您是否使用V8而不是JSC?

@EmilScherdin啊,不,我不是。 会试一试,并报告感谢。

@EmilScherdin我可以确认在RN 0.59.10的V8上运行对我来说有效,不再崩溃。

谢谢!

我们在v0.5的RN 0.59.10上遇到了同样的问题。 我看到没有为arm64-v8a禁用JIT,在具有这种体系结构的设备上我们崩溃了。

@mmamoyco您是否拥有V8崩溃的

@Kudo是的,我确实有崩溃日志。 由于经历了很多崩溃,我们已从jsc迁移到v8。 但是使用v8也会发生同样的情况。 下面是日志

00 pc 0000000000c31dd8 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so

#01 pc 0000000000c3437c /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so
#02 pc 0000000000c30554 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so
#03 pc 0000000000c33070 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so
#04 pc 0000000000bf2e94 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so(v8 :: internal :: ItemParallelJob :: Task :: RunInternal()+ 24)
#05 pc 0000000000a4d660 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so(v8 :: platform :: DefaultWorkerThreadsT​​askRunner :: WorkerThread :: Run()+ 56)
#06 pc 0000000000a4a074 /data/app/my.app.id-a42vFQTz2lrEJMUnXdYsYA==/lib/arm64/libv8.so
#07 pc 0000000000067ec4 /system/lib64/libc.so(__pthread_start(void *)+ 36)
#08 pc 000000000001f2f4 /system/lib64/libc.so(__start_thread + 68)

我们在0.59.1上遇到了这个确切的问题,并可以通过以下操作解决此问题:

⛄️这些方向是一样的JSC-Android的自述。 我们修改了版本号和一些符号。 该canary版本jsc不能解决问题。 所需的是jsc-android @ canary之后的版本,请参阅:此修补程序,用于合并到react-native仓库中的原始修复程序。 感谢@ ravali121帮助解决此问题。

  1. 添加jsc-android你的“依赖性”一节package.json
dependencies {
   ...
+  "jsc-android": "^245459.0.0",
   ...
}

然后运行npm installyarn (取决于您使用的npm客户端),以便将新依赖项安装在node_modules

  1. 修改android/build.gradle文件,以将打包在jsc-android包中的新本地Maven存储库添加到搜索路径:
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
+       maven {
+           // Local Maven repo containing AARs with JSC library built for Android
+           url "$rootDir/../node_modules/jsc-android/dist"
+       }
    }
}
  1. 更新位于android/app/build.gradle的应用程序的build.gradle文件,以添加JSC依赖项。 请确保该依赖关系在React Native依赖关系之前。

dependencies {
+   // Make sure to put android-jsc at the top
+   implementation 'org.webkit:android-jsc:+'
    compile fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}
  1. 更新应用程序位于android/app/build.gradlebuild.gradle文件,以使用第一个匹配的JSC库。
android {
    // ...
+   packagingOptions {
+       pickFirst '**/armeabi-v7a/libc++_shared.so'
+       pickFirst '**/x86/libc++_shared.so'
+       pickFirst '**/x86_64/libc++_shared.so'
+       pickFirst '**/arm64-v8a/libc++_shared.so'
+       pickFirst '**/libjsc.so'
+    }
}

不要使用nullsource的变量Image ,它不会在所有设备上工作。 😅

我讨厌只引用您,但是由于这个线程的干扰,我几乎错过了您的解决方案。 非常感谢@YoranRoels! 这节省了一天!

我找到了一个在线真实机器测试网站,在那儿我选择了GALAXY S7 Edge和android 7.0 os,不幸的是它没有发生崩溃,并且我尝试使用@YoranRoels方法设置source变量Image{null}{{ uri: null }}但它仍然不会崩溃,太糟糕了,我什至不知道它是怎么发生的,谁能帮我。

我们在0.59.1上遇到了这个确切的问题,并可以通过以下操作解决此问题:

⛄️这些方向是一样的JSC-Android的自述。 我们修改了版本号和一些符号。 该canary版本jsc不能解决问题。 所需的是jsc-android @ canary之后的版本,请参阅:此修补程序,用于合并到react-native仓库中的原始修复程序。 感谢@ ravali121帮助解决此问题。

  1. 添加jsc-android你的“依赖性”一节package.json
dependencies {
   ...
+  "jsc-android": "^245459.0.0",
   ...
}

然后运行npm installyarn (取决于您使用的npm客户端),以便将新依赖项安装在node_modules

  1. 修改android/build.gradle文件,以将打包在jsc-android包中的新本地Maven存储库添加到搜索路径:
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
+       maven {
+           // Local Maven repo containing AARs with JSC library built for Android
+           url "$rootDir/../node_modules/jsc-android/dist"
+       }
    }
}
  1. 更新位于android/app/build.gradle的应用程序的build.gradle文件,以添加JSC依赖项。 请确保该依赖关系在React Native依赖关系之前。
dependencies {
+   // Make sure to put android-jsc at the top
+   implementation 'org.webkit:android-jsc:+'
    compile fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}
  1. 更新应用程序位于android/app/build.gradlebuild.gradle文件,以使用第一个匹配的JSC库。
android {
    // ...
+   packagingOptions {
+       pickFirst '**/armeabi-v7a/libc++_shared.so'
+       pickFirst '**/x86/libc++_shared.so'
+       pickFirst '**/x86_64/libc++_shared.so'
+       pickFirst '**/arm64-v8a/libc++_shared.so'
+       pickFirst '**/libjsc.so'
+    }
}

您是救生员! ❤️我一直在寻找您的答案三天,以粘贴该代码并将jsc-android版本更改为您刚才提到的版本。 现在正在工作! 将RN版本从0.59升级到0.60时发生错误。 该应用程序仅适用于Android,而ios很好。 最奇怪的是,该应用程序已成功编译,因此一切看起来都很不错,但启动后立即崩溃。

此页面是否有帮助?
0 / 5 - 0 等级