解释崩溃日志而不引用App函数/类 [英] Interpreting a crash log without references to App functions/classes

查看:88
本文介绍了解释崩溃日志而不引用App函数/类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在上一个应用程序上遇到随机崩溃(大约2%的用户似乎遇到了崩溃),但是我无法从崩溃日志中找到任何有用的信息。似乎我没有对我的代码的引用,并且发现很难理解发生了什么以及如何生成此崩溃...我在此处粘贴了崩溃日志的相关部分,有关它的任何提示或想法?有什么明显的我想念...

I'm getting a "random" crash on my last application (around the 2% of the users seems to experience the crash) but I'm not able to find any useful info from the crash logs. It seems that I don't have any reference to my code and I find extremely difficult to understand what is going on and how this crash is generated... I paste here the relevant part of the crash log, any hints or thoughts about it? is there anything obvious that I'm missing ...

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x18266d900 __exceptionPreprocess + 124 (NSException.m:162)
1   libobjc.A.dylib                 0x181cdbf80 objc_exception_throw + 56 (objc-exception.mm:531)
2   CoreFoundation                  0x18266d7d0 +[NSException raise:format:arguments:] + 108 (NSException.m:131)
3   Foundation                      0x182fe099c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112 (NSException.m:152)
4   UIKit                           0x187608ac0 -[UIApplication _runWithMainScene:transitionContext:completion:] + 3216 (UIApplication.m:3315)
5   UIKit                           0x1876055c0 -[UIApplication workspaceDidEndTransaction:] + 168 (UIApplication.m:2662)
6   FrontBoardServices              0x183c23790 -[FBSSerialQueue _performNext] + 184 (FBSSerialQueue.m:157)
7   FrontBoardServices              0x183c23b10 -[FBSSerialQueue _performNextFromRunLoopSource] + 56 (FBSSerialQueue.m:204)
8   CoreFoundation                  0x182624efc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1761)
9   CoreFoundation                  0x182624990 __CFRunLoopDoSources0 + 540 (CFRunLoop.c:1807)
10  CoreFoundation                  0x182622690 __CFRunLoopRun + 724 (CFRunLoop.c:2536)
11  CoreFoundation                  0x182551680 CFRunLoopRunSpecific + 384 (CFRunLoop.c:2814)
12  UIKit                           0x1873ce580 -[UIApplication _run] + 460 (UIApplication.m:2503)
13  UIKit                           0x1873c8d90 UIApplicationMain + 204 (UIApplication.m:3681)
14  KickLow                         0x100153604 0x100024000 + 1242628
15  libdyld.dylib                   0x1820f28b8 start + 4 (start_glue.s:80)

Thread 0 name:
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x0000000182210140 __pthread_kill + 8
1   libsystem_pthread.dylib         0x00000001822d8ef8 pthread_kill + 112 (pthread.c:1247)
2   libsystem_c.dylib               0x0000000182181dac abort + 140 (abort.c:91)
3   libc++abi.dylib                 0x0000000181cb53f4 abort_message + 132 (abort_message.cpp:47)
4   libc++abi.dylib                 0x0000000181cd1e98 default_terminate_handler() + 304 (cxa_default_handlers.cpp:67)
5   libobjc.A.dylib                 0x0000000181cdc248 _objc_terminate() + 124 (objc-exception.mm:678)
6   libc++abi.dylib                 0x0000000181ccef44 std::__terminate(void (*)()) + 16 (cxa_handlers.cpp:62)
7   libc++abi.dylib                 0x0000000181cceb10 __cxa_rethrow + 144 (cxa_exception.cpp:480)
8   libobjc.A.dylib                 0x0000000181cdc120 objc_exception_rethrow + 44 (objc-exception.mm:581)
9   CoreFoundation                  0x0000000182551728 CFRunLoopRunSpecific + 552 (CFRunLoop.c:2827)
10  UIKit                           0x00000001873ce580 -[UIApplication _run] + 460 (UIApplication.m:2503)
11  UIKit                           0x00000001873c8d90 UIApplicationMain + 204 (UIApplication.m:3681)
12  KickLow                         0x0000000100153604 0x100024000 + 1242628
13  libdyld.dylib                   0x00000001820f28b8 start + 4 (start_glue.s:80)


推荐答案

将我的评论作为答案。

Moved my comment as answer. @MatterGoal glad to know it helped.

您的问题似乎类似于从通知中心启动应用程序时发生奇怪的崩溃


您的代码或您正在使用的第三方库手动旋转运行循环。这导致-workspaceDidEndTransaction:被重新调用,并在释放后触发使用。如果在-[NSRunLoop runMode:beforeDate:]和-[NSRunLoop runUntilDate:]上设置断点,则断点应位于前一个堆栈帧上。

Either your code or a third-party library you are using is manually spinning the runloop. This is causing -workspaceDidEndTransaction: to be called re-entrantly and triggers a use after free. If you set a breakpoint on -[NSRunLoop runMode:beforeDate:] and -[NSRunLoop runUntilDate:], it should hit with the guilty code being on the previous stack frame.

手动旋转时永远不要建议运行循环,如果您可以延迟
直到应用程序完成启动(收到所有
启动应用程序委托调用),则应该避免发生
崩溃。

While manually spinning the run loop is never recommended, if you can delay doing it until your application finishes starting up (all the launch app delegate calls received) you should avoid hitting this crash.

这篇关于解释崩溃日志而不引用App函数/类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆