游戏启动时崩溃

  • Creator 版本:2.1

  • 目标平台: iOS

  • 详细报错信息,包含调用堆栈:
    0 JavaScriptCore JSObjectGetPrivate + 60
    1 DatePlay se::internal::getPrivate(OpaqueJSValue*) + 24
    2 DatePlay se::internal::jsToSeValue(OpaqueJSContext const*, OpaqueJSValue const*, se::Value*) + 608
    3 DatePlay se::internal::jsToSeArgs(OpaqueJSContext const*, unsigned short, OpaqueJSValue const* const*, std::__1::vector<se::Value, std::__1::allocatorse::Value >) + 116
    4 DatePlay JSB_glTexImage2DRegistry(OpaqueJSContext const
    , OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 256
    5 JavaScriptCore 0x00000001cbd5e000 + 571888
    6 JavaScriptCore 0x00000001cbd5e000 + 435696
    7 JavaScriptCore 0x00000001cbd5e000 + 432612
    8 JavaScriptCore 0x00000001cbd5e000 + 432612
    9 JavaScriptCore 0x00000001cbd5e000 + 432612
    10 JavaScriptCore 0x00000001cbd5e000 + 432612
    11 JavaScriptCore 0x00000001cbd5e000 + 432612
    12 JavaScriptCore 0x00000001cbd5e000 + 432612
    13 JavaScriptCore 0x00000001cbd5e000 + 433552
    14 JavaScriptCore 0x00000001cbd5e000 + 432612
    15 JavaScriptCore 0x00000001cbd5e000 + 432612
    16 JavaScriptCore 0x00000001cbd5e000 + 402196
    17 JavaScriptCore 0x00000001cbd5e000 + 7149048
    18 JavaScriptCore JSC::callSetter(JSC::ExecState*, JSC::JSValue, JSC::JSValue, JSC::JSValue, JSC::ECMAMode) + 260
    19 JavaScriptCore JSC::JSObject::putInlineSlow(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 840
    20 JavaScriptCore JSC::JSObject::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 380
    21 JavaScriptCore 0x00000001cbd5e000 + 7788608
    22 JavaScriptCore 0x00000001cbd5e000 + 418404
    23 JavaScriptCore 0x00000001cbd5e000 + 432716
    24 JavaScriptCore 0x00000001cbd5e000 + 432716
    25 JavaScriptCore 0x00000001cbd5e000 + 432716
    26 JavaScriptCore 0x00000001cbd5e000 + 432612
    27 JavaScriptCore 0x00000001cbd5e000 + 432612
    28 JavaScriptCore 0x00000001cbd5e000 + 432612
    29 JavaScriptCore 0x00000001cbd5e000 + 432612
    30 JavaScriptCore 0x00000001cbd5e000 + 432612
    31 JavaScriptCore 0x00000001cbd5e000 + 432716
    32 JavaScriptCore 0x00000001cbd5e000 + 432716
    33 JavaScriptCore 0x00000001cbd5e000 + 432716
    34 JavaScriptCore 0x00000001cbd5e000 + 432612
    35 JavaScriptCore 0x00000001cbd5e000 + 402196
    36 JavaScriptCore 0x00000001cbd5e000 + 7149048
    37 JavaScriptCore JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 188
    38 JavaScriptCore JSObjectCallAsFunction + 368
    39 DatePlay se::Object::call(std::__1::vector<se::Value, std::__1::allocatorse::Value > const&, se::Object*, se::Value*) + 284
    40 DatePlay _ZZZZ21jsb_global_load_imageRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKN2se5ValueEENK3$_4clES7_PhiENKUliE_clEiENKUlvE_clEv + 3068
    41 DatePlay _ZNSt3__128__invoke_void_return_wrapperIvE6__callIJRZZZ21jsb_global_load_imageRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKN2se5ValueEENK3$4clESA_PhiENKUliE_clEiEUlvE_EEEvDpOT + 48
    42 DatePlay _ZNSt3__110__function6__funcIZZZ21jsb_global_load_imageRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKN2se5ValueEENK3$_4clES9_PhiENKUliE_clEiEUlvE_NS5_ISH_EEFvvEEclEv + 44
    43 DatePlay std::__1::function<void ()>::operator()() const + 108
    44 DatePlay cocos2d::Scheduler::update(float) + 1196
    45 DatePlay -[MainLoop doCaller:] + 456
    46 QuartzCore 0x00000001c8f34000 + 68748
    47 IOKit IODispatchCalloutFromCFMessage + 488
    48 CoreFoundation 0x00000001c4959000 + 544796
    49 CoreFoundation 0x00000001c4959000 + 706664
    50 CoreFoundation 0x00000001c4959000 + 704436
    51 CoreFoundation 0x00000001c4959000 + 683372
    52 CoreFoundation CFRunLoopRunSpecific + 436
    53 GraphicsServices GSEventRunModal + 100
    54 UIKitCore UIApplicationMain + 212
    55 DatePlay main + 88
    56 libdyld.dylib 0x00000001c44be000 + 2996

  • 重现方式: 在游戏启动的时候,已经遇到过很多次了,但不是必现的。

另外 还遇到过一次另外的崩溃,在升级2.1后遇到的,只有一次。堆栈如下
0 JavaScriptCore WTFCrashWithInfo(int, char const*, char const*, int, unsigned long long, unsigned long long, unsigned long long) + 12
1 JavaScriptCore JSC::JSObject::getOwnStaticPropertySlot(JSC::VM&, JSC::PropertyName, JSC::PropertySlot&) + 0
2 JavaScriptCore JSC::JSValue::toStringSlowCase(JSC::ExecState*, bool) const + 1088
3 JavaScriptCore JSC::JSValue::toWTFStringSlowCase(JSC::ExecState*) const + 732
4 JavaScriptCore Inspector::ScriptArguments::getFirstArgumentAsString(WTF::String&) + 360
5 JavaScriptCore 0x00000001cbd5e000 + 6966476
6 JavaScriptCore 0x00000001cbd5e000 + 9118320
7 JavaScriptCore 0x00000001cbd5e000 + 402572
8 JavaScriptCore 0x00000001cbd5e000 + 7149140
9 JavaScriptCore JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 188
10 JavaScriptCore JSObjectCallAsFunction + 368
11 DatePlay se::Object::call(std::__1::vector<se::Value, std::__1::allocatorse::Value > const&, se::Object*, se::Value*) + 284
12 DatePlay se::(anonymous namespace)::JSB_console_log(se::State&) + 132
13 DatePlay se::(anonymous namespace)::JSB_console_logRegistry(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 288
14 JavaScriptCore 0x00000001cbd5e000 + 571888
15 JavaScriptCore 0x00000001cbd5e000 + 435696
16 JavaScriptCore 0x00000001cbd5e000 + 432716
17 JavaScriptCore 0x00000001cbd5e000 + 432716
18 JavaScriptCore 0x00000001cbd5e000 + 432716
19 JavaScriptCore 0x00000001cbd5e000 + 402196
20 JavaScriptCore 0x00000001cbd5e000 + 7149048
21 JavaScriptCore JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 188
22 JavaScriptCore JSObjectCallAsFunction + 368
23 DatePlay se::Object::call(std::__1::vector<se::Value, std::__1::allocatorse::Value > const&, se::Object*, se::Value*) + 284
24 DatePlay JSB_WebSocketDelegate::onOpen(cocos2d::network::WebSocket*) + 1284
25 DatePlay -[WebSocketImpl webSocketDidOpen:] + 348
26 DatePlay __36-[SRWebSocket _HTTPHeadersDidFinish]_block_invoke + 164
27 DatePlay __45-[SRDelegateController performDelegateBlock:]_block_invoke.46 + 116
28 libdispatch.dylib 0x00000001c444d000 + 394952
29 libdispatch.dylib 0x00000001c444d000 + 398468
30 libdispatch.dylib 0x00000001c444d000 + 55716
31 CoreFoundation 0x00000001c4959000 + 703988
32 CoreFoundation 0x00000001c4959000 + 683196
33 CoreFoundation CFRunLoopRunSpecific + 436
34 GraphicsServices GSEventRunModal + 100
35 UIKitCore UIApplicationMain + 212
36 DatePlay main + 88
37 libdyld.dylib 0x00000001c44be000 + 2996

  • 之前哪个版本是正常的 :之前用的2.0.5 ,也出现过。

  • 手机型号 :多个型号的手机 均出现过

  • 手机浏览器 :

  • 编辑器操作系统 :

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

  • 出现概率:概率应该是低于10%的。

  • 额外线索:

偶发还是必现的?看起来像是JS对象的属性赋值出的问题。可以提供一个demo么?

就是偶发。所以比较头疼。概率并不算高,但是基数大了,出现的次数还是比较多。

我也出现了一次 Utils.cpp getPrivate(JSObjectRef obj) 里面
2.0.8

https://forum.cocos.com/t/jsobjectref-root-unroot-gc/74369

同样的问题。