Xymon Mailing List Archive search

xymond_rrd - Program crashed Fatal signal caught!

list Japheth Cleaver
Fri, 29 Aug 2014 20:23:46 -0700
Message-Id: <user-df13f61b098f@xymon.invalid>

Ahh, they do now, but they didn't in 4.3.7.

--> if ((metacount >= 14) && (strncmp(metadata[0], "@@status", 8) == 0)) {
--> else if ((metacount > 5) && (strncmp(metadata[0], "@@data", 6) == 0)) {

Looks like this was fixed in the 4.3.11 release, so updating to that (if
not the current) is probably your best bet.

https://sourceforge.net/p/xymon/code/7178/tree//branches/4.3.11/xymond/xymond_rrd.c?diff=516c17fd34309d2eb14bcb64:7177


Regards,

-jc


On Thu, August 28, 2014 5:00 pm, Richard Hamilton wrote:
In both of those, the msg argument to do_ncv_rrd() or do_memory_rrd() is
0x0 (NULL pointer).  Those routines don't check for that before passing it
to strchr() or strstr(), so they crash on an invalid memory access.

In both cases, going one call further back, the msg argument to
update_rrd() is also 0x0.  I don't see how that's happening - the only
calls to update_rrd() that I found seem to be within "if" tests that
include a check that it's NOT null.


On Wed, Aug 27, 2014 at 4:45 AM, Lukas Kohl <user-a41bf9c44bf0@xymon.invalid> wrote:
Hello there,
I'm running under xymon Version 4.3.7.
Since 4 Weeks I am experiencing these chrashes about 5 to 10 times a
day.

These are two example backtracked core dumps:

#0  0x00007f96a06f2b55 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007f96a06f2b55 in raise () from /lib64/libc.so.6
#1  0x00007f96a06f4131 in abort () from /lib64/libc.so.6
#2  0x000000000042cde3 in sigsegv_handler (signum=<optimized out>) at
sig.c:57
#3  <signal handler called>
#4  0x00007f96a07d3e18 in __strchr_sse42 () from /lib64/libc.so.6
#5  0x00000000004092fa in do_ncv_rrd (hostname=0xserver1 "server1",
testname=0x7f96a1240b20 "queued-requests", classname=0x4373cd "",
pagepaths=0x4373cd "", msg=0x0, tstamp=<optimized out>) at
rrd/do_ncv.c:54

#6  0x0000000000412b7b in update_rrd (hostname=0xserver1 "server1",
testname=0x7f96a1240b20 "queued-requests", msg=0x0, tstamp=1409060041,
sender=<optimized out>, ldef=<optimized out>, classname=0x4373cd "",
    pagepaths=0x4373cd "") at do_rrd.c:713
#7  0x00000000004034e6 in main (argc=<optimized out>,
argv=0x7fff97181608)
at xymond_rrd.c:351
(gdb)

(gdb) bt
#0  0x00007ffce86e0b55 in raise () from /lib64/libc.so.6
#1  0x00007ffce86e2131 in abort () from /lib64/libc.so.6
#2  0x000000000042cde3 in sigsegv_handler (signum=<optimized out>) at
sig.c:57
#3  <signal handler called>
#4  0x00007ffce87c4270 in __strstr_sse42 () from /lib64/libc.so.6
#5  0x0000000000410796 in do_memory_rrd (hostname=0xserver2 "server2",
testname=0x7ffce92338ee "memory", classname=0x4373cd "",
    pagepaths=0x4373cd "", msg=0x0, tstamp=1409115365) at
rrd/do_memory.c:96
#6  0x0000000000412a3b in update_rrd (hostname=0xserver2 "server2",
testname=0x7ffce92338ee "memory", msg=0x0, tstamp=1409115365,
    sender=<optimized out>, ldef=<optimized out>, classname=0x4373cd "",
pagepaths=0x4373cd "") at do_rrd.c:697
#7  0x00000000004034e6 in main (argc=<optimized out>,
argv=0x7fff3d717518)
at xymond_rrd.c:351


And here is the rrd-status LogFile:
31485 2014-08-26 15:34:01 Want msg 21565, startpos 68046, fillpos 68046,
endpos -1, usedbytes=0, bufleft=460337
31485 2014-08-26 15:34:01 Got 568 bytes
31485 2014-08-26 15:34:01 xymond_rrd: Got message 21565
@@status#21565/server|1409060041.082009|IP||server|licensed-connections|1409061841|green||green|1408883326|0||0||1408883303||page|0|

31485 2014-08-26 15:34:01 startpos 68300, fillpos 68614, endpos 68610
31485 2014-08-26 15:34:01 xymond_rrd: Got message 21566
@@status#21566/server2|1409060041.082061|IP||server2|queued-requests|1409383096|blue||blue|1409037496|0||1409383096|Disabled
by
31485 2014-08-26 15:34:01 startpos 68614, fillpos 68614, endpos -1
2014-08-26 15:34:01 Peer at 0.0.0.0:0 failed: Broken pipe
2014-08-26 15:34:01 Peer not up, flushing message queue
6944 2014-08-26 15:34:01 Opening file
/opt/xymon/server/etc/rrddefinitions.cfg
6944 2014-08-26 15:34:01 Want msg 1, startpos 0, fillpos 0, endpos -1,
usedbytes=0, bufleft=528383
6944 2014-08-26 15:34:01 Got 245 bytes
6944 2014-08-26 15:34:01 xymond_rrd: Got message 21570
@@status#21570/server3|1409060041.134654|IP||server3|queued-requests|1409061841|green||green|1408883326|0||0||1408883303||page|0|

6944 2014-08-26 15:34:01 startpos 245, fillpos 245, endpos -1
6944 2014-08-26 15:34:01 Transport setup is:
6944 2014-08-26 15:34:01 xymondportnumber = 1984
6944 2014-08-26 15:34:01 xymonproxyhost = NONE
6944 2014-08-26 15:34:01 xymonproxyport = 0
6944 2014-08-26 15:34:01 Recipient listed as 'IP'
6944 2014-08-26 15:34:01 Standard protocol on port 1984
6944 2014-08-26 15:34:01 Will connect to address IP port 1984
6944 2014-08-26 15:34:01 Connect status is 0
6944 2014-08-26 15:34:01 Sent 16 bytes
6944 2014-08-26 15:34:01 Read 32767 bytes
6944 2014-08-26 15:34:01 Read 32767 bytes
6944 2014-08-26 15:34:01 Read 4287 bytes
6944 2014-08-26 15:34:01 Closing connection

At the Moment I am not able to debug this Problem any further, and I
would
be very glad, if you can give me a hint in the right direction.

Kind regards,
Lukas Kohl