NSCA memory leak
daniel at zoltak.com
daniel at zoltak.com
Tue Jul 7 07:31:05 CEST 2009
Hi list,
I am running nagios on Gentoo and having an issue with NSCA.
When NSCA is running for a few days I get it crashes with this in dmesg:
localhost nsca[6030]: segfault at ffffffffff600429 ip 00007f8d3ea19dfc sp
00007fff47281350 error 7 in libwrap.so.0.7.6[7f8d3ea16000+8000]
I compiled NSCA in debug mode and ran it with valgrind. We found the
following memory
leak:
==8837== Syscall param fcntl(arg) contains uninitialised byte(s)
==8837== at 0x553EF5B: fcntl (in /lib64/libc-2.9.so)
==8837== by 0x402FE1: handle_connection (in /usr/bin/nsca)
==8837== by 0x403369: accept_connection (in /usr/bin/nsca)
==8837== by 0x4040D5: main (in /usr/bin/nsca)
==8840==
==8840== Syscall param fcntl(arg) contains uninitialised byte(s)
==8840== at 0x553EF5B: fcntl (in /lib64/libc-2.9.so)
==8840== by 0x402FE1: handle_connection (in /usr/bin/nsca)
==8840== by 0x403369: accept_connection (in /usr/bin/nsca)
==8840== by 0x4040D5: main (in /usr/bin/nsca)
==8842==
==8842== Syscall param fcntl(arg) contains uninitialised byte(s)
==8842== at 0x553EF5B: fcntl (in /lib64/libc-2.9.so)
==8842== by 0x402FE1: handle_connection (in /usr/bin/nsca)
==8842== by 0x403369: accept_connection (in /usr/bin/nsca)
==8842== by 0x4040D5: main (in /usr/bin/nsca)
==8838==
==8838== Syscall param fcntl(arg) contains uninitialised byte(s)
==8838== at 0x553EF5B: fcntl (in /lib64/libc-2.9.so)
==8838== by 0x402FE1: handle_connection (in /usr/bin/nsca)
==8838== by 0x403369: accept_connection (in /usr/bin/nsca)
==8838== by 0x4040D5: main (in /usr/bin/nsca)
==8828==
==8828== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 14 from 2)
==8828== malloc/free: in use at exit: 621 bytes in 25 blocks.
==8828== malloc/free: 115 allocs, 90 frees, 32,290 bytes allocated.
==8828== For counts of detected errors, rerun with: -v
==8828== Use --track-origins=yes to see where uninitialised values come from
==8828== searching for pointers to 25 not-freed blocks.
==8828== checked 124,080 bytes.
==8828==
==8828== LEAK SUMMARY:
==8828== definitely lost: 584 bytes in 22 blocks.
==8828== possibly lost: 0 bytes in 0 blocks.
==8828== still reachable: 37 bytes in 3 blocks.
==8828== suppressed: 0 bytes in 0 blocks.
==8828== Rerun with --leak-check=full to see details of leaked memory.
I then ran with options --leak-check=full --show-reachable=yes:
==21927== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 14 from 2)
==21927== malloc/free: in use at exit: 621 bytes in 25 blocks.
==21927== malloc/free: 96 allocs, 71 frees, 21,932 bytes allocated.
==21927== For counts of detected errors, rerun with: -v
==21927== Use --track-origins=yes to see where uninitialised values come from
==21927== searching for pointers to 25 not-freed blocks.
==21927== checked 122,080 bytes.
==21927==
==21927==
==21927== 37 bytes in 3 blocks are still reachable in loss record 1 of 4
==21927== at 0x4C24C1E: malloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==21927== by 0x54F5D31: strdup (in /lib64/libc-2.9.so)
==21927== by 0x402B6C: read_config_file (in /usr/bin/nsca)
==21927== by 0x4037DD: main (in /usr/bin/nsca)
==21927==
==21927==
==21927== 584 (104 direct, 480 indirect) bytes in 2 blocks are
definitely lost in loss record 2 of 4
==21927== at 0x4C24C1E: malloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==21927== by 0x555A4AA: (within /lib64/libc-2.9.so)
==21927== by 0x555AC26: __nss_database_lookup (in /lib64/libc-2.9.so)
==21927== by 0x5BD233F: ???
==21927== by 0x5BD33D6: ???
==21927== by 0x5519EA2: getpwnam_r (in /lib64/libc-2.9.so)
==21927== by 0x551985F: getpwnam (in /lib64/libc-2.9.so)
==21927== by 0x403ADE: main (in /usr/bin/nsca)
==21927==
==21927==
==21927== 160 bytes in 10 blocks are indirectly lost in loss record 3 of 4
==21927== at 0x4C24C1E: malloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==21927== by 0x555A079: __nss_lookup_function (in /lib64/libc-2.9.so)
==21927== by 0x5BD235A: ???
==21927== by 0x5BD33D6: ???
==21927== by 0x5519EA2: getpwnam_r (in /lib64/libc-2.9.so)
==21927== by 0x551985F: getpwnam (in /lib64/libc-2.9.so)
==21927== by 0x403ADE: main (in /usr/bin/nsca)
==21927==
==21927==
==21927== 320 bytes in 10 blocks are indirectly lost in loss record 4 of 4
==21927== at 0x4C24C1E: malloc (in
/usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==21927== by 0x5549D90: tsearch (in /lib64/libc-2.9.so)
==21927== by 0x555A019: __nss_lookup_function (in /lib64/libc-2.9.so)
==21927== by 0x5BD235A: ???
==21927== by 0x5BD33D6: ???
==21927== by 0x5519EA2: getpwnam_r (in /lib64/libc-2.9.so)
==21927== by 0x551985F: getpwnam (in /lib64/libc-2.9.so)
==21927== by 0x403ADE: main (in /usr/bin/nsca)
==21927==
==21927== LEAK SUMMARY:
==21927== definitely lost: 104 bytes in 2 blocks.
==21927== indirectly lost: 480 bytes in 20 blocks.
==21927== possibly lost: 0 bytes in 0 blocks.
==21927== still reachable: 37 bytes in 3 blocks.
==21927== suppressed: 0 bytes in 0 blocks.
The versin of Gentoo runs libc 2.9. We have a few Fedora core 8
machines running libc 2.7
with the same version of NSCA but don't see the issue.
Can anyone shead some light on the issue. Is it a NSCA issue or
libc/Gentoo issue?
Thanks
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/blackberry
More information about the Developers
mailing list