ochinchina / supervisord

a go-lang supervisor implementation
MIT License
4.03k stars 571 forks source link

Illegal instruction error message using ARM64 binary #315

Open janosmiko opened 2 years ago

janosmiko commented 2 years ago

When I'm using the linux-arm64 binary on an m1 macbook (inside a docker container) I get the following error message:

Illegal instruction

Nothing more, nothing less.

I would be happy to provide some logs, but I have no idea where to start.

Example test run:

docker run --rm -it debian:bullseye-slim bash

export SUPERVISORD_VERSION=0.7.3

apt-get update && apt-get upgrade -y \
    && apt-get install -y --no-install-recommends --allow-downgrades \
    ca-certificates \
    curl \
    tar \
    gzip \
    && BUILD_ARCH="$(dpkg --print-architecture)" \
    && if [ "${BUILD_ARCH}" = "arm64" ];  \
      then SUPERVISORD_ARCH="Linux_ARM64";  \
      else SUPERVISORD_ARCH="Linux_64-bit" ;  \
    fi \
    && curl -fsSL "https://github.com/ochinchina/supervisord/releases/download/v${SUPERVISORD_VERSION}/supervisord_${SUPERVISORD_VERSION}_${SUPERVISORD_ARCH}.tar.gz" | tar zxv -C /tmp \
    && mv /tmp/supervisor*/supervisord /usr/bin/ \
    && rm -fr /tmp/supervisor*

# test supervisor command
/usr/bin/supervisord --help

When I download the x86-64 version, that still works as expected.

BojanZelic-DD commented 1 year ago

Running into the same issue; Seems like it's not properly compiled to support linux/arm64/v8; I'm able to compile it locally though

gcavalcante8808 commented 5 months ago

I can confirm. I'm using the following Dockerfile:

FROM curlimages/curl:8.8.0 as downloader
USER root
ARG GO_SUPERVISORD_VERSION=0.7.3
RUN apk add --no-cache  bash
RUN bash -c 'declare -A archs=( ["arm64"]="ARM64" ["aarch64"]="ARM64" ["x86_64"]="64-bit") && \
             curl -L -o - https://github.com/ochinchina/supervisord/releases/download/v${GO_SUPERVISORD_VERSION}/supervisord_${GO_SUPERVISORD_VERSION}_Linux_${archs[$(arch)]}.tar.gz | tar -xz --strip-components 1 -f - -C /tmp/    '
RUN chmod +x /tmp/supervisord && \
         /tmp/supervisord --help