2.2.0 iOS13 启动崩溃 v8 base debug StackTrace

引擎版本:2.2.0
平台:iOS 13.2
Xcode: Version 11.2 (11B52)
设备:iPhone X
mac系统版本:10.15

启动崩溃 ,详细日志如下
0 0x0000000101291208 v8::base::debug::StackTrace::StackTrace() + 24
1 0x0000000101293de0 v8::platform::(anonymous namespace)::PrintStackTrace() + 24
2 0x000000010128d6f4 V8_Fatal(char const*, int, char const*, …) + 208
3 0x00000001015b93c0 v8::internal::BufferedCharacterStreamv8::internal::ExternalStringStream::~BufferedCharacterStream() + 0
4 0x00000001015a45c8 v8::internal::parsing::ParseFunction(v8::internal::ParseInfo*, v8::internal::Handlev8::internal::SharedFunctionInfo, v8::internal::Isolate*) + 256
5 0x000000010134772c v8::internal::Compiler::Compile(v8::internal::Handlev8::internal::SharedFunctionInfo, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*) + 796
6 0x0000000101347c9c v8::internal::Compiler::Compile(v8::internal::Handlev8::internal::JSFunction, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*) + 236
7 0x00000001016212e8 v8::internal::Runtime_CompileLazy(int, unsigned long*, v8::internal::Isolate*) + 172
8 0x0000000101aca42c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit + 108
9 0x0000000101a390a8 Builtins_CompileLazy + 936
10 0x0000000101a30d84 Builtins_ArgumentsAdaptorTrampoline + 228
11 0x0000000101a386e4 Builtins_InterpreterEntryTrampoline + 804
12 0x0000000101a386e4 Builtins_InterpreterEntryTrampoline + 804
13 0x0000000101a35a64 Builtins_JSEntryTrampoline + 164
14 0x0000000101a3570c Builtins_JSEntry + 172
15 ??? 0x000000010e094000 0x0 + 4530454528

@jare

通过第三方的崩溃分析,崩溃率15%,都是在app启动5秒内崩溃的,系统90%都是13.1.3,详细日志如下

v8::internal::Heap::DefaultGetExternallyAllocatedMemoryInBytesCallback()+9036
v8::internal::SearchStringRaw<unsigned short const, unsigned short const>(v8::internal::Isolate*, unsigned short const*, int, unsigned short const*, int, int)+44964
v8::internal::SearchStringRaw<unsigned short const, unsigned short const>(v8::internal::Isolate*, unsigned short const*, int, unsigned short const*, int, int)+39844
v8::internal::SearchStringRaw<unsigned short const, unsigned short const>(v8::internal::Isolate*, unsigned short const*, int, unsigned short const*, int, int)+35400
v8::base::LazyInstanceImpl<v8::internal::CodeRangeAddressHint, v8::base::StaticallyAllocatedInstanceTraitv8::internal::CodeRangeAddressHint, v8::base::DefaultConstructTraitv8::internal::CodeRangeAddressHint, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTraitv8::internal::CodeRangeAddressHint >::InitInstance(void*)+336680
v8::base::LazyInstanceImpl<v8::internal::CodeRangeAddressHint, v8::base::StaticallyAllocatedInstanceTraitv8::internal::CodeRangeAddressHint, v8::base::DefaultConstructTraitv8::internal::CodeRangeAddressHint, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTraitv8::internal::CodeRangeAddressHint >::InitInstance(void*)+337672
v8::internal::LookupIterator::RestartInternal(v8::internal::LookupIterator::InterceptorState)+60684
v8::internal::LookupIterator::RestartInternal(v8::internal::LookupIterator::InterceptorState)+61372
v8::internal::Handlev8::internal::ExternalTwoByteString v8::internal::factory::InternalizeExternalStringv8::internal::ExternalTwoByteString(v8::internal::Handlev8::internal::String)+44712
v8::base::LazyInstanceImpl<v8::internal::CodeRangeAddressHint, v8::base::StaticallyAllocatedInstanceTraitv8::internal::CodeRangeAddressHint, v8::base::DefaultConstructTraitv8::internal::CodeRangeAddressHint, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTraitv8::internal::CodeRangeAddressHint >::InitInstance(void*)+42796
v8::base::LazyInstanceImpl<v8::internal::CodeRangeAddressHint, v8::base::StaticallyAllocatedInstanceTraitv8::internal::CodeRangeAddressHint, v8::base::DefaultConstructTraitv8::internal::CodeRangeAddressHint, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTraitv8::internal::CodeRangeAddressHint >::InitInstance(void*)+72192
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+781976
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+1090660
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+184656
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+184656
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+173264
unsigned int v8::internal::compiler::BitsetType::Lubv8::internal::compiler::MapRef(v8::internal::compiler::MapRef const&)+172408

@jare @minggo 引擎组的大佬们能出来瞅瞅嘛,日活几万的产品伤不起啊!

重现截图

暂时将2.2.0里面的v8屏蔽了,性能差了,但是解决了大量崩溃问题。
config.hpp里面 修改为
#if TARGET_OS_IOS
//#ifdef arm64
// #define SCRIPT_ENGINE_TYPE SCRIPT_ENGINE_V8
//#else
#define SCRIPT_ENGINE_TYPE SCRIPT_ENGINE_JSC
//#endif
#endif
还是希望引擎组的重视一下这个问题, 启动app 5秒内调用
se::ScriptEngine::getInstance()->evalString(“console.log(“hello world”)” , -1 , ret);
启动十次左右崩溃一次

测试并没有复现这样的情况,可否在heloworld基础上提供个复现demo,尽量排除自身项目的干扰

hello world项目还是重现了,但是概率太小了,可能循环操作100次左右才出现一次,就不提供demo了把:smile:
我提到的问题是因为线程不同步的问题,把oc里面执行脚本的操作放在主线程里面就可以了,谢谢引擎大佬kenshin的关注。