--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Dear Release Team,
Please unblock package openblas.
The version currently in unstable fixes serious bug #986996.
This bug causes crashes (with SIGILL) on some arm64 processors, in particular
when running numpy.
The fix is a backport of an upstream commit (as documented in the DEP-3 headers
of the patch), and it consists only in adding a “volatile” qualifier, so the
risk of regression should be limited. The debdiff is attached.
Note that openblas is a key package.
unblock openblas/0.3.13+ds-3
Thanks,
--
⢀⣴⠾⠻⢶⣦⠀ Sébastien Villemot
⣾⠁⢠⠒⠀⣿⡁ Debian Developer
⢿⡄⠘⠷⠚⠋⠀ https://sebastien.villemot.name
⠈⠳⣄⠀⠀⠀⠀ https://www.debian.org
diff -Nru openblas-0.3.13+ds/debian/changelog openblas-0.3.13+ds/debian/changelog
--- openblas-0.3.13+ds/debian/changelog 2021-01-27 06:56:54.000000000 +0100
+++ openblas-0.3.13+ds/debian/changelog 2021-04-18 10:36:29.000000000 +0200
@@ -1,3 +1,10 @@
+openblas (0.3.13+ds-3) unstable; urgency=medium
+
+ * fix-arm64-sigill.patch: new patch, fixes SIGILL on arm64 with numpy.
+ Thanks to Thomas Viehmann <tv@beamnet.de> (Closes: #986996)
+
+ -- Sébastien Villemot <sebastien@debian.org> Sun, 18 Apr 2021 10:36:29 +0200
+
openblas (0.3.13+ds-2) unstable; urgency=medium
[ Gianfranco Costamagna ]
diff -Nru openblas-0.3.13+ds/debian/patches/fix-arm64-sigill.patch openblas-0.3.13+ds/debian/patches/fix-arm64-sigill.patch
--- openblas-0.3.13+ds/debian/patches/fix-arm64-sigill.patch 1970-01-01 01:00:00.000000000 +0100
+++ openblas-0.3.13+ds/debian/patches/fix-arm64-sigill.patch 2021-04-18 10:34:32.000000000 +0200
@@ -0,0 +1,26 @@
+Description: Fix SIGILL on arm64 when HWCAP_CPUID is not set
+ This is a crashing bug (SIGILL) that also affects numpy on arm64. One
+ line of processors affected are NVIDIA Tegra (Jetson devices).
+ .
+ On ARM64, openblas uses feature registers to detect the detailed
+ processor arch. It queries HWCAP_CPUID to check if the feature registers
+ are used. But due to a missing volatile declaration, gcc seems to break
+ this guarding in optimization.
+Origin: upstream, https://github.com/xianyi/OpenBLAS/commit/6fe0f1fab9d6a7f46d71d37ebb210fbf56924fbc
+Bug-Debian: https://bugs.debian.org/986996
+Last-Update: 2021-04-18
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+diff --git a/driver/others/dynamic_arm64.c b/driver/others/dynamic_arm64.c
+index 4f1b12f2..37c0694b 100644
+--- a/driver/others/dynamic_arm64.c
++++ b/driver/others/dynamic_arm64.c
+@@ -68,7 +68,7 @@ extern void openblas_warning(int verbose, const char * msg);
+ #endif
+
+ #define get_cpu_ftr(id, var) ({ \
+- __asm__("mrs %0, "#id : "=r" (var)); \
++ __asm__ __volatile__("mrs %0, "#id : "=r" (var)); \
+ })
+
+ static char *corename[] = {
diff -Nru openblas-0.3.13+ds/debian/patches/series openblas-0.3.13+ds/debian/patches/series
--- openblas-0.3.13+ds/debian/patches/series 2021-01-27 06:56:54.000000000 +0100
+++ openblas-0.3.13+ds/debian/patches/series 2021-04-18 10:29:14.000000000 +0200
@@ -6,3 +6,4 @@
matgen-symbols-not-included.patch
gensymbols-fix-detect-netlib.patch
riscv64-supported.patch
+fix-arm64-sigill.patch
--- End Message ---