Cocos2dxJavascriptJavaBridge.evalString在部分Android手机上Crash

出现机器 Samsung Galaxy J6+ (j6primelte), 3072MB RAM, Android 9

打包APP发布Google Play 查看Android Vitals Crash信息如下:

backtrace:
#00 pc 00000000005d8178 /data/app/xxx.xxx.xxx-EXwToc88kBKB_QkEeNo-hw==/lib/arm/libcocos2djs.so
#01 pc 00000000005d81c9 /data/app/xxx.xxx.xxx-EXwToc88kBKB_QkEeNo-hw==/lib/arm/libcocos2djs.so
#02 pc 0000000000569ef4 /data/app/xxx.xxx.xxx-EXwToc88kBKB_QkEeNo-hw==/lib/arm/libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxJavascriptJavaBridge_evalString+48)
#03 pc 0000000000077829 /data/app/xxx.xxx.xxx-EXwToc88kBKB_QkEeNo-hw==/oat/arm/base.odex (offset 0x77000) (org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge.evalString+112)
#04 pc 0000000000410575 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
#05 pc 00000000003e9c2b /system/lib/libart.so (art_quick_invoke_static_stub+222)
#06 pc 00000000000a1827 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+154)
#07 pc 00000000001e6db5 /system/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+236)
#08 pc 00000000001e18a3 /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+814)
#09 pc 00000000003e575f /system/lib/libart.so (MterpInvokeStatic+130)
#10 pc 0000000000403414 /system/lib/libart.so (ExecuteMterpImpl+14612)
#11 pc 00000000001721f2 /data/app/xxx.xxx.xxx-EXwToc88kBKB_QkEeNo-hw==/oat/arm/base.vdex (xxx.xxx.xxx.util.BridgeUtil$4.run+12)
#12 pc 00000000001c5f73 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2098128689)+378)
#13 pc 00000000001ca59f /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+82)
#14 pc 00000000003d8269 /system/lib/libart.so (artQuickToInterpreterBridge+880)
#15 pc 0000000000414aff /system/lib/libart.so (art_quick_to_interpreter_bridge+30)
#16 pc 0000000000977563 /system/framework/arm/boot-framework.oat (offset 0x3fd000) (android.opengl.GLSurfaceView$GLThread.guardedRun+2138)
#17 pc 000000000097884d /system/framework/arm/boot-framework.oat (offset 0x3fd000) (android.opengl.GLSurfaceView$GLThread.run+180)
#18 pc 0000000000410575 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
#19 pc 00000000003e9b29 /system/lib/libart.so (art_quick_invoke_stub+224)
#20 pc 00000000000a1815 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
#21 pc 0000000000349515 /system/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+52)
#22 pc 000000000034a26d /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+320)
#23 pc 000000000036b653 /system/lib/libart.so (art::thread::CreateCallback(void*)+866)
#24 pc 0000000000073aa1 /system/lib/libc.so (__pthread_start(void*)+22)
#25 pc 000000000001e1cd /system/lib/libc.so (__start_thread+24)
大多数出现在Android 9.0上,平均Crash率 1.7%,光9.0的在 2.3%左右,有没有大佬帮忙看下是什么问题:slightly_smiling: @引擎组的大佬

看下执行线程是不是GLThread,其他情况需要复现的demo才能排查。

是在GL线程执行的,这是我们原生调用js的代码
mActivity.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxJavascriptJavaBridge.evalString(js.toString());
}
});
我们这边测试也没法重现,我这Crash日志是在google play控制台看的,主要出现在部分android 9.0上,现在也一头雾水不知道怎么解决

看这个堆栈信息应该是GLThread执行的

你解决了吗?我们这在跑机型测试时也遇到了这个问题

没 关键是没法复现 我这些错误日志都是google 控制台看的