【发布时间】:2019-07-12 06:47:21
【问题描述】:
更新到 Mojave 后出现这个奇怪的崩溃。
没有做任何特别的事情,只是创建一个 NSWindow 并调用orderFrontRegardless
以前一直很好用。
1 libsystem_platform.dylib 0x00007fff6610ab5d _sigtramp + 29
2 ??? 0x0000000000000000 0x0 + 0
3 CoreFoundation 0x00007fff39b00bb6 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
4 CoreFoundation 0x00007fff39b00b30 ___CFXRegistrationPost_block_invoke + 63
5 CoreFoundation 0x00007fff39b00a9a _CFXRegistrationPost + 404
6 CoreFoundation 0x00007fff39b08f48 ___CFXNotificationPost_block_invoke + 87
7 CoreFoundation 0x00007fff39a71994 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1642
8 CoreFoundation 0x00007fff39a70d47 _CFXNotificationPost + 732
9 Foundation 0x00007fff3bdab217 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
10 AppKit 0x00007fff3720538b -[NSWindow _setFrameCommon:display:stashSize:] + 3090
11 AppKit 0x00007fff37204766 -[NSWindow _setFrame:display:allowImplicitAnimation:stashSize:] + 192
12 AppKit 0x00007fff3720469f -[NSWindow setFrame:display:] + 51
13 AppKit 0x00007fff3727aca9 -[NSWindow _reallyDoOrderWindowAboveOrBelow:relativeTo:findKey:forCounter:force:isModal:] + 1336
14 AppKit 0x00007fff372792a0 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 283
15 AppKit 0x00007fff37a0dce9 -[NSWindow orderFrontRegardless] + 40
代码(这是一个控制台应用程序):
NSWindow *window = [[NSWindow alloc] initWithContentRect:windowRect
styleMask:windowStyle
backing:NSBackingStoreBuffered
defer:NO];
// Since Snow Leopard, programs without application bundles and Info.plist
// files don't get a menubar and can't be brought to the front unless the
// presentation option is changed
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
[NSApp activateIgnoringOtherApps:YES];
[window makeKeyAndOrderFront:nil];
【问题讨论】:
-
可能会向已释放/已死的对象发送通知。你有最低限度的代码示例吗?
-
@WarrenBurton 我已经添加了代码。
-
评论是否相关?即这个应用程序没有 plist 和 bundle 吗? .我无法在常规基线“Cocoa App”模板中重现崩溃。
-
是的,它是一个控制台应用程序。
-
_sigtramp的最后一个堆栈帧表明您安装了信号处理程序 - 可能是第 3 方崩溃报告器。这个堆栈跟踪实际上是从哪里来的?这些通常会与 Apple 的 ReportCrash 混淆,因此无法捕获原始的崩溃堆栈跟踪。
标签: objective-c macos cocoa crash macos-mojave