【应用启动后闪退】
2015-01-08
耗时3小时
【描述】
这个问题是实现了自动恢复社交帐号状态后出现的。
初步测试,如果登录后再退出游戏,重启后有概率的出现闪退。如果没有退出前没有登录,则没有问题。
启动前如果清理了登录状态记录信息,也没问题。
获取到的栈信息如下:
01-08 14:43:12.541: I/DEBUG(5980): backtrace:
01-08 14:43:12.542: I/DEBUG(5980): #00 pc 0029c582 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::ZipFile::fileExists(std::string const&) const+1)
01-08 14:43:12.542: I/DEBUG(5980): #01 pc 0028d29d /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtilsAndroid::isFileExist(std::string const&)+60)
01-08 14:43:12.542: I/DEBUG(5980): #02 pc 0028a027 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::getFullPathForDirectoryAndFilename(std::string const&, std::string const&)+22)
01-08 14:43:12.542: I/DEBUG(5980): #03 pc 0028981f /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::getPathForFilename(std::string const&, std::string const&, std::string const&)+186)
01-08 14:43:12.542: I/DEBUG(5980): #04 pc 0028aec5 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::fullPathForFilename(char const*)+224)
01-08 14:43:12.542: I/DEBUG(5980): #05 pc 002a1b2d /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCTextureCache::addUIImage(cocos2d::CCImage*, char const*)+48)
01-08 14:43:12.542: I/DEBUG(5980): #06 pc 0026ca13 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCDirector::createStatsLabel()+174)
01-08 14:43:12.542: I/DEBUG(5980): #07 pc 0026cc63 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCDirector::setOpenGLView(cocos2d::CCEGLView*)+62)
01-08 14:43:12.542: I/DEBUG(5980): #08 pc 001ea61b /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (AppDelegate::applicationDidFinishLaunching()+26)
01-08 14:43:12.542: I/DEBUG(5980): #09 pc 0028d07b /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCApplication::run()+6)
01-08 14:43:12.542: I/DEBUG(5980): #10 pc 001e7025 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+108)
走读代码、网上查询也找不到头绪。
通过排除法,基本已经确认是由于自动登录导致的闪退
【猜测一】
自动登录时机太早,在onStart就执行了,可能导致冲突
应对:在C代码调用开始后,才执行自动登录功能
结果:闪退出现概率降低,不过出现新的栈信息
01-08 16:25:07.795: I/DEBUG(9332): backtrace:
01-08 16:25:07.795: I/DEBUG(9332): #00 pc 001f513c /mnt/asec/com.konamobile.dessertdash-2/lib/libbubblebear.so (SocialCtrlData::handleSocialRet(SocialAction, bool)+119)
01-08 16:25:07.795: I/DEBUG(9332): #01 pc 001f5265 /mnt/asec/com.konamobile.dessertdash-2/lib/libbubblebear.so (Java_com_cldeer_bubblebear_GoogleInterface_loginResultCallback+16)
01-08 16:25:07.795: I/DEBUG(9332): #02 pc 0001e950 /system/lib/libdvm.so (dvmPlatformInvoke+112)
01-08 16:25:07.795: I/DEBUG(9332): #03 pc 0004e841 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+500)
01-08 16:25:07.795: I/DEBUG(9332): #04 pc 00050d69 /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+200)
01-08 16:25:07.795: I/DEBUG(9332): #05 pc 00027d28 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #06 pc 0002bfe0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
01-08 16:25:07.795: I/DEBUG(9332): #07 pc 00062293 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+370)
01-08 16:25:07.795: I/DEBUG(9332): #08 pc 0006a205 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #09 pc 00027d28 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #10 pc 0002bfe0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
01-08 16:25:07.795: I/DEBUG(9332): #11 pc 00061f6f /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+282)
01-08 16:25:07.795: I/DEBUG(9332): #12 pc 0004aac9 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #13 pc 0004b8e9 /system/lib/libandroid_runtime.so
01-08 16:25:07.795: I/DEBUG(9332): #14 pc 0004c7f5 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+668)
01-08 16:25:07.795: I/DEBUG(9332): #15 pc 00000db7 /system/bin/app_process
01-08 16:25:07.795: I/DEBUG(9332): #16 pc 0001c3d4 /system/lib/libc.so (__libc_init+64)
01-08 16:25:07.795: I/DEBUG(9332): #17 pc 00000ae8 /system/bin/app_process
对函数SocialCtrlData::handleSocialRet(SocialAction, bool)进行定位排查,没发现用法问题
【猜测二】
还是登录时机比较早,可能跟部分行为冲突了。
应对:在开始进入首页面后,再尝试自动登录
结果:测试20次左右,闪退问题没有再出现过了
【总结】
问题根因没有定位到,暂时规避了,虽然还存在一定风险,不过从测试数据看,风险已经降到可以忽略的程度了
2015-01-08
耗时3小时
【描述】
这个问题是实现了自动恢复社交帐号状态后出现的。
初步测试,如果登录后再退出游戏,重启后有概率的出现闪退。如果没有退出前没有登录,则没有问题。
启动前如果清理了登录状态记录信息,也没问题。
获取到的栈信息如下:
01-08 14:43:12.541: I/DEBUG(5980): backtrace:
01-08 14:43:12.542: I/DEBUG(5980): #00 pc 0029c582 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::ZipFile::fileExists(std::string const&) const+1)
01-08 14:43:12.542: I/DEBUG(5980): #01 pc 0028d29d /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtilsAndroid::isFileExist(std::string const&)+60)
01-08 14:43:12.542: I/DEBUG(5980): #02 pc 0028a027 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::getFullPathForDirectoryAndFilename(std::string const&, std::string const&)+22)
01-08 14:43:12.542: I/DEBUG(5980): #03 pc 0028981f /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::getPathForFilename(std::string const&, std::string const&, std::string const&)+186)
01-08 14:43:12.542: I/DEBUG(5980): #04 pc 0028aec5 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCFileUtils::fullPathForFilename(char const*)+224)
01-08 14:43:12.542: I/DEBUG(5980): #05 pc 002a1b2d /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCTextureCache::addUIImage(cocos2d::CCImage*, char const*)+48)
01-08 14:43:12.542: I/DEBUG(5980): #06 pc 0026ca13 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCDirector::createStatsLabel()+174)
01-08 14:43:12.542: I/DEBUG(5980): #07 pc 0026cc63 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCDirector::setOpenGLView(cocos2d::CCEGLView*)+62)
01-08 14:43:12.542: I/DEBUG(5980): #08 pc 001ea61b /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (AppDelegate::applicationDidFinishLaunching()+26)
01-08 14:43:12.542: I/DEBUG(5980): #09 pc 0028d07b /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (cocos2d::CCApplication::run()+6)
01-08 14:43:12.542: I/DEBUG(5980): #10 pc 001e7025 /mnt/asec/com.konamobile.dessertdash-1/lib/libbubblebear.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+108)
走读代码、网上查询也找不到头绪。
通过排除法,基本已经确认是由于自动登录导致的闪退
【猜测一】
自动登录时机太早,在onStart就执行了,可能导致冲突
应对:在C代码调用开始后,才执行自动登录功能
结果:闪退出现概率降低,不过出现新的栈信息
01-08 16:25:07.795: I/DEBUG(9332): backtrace:
01-08 16:25:07.795: I/DEBUG(9332): #00 pc 001f513c /mnt/asec/com.konamobile.dessertdash-2/lib/libbubblebear.so (SocialCtrlData::handleSocialRet(SocialAction, bool)+119)
01-08 16:25:07.795: I/DEBUG(9332): #01 pc 001f5265 /mnt/asec/com.konamobile.dessertdash-2/lib/libbubblebear.so (Java_com_cldeer_bubblebear_GoogleInterface_loginResultCallback+16)
01-08 16:25:07.795: I/DEBUG(9332): #02 pc 0001e950 /system/lib/libdvm.so (dvmPlatformInvoke+112)
01-08 16:25:07.795: I/DEBUG(9332): #03 pc 0004e841 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+500)
01-08 16:25:07.795: I/DEBUG(9332): #04 pc 00050d69 /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+200)
01-08 16:25:07.795: I/DEBUG(9332): #05 pc 00027d28 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #06 pc 0002bfe0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
01-08 16:25:07.795: I/DEBUG(9332): #07 pc 00062293 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+370)
01-08 16:25:07.795: I/DEBUG(9332): #08 pc 0006a205 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #09 pc 00027d28 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #10 pc 0002bfe0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+180)
01-08 16:25:07.795: I/DEBUG(9332): #11 pc 00061f6f /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+282)
01-08 16:25:07.795: I/DEBUG(9332): #12 pc 0004aac9 /system/lib/libdvm.so
01-08 16:25:07.795: I/DEBUG(9332): #13 pc 0004b8e9 /system/lib/libandroid_runtime.so
01-08 16:25:07.795: I/DEBUG(9332): #14 pc 0004c7f5 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+668)
01-08 16:25:07.795: I/DEBUG(9332): #15 pc 00000db7 /system/bin/app_process
01-08 16:25:07.795: I/DEBUG(9332): #16 pc 0001c3d4 /system/lib/libc.so (__libc_init+64)
01-08 16:25:07.795: I/DEBUG(9332): #17 pc 00000ae8 /system/bin/app_process
对函数SocialCtrlData::handleSocialRet(SocialAction, bool)进行定位排查,没发现用法问题
【猜测二】
还是登录时机比较早,可能跟部分行为冲突了。
应对:在开始进入首页面后,再尝试自动登录
结果:测试20次左右,闪退问题没有再出现过了
【总结】
问题根因没有定位到,暂时规避了,虽然还存在一定风险,不过从测试数据看,风险已经降到可以忽略的程度了