我有一个mac应用程序,用于使用system()运行一些ImageMagick命令--但是突然之间,这些调用开始崩溃。
EXC_SOFTWARE (code=131072,subcode 0x0)最近,我唯一能想到的改变就是升级到High,然后Xcode自己升级到10.0 --所以其中一个可能与它有关。
因此,例如,如果我尝试:
system("ls -l");或
NSTask *task = [[NSTask alloc] init];
task.executableURL = [NSURL fileURLWithPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"ls -l"]];
NSError *error=nil;
[task launchAndReturnError:&error];
[task waitUntilExit];在这两种情况下我都会撞车。在这两种情况下,我都可以在崩溃发生之前在日志中看到一些目录列表输出。
当不尝试运行bash时,也会发生崩溃--如果我尝试直接从NSTask运行/bin/ls,则会得到相同的崩溃。
这些命令通常在后台GCD队列上运行--但我也在主队列上尝试过它们,但它们仍然崩溃。
当我使用ImageMagick运行我的NSTask代码时,命令完成并输出它应该使用的映像,但随后我得到了相同的崩溃(BTW,这就是为什么我通过bash运行命令的原因,因为IM启动了鬼怪脚本,需要设置路径才能正常工作)。
因此,看起来这些命令正在完成,而一旦命令完成,其他的事情就会导致崩溃。
下面是控制台回溯跟踪(包括ls -l命令的部分输出),它在运行NSTask版本的ls -l时崩溃,上面显示在主ViewController的loadView中:
total 8
drwxr-xr-x 3 simon staff 96 Sep 26 15:44 Database.app
-rw-r--r-- 1 simon staff 2219 Sep 27 13:23 00000001_01.png
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_SOFTWARE (code=131072, subcode=0x0)
* frame #0: 0x00007fff6598193e libsystem_kernel.dylib`__posix_spawn + 10
frame #1: 0x00007fff6597ae67 libsystem_kernel.dylib`posix_spawn + 483
frame #2: 0x00007fff3fc42230 Foundation`-[NSConcreteTask launchWithDictionary:error:] + 3510
frame #3: 0x000000010000f430 FanfugaDatabase`-[ViewController viewDidLoad](self=0x00006040000e2200, _cmd="viewDidLoad") at ViewController.m:45
frame #4: 0x00007fff3af1c20a AppKit`-[NSViewController _sendViewDidLoad] + 97
frame #5: 0x00007fff3b4c0afd AppKit`_noteLoadCompletionForObject + 641
frame #6: 0x00007fff3aea097d AppKit`-[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 2042
frame #7: 0x00007fff3af9bd1e AppKit`-[NSNib _instantiateNibWithExternalNameTable:options:] + 679
frame #8: 0x00007fff3af9b97a AppKit`-[NSNib _instantiateWithOwner:options:topLevelObjects:] + 136
frame #9: 0x00007fff3af9ac50 AppKit`-[NSViewController loadView] + 343
frame #10: 0x00007fff3af12a9e AppKit`-[NSViewController _loadViewIfRequired] + 75
frame #11: 0x00007fff3af12a09 AppKit`-[NSViewController view] + 30
frame #12: 0x00007fff3b091365 AppKit`-[NSWindow _contentViewControllerChanged] + 109
frame #13: 0x00007fff3fa7de8e Foundation`-[NSObject(NSKeyValueCoding) setValue:forKey:] + 331
frame #14: 0x00007fff3b0d40c5 AppKit`-[NSWindow setValue:forKey:] + 111
frame #15: 0x00007fff3b0d4029 AppKit`-[NSIBUserDefinedRuntimeAttributesConnector establishConnection] + 637
frame #16: 0x00007fff3aea0719 AppKit`-[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1430
frame #17: 0x00007fff3af9bd1e AppKit`-[NSNib _instantiateNibWithExternalNameTable:options:] + 679
frame #18: 0x00007fff3af9b97a AppKit`-[NSNib _instantiateWithOwner:options:topLevelObjects:] + 136
frame #19: 0x00007fff3b6f246c AppKit`-[NSStoryboard instantiateControllerWithIdentifier:] + 236
frame #20: 0x00007fff3ae94a27 AppKit`NSApplicationMain + 729
frame #21: 0x0000000100012262 Database`main(argc=3, argv=0x00007ffeefbff4f8) at main.m:12
frame #22: 0x00007fff65831015 libdyld.dylib`start + 1
frame #23: 0x00007fff65831015 libdyld.dylib`start + 1
(lldb) 根据请求,我尝试创建一个简单的命令行应用程序:
int main(int argc, const char * argv[]) {
printf("Hello, World!\n");
system("ls -l");
return 0;
}除了同样的例外,它也坠毁了:
Hello, World!
total 56
-rwxr-xr-x 1 simon staff 27680 Oct 1 21:34 test
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_SOFTWARE (code=131072, subcode=0x0)
* frame #0: 0x00007fff6598193e libsystem_kernel.dylib`__posix_spawn + 10
frame #1: 0x00007fff6597ae67 libsystem_kernel.dylib`posix_spawn + 483
frame #2: 0x00007fff658fc9b1 libsystem_c.dylib`system + 407
frame #3: 0x0000000100000f56 test`main(argc=1, argv=0x00007ffeefbff5e0) at main.c:14
frame #4: 0x00007fff65831015 libdyld.dylib`start + 1
(lldb) 更新
如果我直接从finder运行Cocoa应用程序或命令行测试可执行文件,它们可以正常工作。因此,正是因为这个应用程序是从xCode (确切地说是xCode 10.0 )推出的,才导致了这个问题。
发布于 2018-10-08 15:23:03
在我看来,这是一个xCode 10错误。向苹果公司报告这是他们的回应:
我们不熟悉EXC_SOFTWARE信号,但在线搜索似乎涉及到一些反病毒软件。你的Mac上有安装吗?您可能需要询问该软件的制造商,如果这是预期的,如果有任何解决办法。如果可以尝试禁用它来查看它是否能复制,这可能是有指导意义的。
我确实让BitDefender运行在我的mac上-移除它,嘿,这个bug消失了。因此,这是一个BitDefender错误。会向他们报告的。
https://stackoverflow.com/questions/52552187
复制相似问题