最近游戏项目bugly收到若干崩溃日志,简单日志如下:
SIGSEGV(SEGV_MAPERR)
#00 pc 00a89062 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (cocos2d::ActionManager::removeAllActionsFromTarget(cocos2d::Node*) +09) [armeabi-v7a] |
#01 pc 00a54627 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (spritebuilder::CCBAnimationManager::~CCBAnimationManager() +18) [armeabi-v7a] 翻阅cocos2d-x代码,该函数是 首先感觉 if (ccArrayContainsObject(element->actions, element->currentAction) && (! element->currentActionSalvaged)) 这一行element->actions不判空是不行的,因为: 这里面的调用没判空 直接把指针拿来用了。 但是从bugly上看问题并非出在这里,而是出在ccArrayRemoveAllObjects这个接口的调用上。 这个接口也是这样,没有判空,首先抛却res是否正确的情况,这样的不判空就用指针的调用是不被允许的。 不知道有没有大神遇到过这样的情况。 |