[ZBX-2342] Precompiled agent throughs floating point exception Created: 2010 Apr 20  Updated: 2017 May 30  Resolved: 2010 Apr 21

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Agent (G)
Affects Version/s: 1.8.2
Fix Version/s: None

Type: Incident report Priority: Critical
Reporter: Oli Sennhauser Assignee: Unassigned
Resolution: Won't fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

64-bit Linux system. This is a special Telecom set-up based on SuSE Linux but completely stripped and possibly with modified kernel (2.6.8) for real time use. 8 cores, 8 Gbyte RAM, NO disk.



 Description   

When I start the agent I get immediately a floating point exception.
I have used the 64-bit pre-compiled agent for linux and the 32-bit pre-compiled agent for linux for 2.6 kernels. When I use the agent for 2.4 kernels it works.
So I assume that there are some special compile options which are used for those builds. I cannot natively build for those platforms because I have no compile system.
What I have not tried yet is to compile myself on 32-bit and deploy on those boxes.
I have access to the system for some more days and can help to track down the problem. Just let me know what you want me to do... (I assume gdb is NOT installed).



 Comments   
Comment by richlv [ 2010 Apr 20 ]

there seems to be a similar problem discussed at http://www.zabbix.com/forum/showthread.php?t=12459

Comment by Aleksandrs Saveljevs [ 2010 Apr 20 ]

Since your environment is by no means common, we would appreciate more information about the problem. Judging by the forum thread which richlv linked to, nothing is printed to the agent's log file even with DebugLevel=4. If this is not your case, please let us know. Otherwise, could you please run zabbix_agentd under strace (for instance, `strace -o strace.txt ./zabbix_agentd`)? At least this little piece of information might prove useful.

Comment by Oli Sennhauser [ 2010 Apr 21 ]

Hi Aleksandrs,

According to your wishes I have collected some information:

Linux XXXXXX 2.6.16.60-0.42.5.492.0.PTF.506281-smp #1 SMP Mon Aug 24 09:41:41 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux

  1. ./zabbix_agentd --config=/usr/local/sbin/zabbix_agentd.conf

--> NO logfile. It seems it crashes BEFORE any logfile can be written.

  1. zabbix_agentd.conf
    Server=192.168.235.224
    Hostname=XXXXXX
    StartAgents=3
    DebugLevel=4
    PidFile=/tmp/zabbix_agentd-oli.pid
    LogFile=/var/log/zabbix/zabbix_agentd-oli.log
    Timeout=3

CPU:

processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
stepping : 6
cpu MHz : 2327.500
cache size : 6144 KB
physical id : 1
siblings : 4
core id : 3
cpu cores : 4
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr dca lahf_lm
bogomips : 4655.13
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:

Strace:

  1. strace ./zabbix_agentd --config=/usr/local/sbin/zabbix_agentd.conf
    execve("./zabbix_agentd", ["./zabbix_agentd", "--config=/usr/local/sbin/zabbix_"...], [/* 20 vars */]) = 0
    brk(0) = 0x62b000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2abd5dead000
    uname( {sys="Linux", node="XXXXXX", ...}

    ) = 0
    access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
    open("/etc/ld.so.cache", O_RDONLY) = 3
    fstat(3,

    {st_mode=S_IFREG|0644, st_size=22887, ...}

    ) = 0
    mmap(NULL, 22887, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2abd5deae000
    close(3) = 0
    open("/lib64/libm.so.6", O_RDONLY) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000=\0\0"..., 832) = 832
    fstat(3,

    {st_mode=S_IFREG|0755, st_size=399985, ...}

    ) = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2abd5deb4000
    mmap(NULL, 1392840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2abd5dfae000
    madvise(0x2abd5dfae000, 1392840, MADV_SEQUENTIAL|0x1) = 0
    mprotect(0x2abd5e002000, 1044480, PROT_NONE) = 0
    mmap(0x2abd5e101000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x53000) = 0x2abd5e101000
    close(3) = 0
    open("/lib64/libresolv.so.2", O_RDONLY) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`9\0\0\0"..., 832) = 832
    fstat(3,

    {st_mode=S_IFREG|0755, st_size=85605, ...}

    ) = 0
    mmap(NULL, 1129320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2abd5e103000
    madvise(0x2abd5e103000, 1129320, MADV_SEQUENTIAL|0x1) = 0
    mprotect(0x2abd5e114000, 1044480, PROT_NONE) = 0
    mmap(0x2abd5e213000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x2abd5e213000
    mmap(0x2abd5e215000, 7016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2abd5e215000
    close(3) = 0
    open("/lib64/libc.so.6", O_RDONLY) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\322\1\0"..., 832) = 832
    fstat(3,

    {st_mode=S_IFREG|0755, st_size=1570572, ...}

    ) = 0
    mmap(NULL, 2355528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2abd5e217000
    madvise(0x2abd5e217000, 2355528, MADV_SEQUENTIAL|0x1) = 0
    mprotect(0x2abd5e34d000, 1048576, PROT_NONE) = 0
    mmap(0x2abd5e44d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x136000) = 0x2abd5e44d000
    mmap(0x2abd5e452000, 16712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2abd5e452000
    close(3) = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2abd5e457000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2abd5e458000
    arch_prctl(ARCH_SET_FS, 0x2abd5e457d50) = 0

      • SIGFPE (Floating point exception) @ 0 (0) —
        +++ killed by SIGFPE +++

When I look at the man pages for arch_prctl I find the following:

arch_prctl() is only supported on Linux/x86-64 for 64-bit programs currently.
The 64-bit base changes when a new 32-bit segment selector is loaded.

So this explains at least why it only happens with the 64-bit agents. When I use the 32-bit agent (zabbix_agents_1.8.2.linux2_4.i386.tar.gz) it works.

I hope, this helps you further to track down the problem. Otherwise please let me know what you need else...

Regards,
Oli
FromDual.com

Comment by Oli Sennhauser [ 2010 Apr 21 ]

Could be related to old/bad glibc:

http://www.mail-archive.com/[email protected]/msg322222.html

Comment by Aleksandrs Saveljevs [ 2010 Apr 21 ]

Hi Oli,

Thank you very much for the detailed information! It was very helpful.

It indeed seems to be a problem with the glibc version. We are compiling on 64-bit Linux with glibc-2.5 and it might not work with earlier versions. At least, the precompiled binaries (not just zabbix_agentd, but also zabbix_get and zabbix_sender) also fail to start in our environment with pre-2.5 glibc.

Please continue using whatever agent works for you.

Regards,
Aleksandrs

Generated at Mon May 12 07:38:46 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.