Skip to content

Illegal instruction ( core dumped ) on CPU without AVX2. #231

Description

@HassanAlma

[~/flowsint]

$ grep -c 'NPY_DISABLE' docker-compose.prod.yml config> /dev/null && echo YAML OK"
YAML OK

Summary:

Tje 'flowsint-api' production container crashes immediately on startup with 'illegal instruction (core dumped)' on a CPU that doesn't supported AVX2.

The container never becomes healthy, which blocks 'celery' and 'app' from starting ( depend on 'api: condition: service _healthy').

Environment

  • OS : Kali rolling 26.3

  • docker : 28.5.2+dfsg4 ( debian package 'docker.io')

  • git : 2.53.0

  • GNU Make: 4.4.1
    -CPU : x86_64 ( without AVX2**)

  • 'grep -o 'avx2' /proc/cpuinfo | head -l'

===> EMPTY.

  • ' grep -o -ml 'abx[^ ]*' /proc/cpuinfo | sort -u'

===> NO AVX flags at all ).

-installation path: '~/flowsint'

-install method: ' git clone https://guthub.com/reconurge/flowsint.git && cd flowsint && make prod'

Steps to reproduce

  1. on a host whose CPU doesn't expose AVX2 ( Bare-Metal or VM wirh CPU type that doesn't pass AVX2 through, e.g. QEMU/KVM 'qemu64').

  2. Clone the repo and run 😀

'''bash
git clone https://github.com/reconurge/flowsint.git
cd flowsint
make prod

***actual behaviour:

'flowsint-api-prod' fails to start. Endless restart loop with exit code 132:

flowsint-api-prod | running database migrationss...

flowsint-api-prod | illegal instructions ( core dumped)

flowsint-api-prod is exited with code 132 ( restarting)

text:

'postgres' 'redis' 'neo4j' become healthy - only the API doesn't.

This blocks 'celery' and 'app' from starting ( tjey depend on
'api: condition: service_healthy').

Already tried*

Set in 'docker-compose.prod.yml' for both 'api' and 'celery' ;

''' yaml

NPY_DISABlE_CPU_FEATURES=AVX512F AVX512CD AVX512_SKK

FAISS_OPT_LEVEL=o

OMP_NUM_THREADS=1

MKL_ENABLE_INSTRUCTIONS=SSE4.2


grep -c NPY_DISABLE ==> 2, docker compose config =>YAML OK.

Result: same crash !.

Analysis

A binary in the image ( ghcr.io/reconurge/flowsint-api:latest) appears to be compiled with AVX2 optimisations.

My CPU has no AVX2

(grep avx2 /proc/cpuinfo ==> EMPTY). Tje env vars do not help because tje crash happens before python starts.

Request

please build image with a conservative -march=x86-64-v2 baseline, or publish a :latest-generic tag. happy to test

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions