【发布时间】:2016-06-27 15:53:24
【问题描述】:
我第一次在新机器上运行一个应用程序,但得到:
程序收到信号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 内联汇编。
【问题讨论】: