目前我使用的是cocos creator 2.0.6 版本 关闭游戏时,调用了一个在v2.0.0版本时在jnilmp.cpp中的这个方法,当时v2.0.0时是可以的。但更新到2.0.6版本后这个方法不存在了。我就复制了一下。
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeFinish(JNIEnv* env, jobject thiz)
{
g_isGameFinished = true;
g_app->getScheduler()->removeAllFunctionsToBePerformedInCocosThread();
EventDispatcher::destroy();
se::ScriptEngine::getInstance()->cleanup();
cocos2d::experimental::AudioEngine::end();
}
但调用后,再次进入游戏就会出现崩溃。崩溃时提示如下
E/v8: #
# Fatal error in …/…/src/isolate.cc, line 2360
#
Check failed: thread_data_table_.
#
Build fingerprint: ‘Xiaomi/clover/clover:8.1.0/OPM1.171019.019/V9.6.7.0.ODJCNFD:user/release-keys’
Revision: ‘0’
ABI: ‘arm’
pid: 3481, tid: 3619, name: GLThread 220 >>> org.cocos2d.gametestnew <<<
01-07 23
01.175 3634-3634/? A/DEBUG: signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0xd3624cee
r0 00000000 r1 00004001 r2 00000000 r3 00000001
r4 f03b36e0 r5 d45de9a4 r6 d40bc7f0 r7 00000938
r8 d411c338 r9 00004764 sl 00004758 fp 0000474c
ip f03b162c sp d45de978 lr d3623ef1 pc d3624cee cpsr 800f0030
01-07 23
01.179 3634-3634/? A/DEBUG: backtrace:
#00 pc 0045fcee /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so
#01 pc 0045eeed /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so
#02 pc 00be2c47 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so
#03 pc 009fe1e5 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so
#04 pc 00658110 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so (se::ScriptEngine::init()+376)
#05 pc 0065923c /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so (se::ScriptEngine::start()+44)
#06 pc 003dd718 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so (AppDelegate::applicationDidFinishLaunching()+272)
#07 pc 003e1f47 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so (cocos2d::Application::start()+18)
#08 pc 00401799 /data/app/org.cocos2d.gametestnew-ohx1C6KEr9YOvLbcqXHq0Q==/lib/arm/libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+200)
…
我跟踪到的崩溃的准确位置是在
/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/ScriptEngine.cpp中的
se::ScriptEngine::init()这个方法中的
…
_isolate = v8::Isolate::New(_createParams);
…
这个new方法时,就会发生崩溃。为什么?求解决方案。
