程序收到信号SIGILL非法指令

时间:2016-06-27 15:53:24

标签: c++ debugging gdb

我第一次在新机器上运行应用程序,但得到了:

  

程序接收信号SIGILL,非法指令

当我做的时候

  

x / i $ pc

我明白了:

=> 0x7fffe98b8f5b <_ZNSt10_HashtableImSt4pairIKmPN4ICE211t_orderInfoEESaIS5_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev+

147>:       vmovss 0x84b4d(%rip),%xmm0        # 0x7fffe993dab0

认为机器可能没有AVX,但检查proc / cpuinfo显示可用的avx和avx2架构。

代码没有在这个盒子上编译,我以前没用过这个盒子。我在静态和动态链接时遇到问题。

任何人都有任何提示可能是什么?它是机器上的C ++运行时库版本吗?

更新:似乎这是一条AVX512指令,这很奇怪。此代码是从gcc哈希生成的。没有AVX512内联汇编。

1 个答案:

答案 0 :(得分:0)

如果您点击Intel Intrinsics Guide中的任何功能,则会说vmovss需要AVX-512F。 AVX和AVX-2还不够。