node_exporter throws SIGILL on arm7

Created on 10 Dec 2018  路  4Comments  路  Source: prometheus/node_exporter

Host operating system: output of uname -a

Linux labsw4 4.1.0-cl-7-iproc #1 SMP Debian 4.1.33-1+cl3u17 (2018-10-31) armv7l GNU/Linux

node_exporter version: output of node_exporter --version


0.16.0, armv7 - releases packages

node_exporter command line flags


n/a

Are you running node_exporter in Docker?


no

What did you do that produced an error?

Hi, when trying to start node_exporter, it crashes - even when only doing a --version

teichhorn@labsw4:mgmt-vrf:~$ node_exporter --version Illegal instruction (core dumped)

What did you expect to see?

Giving the version

What did you see instead?

SIGILL

Additional infos:

cat /proc/cpuinfo
`processor : 0
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 1980.41
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

processor : 1
model name : ARMv7 Processor rev 0 (v7l)
BogoMIPS : 1990.65
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc09
CPU revision : 0

Hardware : BRCM XGS iProc
Revision : 0000
Serial : 0000000000000000`

strace:

execve("/usr/local/sbin/node_exporter", ["node_exporter"], [/* 24 vars */]) = 0 uname({sys="Linux", node="labsw4", ...}) = 0 brk(0) = 0xb67000 brk(0xb67d10) = 0xb67d10 set_tls(0xb674c0, 0x804f7c, 0, 0x80d334, 0x804f68) = 0 set_tid_address(0xb67068) = 17192 set_robust_list(0xb67070, 12) = 0 rt_sigaction(SIGRTMIN, {0x416b65, [], SA_RESTORER|SA_SIGINFO, 0x41c4a1}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x416c05, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x41c4a1}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 readlink("/proc/self/exe", "/usr/local/sbin/node_exporter", 4096) = 29 brk(0xb88d10) = 0xb88d10 brk(0xb89000) = 0xb89000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPC, si_addr=0x446b7e} --- +++ killed by SIGILL (core dumped) +++ Illegal instruction (core dumped)

According to file the ELF-binary is for :

/usr/local/sbin/node_exporter: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=6c366a084c849b54381b591e2a3ca68d9d43d3be, not stripped

which is correct and matches other binaries on the unit.

I am a bit lost here and any help is appreciated,

Tom

Most helpful comment

Just took a look at one of those cumulus arm boxes:

root@DE-ES-001-03-04-23:mgmt-vrf:~# dpkg --get-selections libc6
libc6:armel install

Go documentation says "ARM on Linux. You must run an EABI kernel. These are generally known as armel for softfloat (compatible with ARMv5) or armhf for hardware floating point (ARMv6 and above)."

So I tried node_exporter armv5 build, et voila:

root@DE-ES-001-03-04-23:mgmt-vrf:~# node_exporter-0.17.0.linux-armv5/node_exporter --version
node_exporter, version 0.17.0 (branch: HEAD, revision: f6f6194a436b9a63d0439abc585c76b19a206b21)
build user: root@322511e06ced
build date: 20181130-15:52:14
go version: go1.11.2

All 4 comments

That's very odd. We just released 0.17.0, which uses a newer Go compiler and eliminates the CGO dependency. Can you try it out and see if it helps?

Oh hi @sirtux! Interesting.. You could try building it from source and see if that works and what kind of binary it creates.

Just took a look at one of those cumulus arm boxes:

root@DE-ES-001-03-04-23:mgmt-vrf:~# dpkg --get-selections libc6
libc6:armel install

Go documentation says "ARM on Linux. You must run an EABI kernel. These are generally known as armel for softfloat (compatible with ARMv5) or armhf for hardware floating point (ARMv6 and above)."

So I tried node_exporter armv5 build, et voila:

root@DE-ES-001-03-04-23:mgmt-vrf:~# node_exporter-0.17.0.linux-armv5/node_exporter --version
node_exporter, version 0.17.0 (branch: HEAD, revision: f6f6194a436b9a63d0439abc585c76b19a206b21)
build user: root@322511e06ced
build date: 20181130-15:52:14
go version: go1.11.2

As @wrayan found out, the armv5 build worked, so this can be closed now and seen as documentation if someone else hits the issue.

Thanks,
Tom

Was this page helpful?
0 / 5 - 0 ratings

Related issues

f0 picture f0  路  4Comments

ridvankaratas picture ridvankaratas  路  3Comments

cjroebuck picture cjroebuck  路  3Comments

xens picture xens  路  4Comments

tmegow picture tmegow  路  5Comments