1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
instruction: 0.726
runtime: 0.159
syscall: 0.115
Intermittent buggines with user mode emulation of x86-64 on aarch64
QEMU Version: 5.0.0
./configure --target-list=x86_64-linux-user --enable-user --prefix=/opt/qemu --static
Testing using node_exporter from pmm-client-1.17.4-1.el8.x86_64.rpm
aarch64 system is running CentOS 8 with a mainline 5.4.52 kernel built for 4KB memory pages.
On aarch64 machine, invoke:
./qemu-x86_64-static /usr/local/percona/pmm-client/node_exporter.x86_64 -web.listen-address=192.168.0.10:42000 -web.auth-file=/usr/local/percona/pmm-client/pmm.yml -web.ssl-key-file=/usr/local/percona/pmm-client/server.key -web.ssl-cert-file=/usr/local/percona/pmm-client/server.crt -collectors.enabled=diskstats,filefd,filesystem,loadavg,meminfo,netdev,netstat,stat,time,uname,vmstat,meminfo_numa,textfile
Most of the time it will outright segfault within a few seconds, seemingly when the prometheus server polls for data.
But, about once every 10 times, it will not sefault and will continue working just fine forever.
The dynamically linked version of qemu (built without --static) always works without segfaulting, but it just doesn't work, the prometheus server gets no data from it. Again, once in a while it will work, but even when it doesn't work it won't segfault.
This vaguely feels like a memory alignment issue somewhere, but my debug-fu is not quite strong enough to attack the problem.
|