IOS升级到1.7.2之后遇到新的奔溃问题,引擎组的看过来

反馈两个问题:
1、项目升级到1.7.2之后,奔溃频率更高了,概率性奔溃,很难重现,快要上架appstore了,麻烦引擎组的看看
2、另外双击home键退出app奔溃的问题还是会看到,这个虽然可以忽略,但是在友盟里面看到一堆错误日志还是不爽。

  • Creator 版本:1.7.2

  • 目标平台: IOS

  • 详细报错信息,包含调用堆栈:

  • 之前哪个版本是正常的:1.5.2

  • 手机型号 :iphone 6s

  • 编辑器操作系统 :IOS 11.2.2

  • 出现概率:概率性奔溃,很难重现
    这里是奔溃日志,详细的信息查看附件
    Application received signal SIGSEGV
    (null)
    ((
    0 CoreFoundation 0x0000000181561d1c + 148
    1 libobjc.A.dylib 0x00000001807b0528 objc_exception_throw + 56
    2 CoreFoundation 0x0000000181561c4c + 0
    3 PB-mobile 0x100d51c84 UmengSignalHandler + 128
    4 libsystem_platform.dylib 0x0000000181187b34 _sigtramp + 36
    5 PB-mobile 0x1000ad690 _ZNSt3__18functionIFvPN7cocos2d2ui6WidgetES4_EED1Ev + 28
    6 PB-mobile 0x1000ad690 _ZNSt3__18functionIFvPN7cocos2d2ui6WidgetES4_EED1Ev + 28
    7 PB-mobile 0x1009edfe0 _ZN7cocos2d18EventListenerFocusD2Ev + 64
    8 PB-mobile 0x1009ee024 _ZN7cocos2d18EventListenerFocusD1Ev + 28
    9 PB-mobile 0x1009ee058 _ZN7cocos2d18EventListenerFocusD0Ev + 28
    10 PB-mobile 0x10032b2bc _ZL31js_cocos2dx_Node_getContentSizeRN2se5StateE + 192
    11 PB-mobile 0x10032b0d4 Z39js_cocos2dx_Node_getContentSizeRegistryPK15OpaqueJSContextP13OpaqueJSValueS3_mPKPKS2_PS5 + 284
    12 JavaScriptCore 0x00000001884e0b44 + 348
    13 JavaScriptCore 0x0000000187ecba1c + 440
    14 JavaScriptCore 0x00000001885cb974 + 26980
    15 JavaScriptCore 0x00000001885c4e40 + 272
    16 JavaScriptCore 0x00000001884aa948 + 136
    17 JavaScriptCore 0x0000000187ecf948 + 400
    18 JavaScriptCore 0x0000000188401c44 + 128
    19 JavaScriptCore 0x0000000187ec3f60 + 940
    20 JavaScriptCore 0x00000001885c7984 + 10612
    21 JavaScriptCore 0x00000001885cb920 + 26896
    22 JavaScriptCore 0x00000001885cb920 + 26896
    23 JavaScriptCore 0x00000001885cb920 + 26896
    24 JavaScriptCore 0x00000001885c4e40 + 272
    25 JavaScriptCore 0x00000001884aa948 + 136
    26 JavaScriptCore 0x0000000187ecf948 + 400
    27 JavaScriptCore 0x0000000188122d04 _ZN3JSC12profiledCallEPNS_9ExecStateENS_15ProfilingReasonENS_7JSValueENS_8CallTypeERKNS_8CallDataES3_RKNS_7ArgListE + 168
    28 JavaScriptCore 0x0000000187ecf6f8 JSObjectCallAsFunction + 368
    29 PB-mobile 0x10007a00c ZN2se6Object4callERKNSt3__16vectorINS_5ValueENS1_9allocatorIS3_EEEEPS0_PS3 + 284
    30 PB-mobile 0x1003a456c Z43js_cocos2dx_SpriteFrame_constructorRegistryPK15OpaqueJSContextP13OpaqueJSValuemPKPKS2_PS5 + 468
    31 JavaScriptCore 0x00000001884e0884 + 248
    32 JavaScriptCore 0x0000000187ecba1c + 440
    33 JavaScriptCore 0x00000001885cbd14 + 27908
    34 JavaScriptCore 0x00000001885cb920 + 26896
    35 JavaScriptCore 0x00000001885cb920 + 26896
    36 JavaScriptCore 0x00000001885cb920 + 26896
    37 JavaScriptCore 0x00000001885cb984 + 26996
    38 JavaScriptCore 0x00000001885cb984 + 26996
    39 JavaScriptCore 0x00000001885cb920 + 26896
    40 JavaScriptCore 0x00000001885cb920 + 26896
    41 JavaScriptCore 0x00000001885cb920 + 26896
    42 JavaScriptCore 0x00000001885cb984 + 26996
    43 JavaScriptCore 0x00000001885cb984 + 26996
    44 JavaScriptCore 0x00000001885cb984 + 26996
    45 JavaScriptCore 0x00000001885cb984 + 26996
    46 JavaScriptCore 0x00000001885cb984 + 26996
    47 JavaScriptCore 0x00000001885cb984 + 26996
    48 JavaScriptCore 0x00000001885cb920 + 26896
    49 JavaScriptCore 0x00000001885cb920 + 26896
    50 JavaScriptCore 0x00000001885c4e40 + 272
    51 JavaScriptCore 0x00000001884aa948 + 136
    52 JavaScriptCore 0x0000000187ecf948 + 400
    53 JavaScriptCore 0x0000000188122d04 _ZN3JSC12profiledCallEPNS_9ExecStateENS_15ProfilingReasonENS_7JSValueENS_8CallTypeERKNS_8CallDataES3_RKNS_7ArgListE + 168
    54 JavaScriptCore 0x0000000187ecf6f8 JSObjectCallAsFunction + 368

奔溃日志.log.zip (2.4 KB)

信息有限,查不出原因。
可以考虑用v1.8.1 再试试看。

不能每次出问题了,都用这招啊:joy:

那怎么整?复现方式给我?
猜的基础都没有。
现在不知道你的问题到底是啥。
因为新版本修复一些问题,所以索性升级一下看看效果。
不然我能怎么样?怪我咯?

我们的工程也出现了一样的情况,现在用的就是 1.8.1 用户杀进程会不规律出现这样的问题

0 xxx	std::__1::__hash_iterator<std::__1::__hash_node<cocos2d::Texture2D*, void*>*> std::__1::__hash_table<cocos2d::Texture2D*, std::__1::hash<cocos2d::Texture2D*>, std::__1::equal_to<cocos2d::Texture2D*>, std::__1::allocator<cocos2d::Texture2D*> >::find<cocos2d::Texture2D*>(cocos2d::Texture2D* const&) + 108
1 xxx 	cocos2d::Texture2D::~Texture2D() + 56
2 xxx 	cocos2d::Texture2D::~Texture2D() + 12
3 xxx 	cocos2d::Sprite::~Sprite() + 64
4 xxx 	cocos2d::Sprite::~Sprite() + 12
5 xxx 	cocos2d::Label::~Label() + 148
6 xxx 	cocos2d::Label::~Label() + 12
7 xxx 	cocos2d::AutoreleasePool::clear() + 48
8 xxx 	_ZNSt3__110__function6__funcIZ24jsb_register_all_modulesvE3$_2NS_9allocatorIS2_EEFvvEEclEv + 20
9 xxx 	se::ScriptEngine::cleanup() + 348
10 xxx 	se::ScriptEngine::~ScriptEngine() + 20
11 xxx 	se::ScriptEngine::destroyInstance() + 28
12 xxx 	ScriptingCore::~ScriptingCore() + 36
13 xxx 	ScriptingCore::~ScriptingCore() + 12
14 xxx 	cocos2d::ScriptEngineManager::destroyInstance() + 44
15 xxx 	CocosDelegate::~CocosDelegate() + 36
16 libsystem_c.dylib	__cxa_finalize_ranges + 428
17 libsystem_c.dylib	exit + 24

下面的是用户正常使用的时候出现的崩溃,不知道现在该从那个方向找这个问题

0 JavaScriptCore	_llint_slow_path_jfalse + 352
1 JavaScriptCore	_llint_slow_path_jfalse + 52
2 JavaScriptCore	_llint_entry + 23928
3 JavaScriptCore	_llint_entry + 27012
4 JavaScriptCore	_llint_entry + 27012
5 JavaScriptCore	_llint_entry + 27012
6 JavaScriptCore	_llint_entry + 27012
7 JavaScriptCore	_llint_entry + 27012
8 JavaScriptCore	_llint_entry + 27012
9 JavaScriptCore	_llint_entry + 27012
10 JavaScriptCore	_llint_entry + 27012
11 JavaScriptCore	_llint_entry + 27012
12 JavaScriptCore	_llint_entry + 27012
13 JavaScriptCore	_llint_entry + 27012
14 JavaScriptCore	_llint_entry + 26912
15 JavaScriptCore	_llint_entry + 26912
16 JavaScriptCore	_vmEntryToJavaScript + 272
17 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 184
18 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400
19 JavaScriptCore	JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 168
20 JavaScriptCore	JSObjectCallAsFunction + 392
21 xxx	se::Object::call(std::__1::vector<se::Value, std::__1::allocator<se::Value> > const&, se::Object*, se::Value*) + 152
22 xxx	_ZNSt3__110__function6__funcIZL29js_EventListenerCustom_createRN2se5StateEE4$_17NS_9allocatorIS5_EEFvPN7cocos2d11EventCustomEEEclEOSA_ + 680
23 xxx	std::__1::function<void (cocos2d::VertexAttrib*)>::operator()(cocos2d::VertexAttrib*) const + 40
24 xxx	std::__1::function<void (cocos2d::VertexAttrib*)>::operator()(cocos2d::VertexAttrib*) const + 40
25 xxx	_ZNSt3__110__function6__funcIZN7cocos2d15EventDispatcher13dispatchEventEPNS2_5EventEE3$_2NS_9allocatorIS6_EEFbPNS2_13EventListenerEEEclEOSA_ + 52
26 xxx	std::__1::function<void (cocos2d::VertexAttrib*)>::operator()(cocos2d::VertexAttrib*) const + 40
27 xxx	cocos2d::EventDispatcher::dispatchEventToListeners(cocos2d::EventDispatcher::EventListenerVector*, std::__1::function<bool (cocos2d::EventListener*)> const&) + 292
28 xxx	cocos2d::EventDispatcher::dispatchEvent(cocos2d::Event*) + 176
29 xxx	cocos2d::Director::drawScene() + 60
30 xxx	cocos2d::Director::mainLoop() + 56
31 QuartzCore	CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 672
32 IOKit	IODispatchCalloutFromCFMessage + 392
33 CoreFoundation	___CFMachPortPerform + 188
34 CoreFoundation	___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
35 CoreFoundation	___CFRunLoopDoSource1 + 440
36 CoreFoundation	___CFRunLoopRun + 2196
37 CoreFoundation	CFRunLoopRunSpecific + 436
38 GraphicsServices	GSEventRunModal + 100
39 UIKit	UIApplicationMain + 236
40 xxx	main + 444
41 libdyld.dylib	_start + 4

请问 examplecase 是否会出现?

0 xxx std::__1::__hash_iterator<std::__1::__hash_node<cocos2d::Texture2D*, void*>> std::__1::__hash_table<cocos2d::Texture2D, std::__1::hashcocos2d::Texture2D*, std::__1::equal_tococos2d::Texture2D*, std::__1::allocatorcocos2d::Texture2D* >::findcocos2d::Texture2D*(cocos2d::Texture2D* const&) + 108
1 xxx cocos2d::Texture2D::~Texture2D() + 56
2 xxx cocos2d::Texture2D::~Texture2D() + 12

Texture2D::~Texture2D()
{
    if (s_allGLTexture2D.find(this) != s_allGLTexture2D.end()) {
        s_allGLTexture2D.erase(this);
    }
...
...

这个应该是一直都有的问题。

有什么好一点的解决办法没,急着上线,被崩溃给卡住了

有的,这个应该是1.x 到 1.8 一直都存在的问题,只是比较随机,涉及全局变量析构的问题。
我稍后提交一个PR,你试试看。

https://github.com/cocos-creator/cocos2d-x-lite/pull/1090

还有,你们反馈的都不是同一个问题,建议以后新建一个贴来讨论。

嗯嗯,好的,我这试试,谢谢引擎团队的大大