removeAllActionsFromTarget

来源:互联网 发布:java项目开发案例视频 编辑:程序博客网 时间:2024/06/04 20:20


SIGSEGV(SEGV_MAPERR)

#00 pc 00a89062 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (cocos2d::ActionManager::removeAllActionsFromTarget(cocos2d::Node*)+9) [armeabi-v7a]

#01 pc 00a54627 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (spritebuilder::CCBAnimationManager::~CCBAnimationManager()+18) [armeabi-v7a]

#02 pc 00a546d5 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (spritebuilder::CCBAnimationManager::~CCBAnimationManager()+4) [armeabi-v7a]

#03 pc 00adf9c7 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (cocos2d::Ref::release()+14) [armeabi-v7a]

#04 pc 00a5baf9 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (std::_Sp_counted_ptr_inplace<cocos2d::Map<cocos2d::Node*, spritebuilder::CCBAnimationManager*>, std::allocator<cocos2d::Map<cocos2d::Node*, spritebuilder::CCBAnimationManager*> >, (__gnu_cxx::_Lock_policy)2>::_M_dispose()+10) [armeabi-v7a]

#05 pc 00a1a2b1 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count()+42) [armeabi-v7a]

#06 pc 00a58ab3 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (spritebuilder::CCBReader::~CCBReader()+142) [armeabi-v7a]

#07 pc 00a58ae1 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (spritebuilder::CCBReader::~CCBReader()+4) [armeabi-v7a]

#08 pc 00adf9c7 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (cocos2d::Ref::release()+14) [armeabi-v7a]

#09 pc 00ad3bc1 /data/app/com.bilibili.meng.qihoo-1/lib/arm/libcocos2dcpp.so (cocos2d::AutoreleasePool::clear()+16) [armeabi-v7a]


bugly收集的信息如上,对应接口如下:

void ActionManager::removeAllActionsFromTarget(Node *target)

{

    // explicit null handling

    if (target ==nullptr)

    {

        return;

    }


    tHashElement *element =nullptr;

    HASH_FIND_PTR(_targets, &target, element);

    if (element)

    {

        if (ccArrayContainsObject(element->actions, element->currentAction) && (! element->currentActionSalvaged))

        {

            element->currentAction->retain();

            element->currentActionSalvaged =true;

        }


        ccArrayRemoveAllObjects(element->actions);

        if (_currentTarget == element)

        {

            _currentTargetSalvaged =true;

        }

        else

        {

            deleteHashElement(element);

        }

    }

    else

    {

//        CCLOG("cocos2d: removeAllActionsFromTarget: Target not found");

    }

}


如果崩溃在 ccArrayRemoveAllObjects(element->actions);中 现在列一下这个函数的详情如下:

/** Removes all objects from arr */

void ccArrayRemoveAllObjects(ccArray *arr)

{

while (arr->num >0)

    {

(arr->arr[--arr->num])->release();

    }

}






0 0