原生调用js,se::AutoHandleScope hs出现SIGSEGV的BUG,必现!

  • Creator 版本:2.0.1

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

  • 重现方式:在AppActivity类中,定义:

    public void log(final String s) {
    runOnGLThread(new Runnable() {
    public void run() {
    logOnGLThread(s);
    }
    });
    }

    private void logOnGLThread(String s) {

     // final String jsCallStr = String.format("testFun();");
      Cocos2dxJavascriptJavaBridge.evalString("var hello = 1;");
     //Cocos2dxJavascriptJavaBridge.evalString("testFun();");
    

    }
    单步调试,发现在Java_org_cocos2dx_lib_Cocos2dxJavascriptJavaBridge_evalString函数的第一行执行se::AutoHandleScope hs时就出现错误,提示SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x1930))错误。

  • 之前哪个版本是正常的 :无

  • 手机型号 :华为荣耀8X

  • 手机浏览器 :手机自带

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :无

proj.android-studio.zip (1017.2 KB)

我用了一个简单的工程测试,也是同样的问题。不知道是我版本配置问题还是BUG,请大家帮我看看。。。

要在cocos线程回调罗兄弟

public void log(final String s) {
    runOnGLThread(new Runnable() {
        @Override
        public void run() {
            logOnGLThread(s);
        }
    });
}

runOnGLThread不算是cocos线程吗?我在网上找很多示例都是这样写的。
兄弟,能否给个示例?

是不是没有v8引擎库,高手们,支个招。。。

已解决

我也出现同样的BUG,请问怎样解决

1赞

请问是怎么解决的?

回复跟我一样遇到这种问题不会解决的人

alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        // 一定要在 GL 线程中执行
        app.runOnGLThread(new Runnable() {
            @Override
            public void run() {
                Cocos2dxJavascriptJavaBridge.evalString("cc.log(\"Javascript Java bridge!\")");
            }
        });
    }
});
要在runOnGLThread线程执行