如何解决没有堆栈跟踪的高山脉上的 SIGSEGV
我们的应用程序仅在 macOS 10.13.6 上开始为某些用户崩溃,并显示以下崩溃日志。这并没有告诉我们太多。我们已经尝试进行了几次调整,但没有任何帮助。当我们无法访问用户的机器时,我们如何弄清楚该怎么做?他们尝试过重置应用、重新启动、重新安装等,但没有任何帮助。
我们没有收到任何其他版本的 macOS 的投诉。已尝试在 Xcode 中启用僵尸以及所有其他与内存相关的调试选项,但没有任何结果(在 macOS 11 上测试时)。我们无法在 10.13 上构建,因为我们的代码需要 Xcode 12。
Crashed Thread: 0 dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000103e00cebec8
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL,Code 0xb
Terminating Process: exc handler [0]
VM Regions Near 0x103e00cebec8:
CoreAnimation 0000000125666000-0000000125f1f000 [ 8932K] rw-/rwx SM=PRV
-->
MALLOC_NANO 0000600000000000-0000600001e00000 [ 30.0M] rw-/rwx SM=PRV
Thread 0 Crashed:: dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff57f9b184 objc_release + 36
1 libobjc.A.dylib 0x00007fff57f9c087 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 817
2 com.apple.AppKit 0x00007fff2e34039b __37+[NSdisplayCycle currentdisplayCycle]_block_invoke + 244
3 com.apple.QuartzCore 0x00007fff3bff8877 CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
4 com.apple.QuartzCore 0x00007fff3bff7339 CA::Transaction::commit() + 171
5 com.apple.AppKit 0x00007fff2eaf8a72 __65+[CATransaction(NSCATransaction) NS_setFlushesWithdisplayRefresh]_block_invoke + 283
6 com.apple.CoreFoundation 0x00007fff30c88097 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
7 com.apple.CoreFoundation 0x00007fff30c87fbf __CFRunLoopDoObservers + 527
8 com.apple.CoreFoundation 0x00007fff30c6a538 __CFRunLoopRun + 1240
9 com.apple.CoreFoundation 0x00007fff30c69dd3 CFRunLoopRunSpecific + 483
10 com.apple.HIToolBox 0x00007fff2ff54d96 runcurrentEventLoopInMode + 286
11 com.apple.HIToolBox 0x00007fff2ff54b06 ReceiveNextEventCommon + 613
12 com.apple.HIToolBox 0x00007fff2ff54884 _BlockUntilNextEventMatchingListInModeWithFilter + 64
13 com.apple.AppKit 0x00007fff2e201a3b _DPSNextEvent + 2085
14 com.apple.AppKit 0x00007fff2e997e34 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
15 com.apple.AppKit 0x00007fff2e1f684d -[NSApplication run] + 764
16 com.apple.AppKit 0x00007fff2e1c5a3a NSApplicationMain + 804
17 libdyld.dylib 0x00007fff58bc4015 start + 1
解决方法
结果证明这是一场噩梦,因为我们花了 3 多天的时间,尝试了 40 次左右。没有任何效果。结果证明是对单元格的 textField
的约束,我们在 updateConstraints()
中删除并重新创建了它。仅在 macOS 10.13 上,这会导致以某种方式释放 textField
。解决方案是将之前的约束存储在一个 ivar 中,这样仍然有一个对控件的强引用,以防止它被释放。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。