【问题标题】:SIGSEGV on high sierra without a stacktrace没有堆栈跟踪的高山脉上的 SIGSEGV
【发布时间】:2021-05-06 00:36:13
【问题描述】:

我们的应用已开始在 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

【问题讨论】:

  • 你能在 10.13 上测试吗?
  • 我在 VMWare 映像上做过,但无法重现。然而,我们的少数用户遇到了完全相同的问题。我已将范围缩小到拨打[tableView reloadData]
  • [tableView reloadData] 是否在主线程上调用?也许这会有所帮助:Mac OS X Debugging Magic.
  • 我是的,但我想我终于成功了。

标签: objective-c macos crash segmentation-fault macos-high-sierra


【解决方案1】:

结果证明这是一场噩梦,因为我们花了 3 多天时间,尝试了 40 次左右。没有任何效果。结果证明这是对单元格的textField 的约束,我们在updateConstraints() 中删除并重新创建了它。仅在 macOS 10.13 上,这会导致以某种方式释放 textField。解决方案是将先前的约束存储在 ivar 中,以便仍然对控件有强引用,以防止它被释放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2017-04-17
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多