如何理解这次崩溃? : SIGBUS BUS_ADRALN

Posted

技术标签:

【中文标题】如何理解这次崩溃? : SIGBUS BUS_ADRALN【英文标题】:How to understand this crash? : SIGBUS BUS_ADRALN 【发布时间】:2012-07-12 07:52:23 【问题描述】:

那在堆栈跟踪中,我不明白这个错误:

0   CoreFoundation  0x30f57648 ___CFBasicHashFindBucket_Linear_NoCollision + 92  
1   CoreFoundation  0x30f59688 __CFBasicHashAddValue + 692
2   CoreFoundation  0x30eaff9f CFDictionarySetValue + 74
3   UIKit   0x35721a0b -[UITouchesEvent _gestureRecognizersForWindow:] + 282
4   UIKit   0x357215d5 -[UIWindow _sendGesturesForEvent:] + 28
5   UIKit   0x357214ab -[UIWindow sendEvent:] + 66
6   UIKit   0x3570a313 -[UIApplication sendEvent:] + 298
7   UIKit   0x35709c53 _UIApplicationHandleEvent + 5090
8   GraphicsServices    0x31a11e77 PurpleEventCallback + 666
9   CoreFoundation  0x30f1ba97     __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
10  CoreFoundation  0x30f1d83f __CFRunLoopDoSource1 + 166
11  CoreFoundation  0x30f1e60d __CFRunLoopRun + 520
12  CoreFoundation  0x30eaeec3 CFRunLoopRunSpecific + 230
13  CoreFoundation  0x30eaedcb CFRunLoopRunInMode + 58
14  GraphicsServices    0x31a1141f GSEventRunModal + 114
15  GraphicsServices    0x31a114cb GSEventRun + 62
16  UIKit   0x35734d69 -[UIApplication _run] + 404
17  UIKit   0x35732807 UIApplicationMain + 670
18  AppName 0x00002e3b 0x1000 + 7739  

崩溃有时会发生,我不知道它会发生什么样的动作。

我如何理解这个问题并解决我的问题?

【问题讨论】:

您是否在视图中添加手势识别器? 如果您可以在调试模式下重现它,请在调试控制台输入bt 以查看详细的回溯。 是的,我正在向视图添加手势。手势效果很好。这是第一次在手势内发生这种崩溃。 @A-Live 我无法重现它 :(。我在视图之间切换,非常快速地调用手势识别器,然后...BUM。 与往常一样,您可能需要检查与手势识别内存管理相关的所有内容。此外,它可能会帮助您知道,每次我收到这种崩溃都与线程/runLoops 有关。 【参考方案1】:

我认为问题可能在于您将手势对象重复用于多个基于 UIView 的对象。它们不能重复使用。我过去也遇到过类似的问题(不完全相同的崩溃)。它的文档突出了限制。我想有一个内部状态(崩溃中看到的哈希表),它以不同的基于 UI 视图的对象的冲突方式更新。

如果您不重新使用它们,请尝试暂时删除所有这些以确认系统是否稳定。

【讨论】:

以上是关于如何理解这次崩溃? : SIGBUS BUS_ADRALN的主要内容,如果未能解决你的问题,请参考以下文章

Native崩溃说明 so库崩溃SIGBUS(bad memory access) 和 SIGSEGV(Invalid memory reference)

Native崩溃说明 so库崩溃SIGBUS(bad memory access) 和 SIGSEGV(Invalid memory reference)

应用随机崩溃与致命信号7(SIGBUS),代码2或致命信号11(SIGSEGV),代码1

GCD dispatch_after 调用导致 SIGBUS 信号

分布式对象崩溃

iOS 崩溃日志中的异常类型