可以在我的错上执行EXEC_BAD_INSTRUCTION(SIGILL)吗?

时间:2013-11-21 07:28:52

标签: macos osx-mavericks dyld

我正在开发这个应用程序,它在开发盒和测试盒上都很好用osx 10.8。 测试盒是显着较旧的硬件,但与开发盒相同的软件设置。

  • 开发盒:英特尔核心i7
  • 测试盒:intel core 2 duo

在两台机器上升级到OSX 10.9 Mavericks后,我的测试盒上出现 EXEC_BAD_INSTRUCTION(SIGILL)失败,并显示错误报告,表明10.9存在问题。

这可能是我做过的事情,还是应该让苹果公司修理他们的Os?

我已经尝试了所有 DYLD_PRINT _ * env变量来查看我是否得到了一些线索,但它失败了,没有异常或指示性消息。

关于它可能是什么或者在哪里进一步/更深入的任何想法? 您对此痕迹的解释也是受欢迎的。

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000

Application Specific Information:
/Volumes/juan/Library/Developer/Xcode/DerivedData/****/Contents/MacOS/../Frameworks/libprotobuf-lite.8.dylib

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libprotobuf-lite.8.dylib        0x0000000103d18bc4 _GLOBAL__I_a + 4
1   dyld                            0x00007fff69423c2e ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 268
2   dyld                            0x00007fff69423dba ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 40
3   dyld                            0x00007fff69420a62 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 308
4   dyld                            0x00007fff694209eb ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 189
5   dyld                            0x00007fff694208f6 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 54
6   dyld                            0x00007fff694141da dyld::initializeMainExecutable() + 189
7   dyld                            0x00007fff69417560 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 2419
8   dyld                            0x00007fff6941327b dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 477
9   dyld                            0x00007fff6941305e _dyld_start + 54

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000001  rbx: 0x0000000103d18bc0  rcx: 0x00007fff5c425cd0  rdx: 0x00007fff5c425c78
  rdi: 0x0000000000000001  rsi: 0x00007fff5c425c68  rbp: 0x00007fff5c4240c0  rsp: 0x00007fff5c4240c0
   r8: 0x00007fff69446178   r9: 0x00007fff5c424000  r10: 0x00007fff9abcbc70  r11: 0x00007fff961c02aa
  r12: 0x0000000000000000  r13: 0x00007fff694460b0  r14: 0x00007fff6944eb28  r15: 0x0000000103d20310
  rip: 0x0000000103d18bc4  rfl: 0x0000000000010246  cr2: 0x0000000103d18bc0

Logical CPU:     1
Error Code:      0x00000000
Trap Number:     6

1 个答案:

答案 0 :(得分:3)

所以我发现了问题。

我的图书馆是使用自制软件构建的。默认情况下,自制程序优化了本机体系结构,导致机器指令无法在旧机器上运行。

要防止brew建立processsor-specificfic优化,你必须

brew install --build-bottle protobuf (或您的特定lib)