java调用js,用到evalString导致崩溃

  • Creator 版本:1.4.2

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:
    backtrace:
    #00 pc 00000000002bbe08 /data/app/xxx-1/lib/arm/libcocos2djs.so (_ZN13ScriptingCore10evalStringEPKcN2JS13MutableHandleINS2_5ValueEEE+32)
    #01 pc 00000000002bbe68 /data/app/xxx-1/lib/arm/libcocos2djs.so (_ZN13ScriptingCore10evalStringEPKc+40)
    #02 pc 000000000031ec40 /data/app/xxx-1/lib/arm/libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxJavascriptJavaBridge_evalString+132)
    #03 pc 0000000001752829 /data/app/xxx1/oat/arm/base.odex

调用
bool ScriptingCore::evalString(const char *string)
{
JS::RootedValue retVal(_cx);
return evalString(string, &retVal);
}
然后
造成
bool ScriptingCore::evalString(const char *string, JS::MutableHandleValue outVal)
{
JS::RootedObject global(_cx, _global->get());
return evalString(string, outVal, nullptr, _cx, global);
}
这个函数奔溃,求教

public static void jsb_evalString(final String script) {
    app.runOnGLThread(new Runnable() {
        @Override
        public void run() {
            Cocos2dxJavascriptJavaBridge.evalString(script);
        }
    });
}

runOnGLThread都加了这个的,就还是有玩家会出现这个crash

顶顶顶顶顶顶