cocos creator 3.2安卓包从webview里面调用外部代码导致程序崩溃

  • Creator 版本: 3.2.0

  • 目标平台:安卓(手机&&模拟器)

  • 重现方式:直接参照文档上的测试代码文档
    assets.zip (4.1 KB)

art_sigsegv_fault 0x000075ae08308630
art::FaultManager::HandleFault(int, siginfo*, void*) 0x000075ae08308b15
art::SignalChain::Handler(int, siginfo*, void*) 0x000055587ca5fbb6
__restore_rt 0x000075ae8d4e89e0
v8::HandleScope::Initialize(v8::Isolate*) 0x000075adefbb38ef
se::AutoHandleScope::AutoHandleScope() ScriptEngine.h:66
js_webview_WebView_setOnJSCallback(se::State&)::_2::operator()(cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&) const jsb_webview_auto.cpp:478 decltype(std::__ndk1::forward<js_webview_WebView_setOnJSCallback(se::State&)::_2&>(fp)(std::__ndk1::forwardcc::WebView*(fp0), std::__ndk1::forward<std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&>(fp0))) std::__ndk1::__invoke<js_webview_WebView_setOnJSCallback(se::State&)::_2&, cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&>(js_webview_WebView_setOnJSCallback(se::State&)::_2&, cc::WebView*&&, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&) type_traits:4345
void std::__ndk1::__invoke_void_return_wrapper::__call<js_webview_WebView_setOnJSCallback(se::State&)::_2&, cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&>(js_webview_WebView_setOnJSCallback(se::State&)::_2&, cc::WebView*&&, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&) __functional_base:349
std::__ndk1::__function::__func<js_webview_WebView_setOnJSCallback(se::State&)::_2, std::__ndk1::allocator<js_webview_WebView_setOnJSCallback(se::State&)::_2>, void (cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&)>::operator()(cc::WebView*&&, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&) functional:1562
std::__ndk1::function<void (cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&)>::operator()(cc::WebView*, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&) const functional:1913
cc::WebViewImpl::onJsCallback(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&) WebViewImpl-android.cpp:268
::Java_com_cocos_lib_CocosWebViewHelper_onJsCallback(JNIEnv , jclass, jint, jstring) WebViewImpl-android.cpp:123
art_quick_generic_jni_trampoline 0x000075ae08728e62
art_quick_invoke_static_stub 0x000075ae0871ec17
art::ArtMethod::Invoke(art::Thread
, unsigned int*, unsigned int, art::JValue*, char const*) 0x000075ae0822a484
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x000075ae083fca12
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5aee
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae08435023
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841eb6f
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae08435023
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841eb6f
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae084343bc
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841e7ac
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae0843226f
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841ee8f
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae0843226f
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841ee8f
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvokeVirtualQuick(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae0841bbb0
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841d56a
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae08435023
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841eb6f
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x000075ae083d28cf
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae083f5ad5
bool art::interpreter::DoInvokeVirtualQuick(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x000075ae0841bbb0
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x000075ae0841d56a
ExecuteSwitchImplAsm 0x000075ae0872ad26
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2620325170) 0x000075ae083ccd0e
artQuickToInterpreterBridge 0x000075ae086d9368
art_quick_to_interpreter_bridge 0x000075ae08728fed
art_quick_invoke_stub 0x000075ae0871e8b5
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x000075ae0822a473
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x000075ae0861238a
art::InvokeVirtualOrInterfaceWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, __va_list_tag*) 0x000075ae086139eb
art::JNI::CallBooleanMethodV(_JNIEnv*, _jobject*, _jmethodID*, __va_list_tag*) 0x000075ae084ccc49
art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, __va_list_tag*, art::Primitive::Type, art::InvokeType) 0x000075ae0825a558
art::(anonymous namespace)::CheckJNI::CallBooleanMethodV(_JNIEnv*, _jobject*, _jmethodID*, __va_list_tag*) 0x000075ae08247dc5
0x000075adf2f7e3f3