SIGFPE in pthread_barrier_destroy in glibc 2.23
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
glibc (Ubuntu) |
Invalid
|
Critical
|
Unassigned | ||
Xenial |
Invalid
|
Critical
|
Unassigned | ||
mesa (Ubuntu) |
Fix Released
|
Critical
|
Unassigned | ||
Xenial |
Fix Released
|
Critical
|
Unassigned |
Bug Description
When running in a VM (but not on my host system), the bluez-qt autopkgtests fail with a floating point exception. The original failure, affecting both amd64 and i386, can be found here: http://
To reproduce, build bluez-qt from source and then run:
xvfb-run -a --server-
Thread 1 "qmltests" received signal SIGFPE, Arithmetic exception.
0x00007ffff68fef49 in pthread_
at pthread_
39 pthread_
(gdb) thread apply all bt full
Thread 1 (Thread 0x7ffff7e788c0 (LWP 20087)):
#0 0x00007ffff68fef49 in pthread_
at pthread_
bar = 0x6aff30
count = 0
in = <optimized out>
#1 0x00007fffea1c0f8f in ?? ()
from /usr/lib/
No symbol table info available.
#2 0x00007fffea1cca61 in ?? ()
from /usr/lib/
No symbol table info available.
#3 0x00007fffe9e65e6f in ?? ()
from /usr/lib/
No symbol table info available.
#4 0x00007fffe9e65f15 in ?? ()
from /usr/lib/
No symbol table info available.
#5 0x00007fffe9e6434f in ?? ()
from /usr/lib/
No symbol table info available.
#6 0x00007ffff2c82482 in ?? () from /usr/lib/
No symbol table info available.
#7 0x00007ffff2c5e466 in ?? () from /usr/lib/
No symbol table info available.
#8 0x00007ffff2c5e4e9 in ?? () from /usr/lib/
No symbol table info available.
#9 0x00007ffff2c5e63e in ?? () from /usr/lib/
No symbol table info available.
#10 0x00007ffff334f642 in XCloseDisplay ()
from /usr/lib/
No symbol table info available.
#11 0x00007fffed99c426 in QXcbConnection:
from /usr/lib/
No symbol table info available.
#12 0x00007fffed99c789 in QXcbConnection:
from /usr/lib/
No symbol table info available.
#13 0x00007fffed99ded6 in QXcbIntegration
from /usr/lib/
No symbol table info available.
#14 0x00007fffed99dfe9 in QXcbIntegration
from /usr/lib/
No symbol table info available.
#15 0x00007ffff557acf3 in QGuiApplication
from /usr/lib/
No symbol table info available.
#16 0x00007ffff557aed9 in QGuiApplication
from /usr/lib/
No symbol table info available.
#17 0x00007ffff7515db8 in QObject::~QObject() ()
from /usr/lib/
No symbol table info available.
#18 0x00007ffff557ab69 in QGuiApplication
from /usr/lib/
No symbol table info available.
#19 0x00007ffff7fa1628 in quick_test_
No symbol table info available.
#20 0x000000000040929f in main (argc=1, argv=0x7fffffff
at ../../autotests
testsDir = @0x7fffffffe3a0: {static null = {<No data fields>},
d = 0x635970}
(gdb)
Since the problem is not reproducible on the host system, current guess is that it's related to cpu featureset passthrough on the guest. /proc/cpuinfo from an affected guest:
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 2
model name : QEMU Virtual CPU version 0.14
stepping : 3
microcode : 0x1
cpu MHz : 2594.108
cache size : 4096 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm rep_good nopl pni vmx cx16 popcnt hypervisor lahf_lm tpr_shadow vnmi flexpriority ept
bogomips : 5188.21
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
#
It could also be related to the use of swrast_dri rather than a hardware-
Changed in glibc (Ubuntu): | |
importance: | Undecided → Critical |
milestone: | none → ubuntu-16.03 |
status: | New → Triaged |
Changed in glibc (Ubuntu Xenial): | |
status: | Triaged → Invalid |
The line in question is:
unsigned int max_in_before_reset = BARRIER_ IN_THRESHOLD
- BARRIER_ IN_THRESHOLD % count;
count is set the line before it to:
unsigned int count = bar->count;
(gdb) print bar->count
$2 = 0
(gdb) print count
$3 = 0
(gdb)