如何理解这次崩溃? : 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