Open ulfworsoe opened 3 years ago
The linux-aarch64 packages in default are built to target the Neoverse N1/N2 microarchitectures; in particular, we use -march=armv8.2-a+fp16+rcpc+dotprod+crypto
as one of our default compiler flags, and I wouldn't be surprised if that inserted instructions into libcrypto that the RPi's Cortex-A72 doesn't implement.
The diversity of ARM CPUs is a major challenge as we expand the conda package ecosystem to support it. Conda currently does not have a simple way to select packages based on specific CPU features (see conda/conda#9930), but that's seems like something we will need to properly support ARM platforms.
I expect it is probably something like that. The arm crypto extension isn't supported in Rpi4, so that might very well be the culprit.
Actual Behavior
On Ubuntu 19.10, with latest Miniconda (Miniconda3-py39_4.9.2-Linux-aarch64) on a Raspberry Pi 4, importing
hashlib
fails with "Illegal instruction (core dumped)".EDIT: This only happens after having installed
conda-build
.Expected Behavior
Hashlib should load.
Steps to Reproduce
EDIT:
conda-build
(which updates opensslAnaconda or Miniconda version:
Miniconda3-py39_4.9.2-Linux-aarch64
Operating System:
Ubuntu 19.10, running on Raspberry Pi 4
conda info
conda info
produces same error, "illegal instruction". It is casued by an issue in libcrypto. This is what gdb reports:A quick search on the subject indicates that libcrypto installs a signal handler for SIGILL on startup, then probes the processors capabilities, which can produce a SIGILL. The signal GDB catches appears to not be handled by a handler and causes the executable to crash.