I'm running an application on a new machine for the first time but getting:
Program received signal SIGILL, Illegal instruction
and when I do
x/i $pc
I get:
=> 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
Thought the machine might not have AVX, but checking proc/cpuinfo shows both avx and avx2 architectures available.
The code wasn't compiled on this box and I haven't used this box before. I get the problem when I link statically and dynamically.
Anybody got any tips what it could be? Is it the C++ runtime library version on the machine?
UPDATE: seems this is an AVX512 instruction, which is totally weird. This code is being generated from gcc hashing. There is no AVX512 inline assembly.