Javascript无限递归函数在Android 10上导致Chromium 50 ARM64 lib崩溃

问题描述 投票:0回答:1

我的Android应用使用网络视图,例如基于Chromium 50(V8 JavaScript引擎5.0)的控件。由于各种原因,不能选择使用系统WebView或更高版本的Chromium。

仅在Android 10和arm64版本的二进制文件上,我收到很多Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)崩溃。使用较旧的Android版本的相同二进制文件以及使用Android 10的32位版本的二进制文件都没有问题。

这里是一个包含无限递归函数的示例代码,它会崩溃:webView.evaluateJavascript("(function a(i) { a(i++); })()", null);

欢迎任何避免这些崩溃的想法。

crash chromium v8 android-10.0 javascript-debugger
1个回答
0
投票

V8开发人员在这里。您提到的链接讨论了system库。我不知道为什么V8会尝试读取系统库。您确定发生了什么吗?您可以运行Debug版本并获得堆栈跟踪吗?如果没有更多数据,我会怀疑还有其他事情正在发生并导致崩溃。

FWIW:

--untrusted-code-mitigations使(优化)编译器发出代码序列,(部分)缓解最近发现的“ Spectre” CPU安全漏洞。这与Android 10的兼容性完全无关。

--jitless关闭了足够新的V8版本中的所有即时代码生成(当然,这会花费很大的性能成本)。这也与Android系统二进制文件的仅执行内存无关。

© www.soinside.com 2019 - 2024. All rights reserved.