[Xymon] xymond_rrd - Program crashed Fatal signal caught!

J.C. Cleaver cleaver at terabithia.org
Sat Aug 30 05:23:46 CEST 2014


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 <lukkohl at gmail.com> 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
>>
>> _______________________________________________
>> Xymon mailing list
>> Xymon at xymon.com
>> http://lists.xymon.com/mailman/listinfo/xymon
>>
>>
> _______________________________________________
> Xymon mailing list
> Xymon at xymon.com
> http://lists.xymon.com/mailman/listinfo/xymon
>





More information about the Xymon mailing list