setFinishCallback ios平台 crash 是如何造成的

Creator 版本:2.2.2
目标平台:iPad7,11
详细报错信息,包含调用堆栈:

Crashed: com.apple.main-thread
0 niuwa 0x1012ac594 v8::internal::GlobalHandles::ClearWeakness(unsigned long*) + 1740
1 niuwa 0x1010ace34 se::ObjectWrap::ref() + 4323184180
2 niuwa 0x1011192dc se::Object::root() + 4323627740
3 niuwa 0x10101b35c se::Value::setObject(se::Object*, bool) + 4322587484
4 niuwa 0x10101ace8 se::Value::operator=(se::Value const&) + 4322585832
5 niuwa 0x10101ad08 se::Value::Value(se::Value const&) + 4322585864
6 niuwa 0x101067ba4 std::__1::__compressed_pair_elem<js_audioengine_AudioEngine_setFinishCallback(se::State&)::$_1, 0, false>::__compressed_pair_elem<js_audioengine_AudioEngine_setFinishCallback(se::State&)::$_1 const&, 0ul>(std::__1::piecewise_construct_t, std::__1::tuple<js_audioengine_AudioEngine_setFinishCallback(se::State&)::$_1 const&>, std::__1::__tuple_indices<0ul>) + 4322900900
7 niuwa 0x10106797c std::__1::__function::__func<js_audioengine_AudioEngine_setFinishCallback(se::State&)::$_1, std::__1::allocator<js_audioengine_AudioEngine_setFinishCallback(se::State&)::$_1>, void (int, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)>::__clone() const + 4322900348
8 niuwa 0x10108e040 std::__1::function<void (int, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)>::function(std::__1::function<void (int, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)> const&) + 4323057728
9 niuwa 0x10108be08 cocos2d::AudioEngineImpl::update(float) + 4323048968
10 niuwa 0x10108c498 cocos2d::AudioEngineImpl::stop(int) + 4323050648
11 niuwa 0x100fac57c cocos2d::AudioEngine::stop(int) + 4322133372
12 niuwa 0x101065b30 js_audioengine_AudioEngine_stopRegistry(v8::FunctionCallbackInfov8::Value const&) + 4322892592
13 niuwa 0x1011ca858 v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) + 132576
14 niuwa 0x1011c9e48 v8::internal::MaybeHandlev8::internal::Object v8::internal::(anonymous namespace)::HandleApiCallHelper(v8::internal::Isolate*, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::HeapObject, v8::internal::Handlev8::internal::FunctionTemplateInfo, v8::internal::Handlev8::internal::Object, v8::internal::BuiltinArguments) + 130000
15 niuwa 0x1011c95a4 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 127788
16 niuwa 0x1018b5d4c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit + 781960
17 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
18 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
19 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
20 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
21 niuwa 0x10181c6a4 Builtins_ArgumentsAdaptorTrampoline + 153568
22 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
23 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
24 niuwa 0x10181c6a4 Builtins_ArgumentsAdaptorTrampoline + 153568
25 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
26 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
27 niuwa 0x10181c6a4 Builtins_ArgumentsAdaptorTrampoline + 153568
28 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
29 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
30 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
31 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
32 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
33 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
34 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
35 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
36 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
37 niuwa 0x101824004 Builtins_InterpreterEntryTrampoline + 184640
38 niuwa 0x101821384 Builtins_JSEntryTrampoline + 173248
39 niuwa 0x10182102c Builtins_JSEntry + 172392
40 ??? 0x117ff4000 (缺少)

试试合并这个PR
https://github.com/cocos-creator/cocos2d-x-lite/pull/2358

这个加过了的

这个线程锁,一般如何操作会出现这个bug

自己顶下自己帖子

引擎组进来看看吧

之前遇到的问题,是update里面会进行_audioPlayers遍历,但是在完成触发函数内可能会出现开发者删除 _audioPlayers 元素的操作,这样就导致遍历使用的迭代器出现异常崩溃。目前就遇到这样的情况,已经提供PR,其他情况暂时没有遇到。你试试在回调函数处理逻辑加一帧延迟,看下问题可否解决。