Description
The target linux-x64-baseline (to support older CPUs) is still failing with a SIGILL (illegal instruction)
on CPUs that do not support AVX or AVX2 instructions at all (such as older CPUs supporting only up to SSE4.1/SSE4.2).
Technical Details
Analyzing the downloaded linux-x64-baseline binary shows that it was compiled with AVX vector instructions (utilizing %ymm
registers), which causes the crash on processors without AVX support.
Example instructions found in the linux-x64-baseline binary:
405739c: c5 dd eb eb vpor %ymm3,%ymm4,%ymm5
40573a0: c5 ed eb f1 vpor %ymm1,%ymm2,%ymm6
CPU Flags of the affected system:
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx
lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1
xsave lahf_lm pti tpr_shadow flexpriority vpid dtherm vnmi
(No avx or avx2 flags present).
Expected Behavior
The linux-x64-baseline binary should be compiled targeting a generic x86-64 architecture (or at most sse4.2 / sse4a level
compatibility), entirely avoiding AVX instructions and %ymm register utilization, so that it can run on older systems as intended.
Description
The target
linux-x64-baseline(to support older CPUs) is still failing with aSIGILL(illegal instruction)on CPUs that do not support AVX or AVX2 instructions at all (such as older CPUs supporting only up to SSE4.1/SSE4.2).
Technical Details
Analyzing the downloaded
linux-x64-baselinebinary shows that it was compiled with AVX vector instructions (utilizing%ymmregisters), which causes the crash on processors without AVX support.
Example instructions found in the
linux-x64-baselinebinary: