Bug#930482: openblas: uses AVX-512 even when AVX-512 is not available in a VM

Ansgar Burchardt ansgar at debian.org
Thu Jun 13 15:35:47 BST 2019


Package: libopenblas-base
Version: 0.3.5+ds-3
Severity: important
File: /usr/lib/x86_64-linux-gnu/libopenblas.so.0
Tags: upstream

OpenBLAS tries to use AVX-2 / AVX-512 even when it is not actually
available, causing programs to crash with SIGILL:

+---
| Thread 1 "cholmodtest" received signal SIGILL, Illegal instruction.
| 0x00007ffff728fc18 in dgemv_n_SKYLAKEX () from /usr/lib/x86_64-linux-gnu/libopenblas.so.0
| (gdb) bt
| #0  0x00007ffff728fc18 in dgemv_n_SKYLAKEX () from /usr/lib/x86_64-linux-gnu/libopenblas.so.0
| [...]
| (gdb) disassemble 0x00007ffff728fc18,+8
| Dump of assembler code from 0x7ffff728fc18 to 0x7ffff728fc20:
| => 0x00007ffff728fc18 <dgemv_n_SKYLAKEX+2024>:  vmovsd (%rdx),%xmm18
|    0x00007ffff728fc1e <dgemv_n_SKYLAKEX+2030>:  inc    %rax
+---

As far as I found out, the %xmm18 register should only be available with AVX-512.

The CPU model is capable of AVX-2 and AVX-512, however it is not made
available in the VM I am using and therefore missing from the "Flags"
below.

+---
| Architecture:        x86_64
| CPU op-mode(s):      32-bit, 64-bit
| Byte Order:          Little Endian
| Address sizes:       40 bits physical, 48 bits virtual
| CPU(s):              16
| On-line CPU(s) list: 0-15
| Thread(s) per core:  1
| Core(s) per socket:  1
| Socket(s):           16
| NUMA node(s):        2
| Vendor ID:           GenuineIntel
| CPU family:          6
| Model:               85
| Model name:          Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz
| Stepping:            4
| CPU MHz:             3000.000
| BogoMIPS:            6000.00
| Hypervisor vendor:   VMware
| Virtualization type: full
| L1d cache:           32K
| L1i cache:           32K
| L2 cache:            1024K
| L3 cache:            25344K
| NUMA node0 CPU(s):   0-7
| NUMA node1 CPU(s):   8-15
| Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch cpuid_fault pti ssbd ibrs ibpb stibp fsgsbase smep arat md_clear flush_l1d arch_capabilities
+---[ Output from `lscpu` ]

Ansgar



More information about the debian-science-maintainers mailing list