我第一次在新机器上运行应用程序,但得到了:
程序接收信号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内联汇编。