Skip to content

linux-x64-baseline target still contains AVX instructions, causing SIGILL on older CPUs (SSE4.1 only) #797

@mVRx3i

Description

@mVRx3i

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions