Skip to content

[Bug]: SSE3 variant build contains AVX-512 instructions. It crashes on non-AVX CPUs (Illegal instruction / Segfault) #737

@freymeyer

Description

@freymeyer

Bug Description

The SSE3 variant build contains AVX-512 instructions from the bundled roaring bitmaps
third-party dependency. This causes an immediate crash on any CPU without AVX support
(Pentium Silver/Gold, Celeron, Atom, older budget x86 chips).

Steps to Reproduce

  1. Use any CPU without AVX (e.g. Intel Pentium Silver N6000 has SSE4.2 but no AVX)
  2. git clone https://github.com/volcengine/OpenViking.git && cd OpenViking
  3. OV_X86_BUILD_VARIANTS=sse3 pip install -e .
  4. python -c "import openviking"
    → Crashes immediately

Expected Behavior

The SSE3 variant should run cleanly on any CPU with SSE3/SSE4 support,
with no AVX instructions anywhere in the build including third-party dependencies.

Actual Behavior

Process crashes with "Illegal instruction (core dumped)" or "Segmentation fault
(core dumped)" on import. The official Docker image (ghcr.io/volcengine/openviking:latest)
also crashes the same way, confirming this is not an environment issue.

Minimal Reproducible Example

import openviking  # crashes here on non-AVX CPU

Error Logs

$ python -c "import openviking; print('import OK')"
corrupted size vs. prev_size
Aborted (core dumped)

$ objdump -d openviking/storage/vectordb/engine/_x86_sse3.cpython-312-x86_64-linux-gnu.so | grep -E "ymm|zmm" | head -5
141d2d: 62 f1 fe 48 6f 01    vmovdqu64 (%rcx),%zmm0
141d33: 62 f1 7d 48 74 00    vpcmpeqb (%rax),%zmm0,%k0
141dac: 62 f2 fd 48 7c c8    vpbroadcastq %rax,%zmm1
141db2: 62 f2 fd 48 7c c1    vpbroadcastq %rcx,%zmm0
141dba: 62 f1 fd 48 6f 15 3c vmovdqa64 0xec23c(%rip),%zmm2

Symbol _ZN7roaring8internal appears alongside these AVX-512 instructions,
identifying roaring bitmaps as the source. OV_X86_BUILD_VARIANTS=sse3 does
not propagate to third-party deps.

OpenViking Version

v0.1.12 (main branch, built from source)

Python Version

3.12.9

Operating System

Linux

Model Backend

None

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions