Hi All, I am still seeing some memory leak in the nodes Now the problem is not in the deaf mode but in the mute mode. To reduce the debugging complexity I am running the 3.0.7 on 2 nodes one in deaf mode and other in mute mode. The deaf mode is working fine and the node in mute mode is giving memory leak. Here is the o/p of the valgrind for the node with mute mode.
==21588== ==21588== Process terminating with default action of signal 2 (SIGINT) ==21588== at 0x3F810C485F: poll (in /lib64/libc-2.5.so) ==21588== by 0x41D7B1: apr_pollset_poll (poll.c:504) ==21588== by 0x405846: main (gmond.c:1269) --21588-- Discarding syms at 0x4D41000-0x4F4C000 in /lib64/libnss_files-2.5.so due to munmap() ==21588== ==21588== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 1) --21588-- --21588-- supp: 5 Fedora-Core-6-hack3-ld25 ==21588== malloc/free: in use at exit: 740,602 bytes in 1,190 blocks. ==21588== malloc/free: 2,574 allocs, 1,384 frees, 946,209 bytes allocated. ==21588== ==21588== searching for pointers to 1,190 not-freed blocks. ==21588== checked 479,904 bytes. ==21588== ==21588== 5 bytes in 1 blocks are still reachable in loss record 1 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x4111FF: cfg_init (confuse.c:1087) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 19 bytes in 4 blocks are still reachable in loss record 2 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x3F810750E1: strndup (in /lib64/libc-2.5.so) ==21588== by 0x40806A: hash_lookup (metrics.c:151) ==21588== by 0x408D75: bytes_out_func (metrics.c:425) ==21588== by 0x40418C: Ganglia_collection_group_collect (gmond.c:1540) ==21588== by 0x404FC8: process_collection_groups (gmond.c:1662) ==21588== by 0x40600E: main (gmond.c:1913) ==21588== ==21588== ==21588== 22 bytes in 2 blocks are still reachable in loss record 3 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x406740: gengetopt_strdup (cmdline.c:64) ==21588== by 0x40689E: cmdline_parser (cmdline.c:100) ==21588== by 0x4055BD: main (gmond.c:1780) ==21588== ==21588== ==21588== 56 bytes in 1 blocks are still reachable in loss record 4 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x4111D2: cfg_init (confuse.c:1083) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 192 bytes in 4 blocks are still reachable in loss record 5 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x408057: hash_lookup (metrics.c:144) ==21588== by 0x408D75: bytes_out_func (metrics.c:425) ==21588== by 0x40418C: Ganglia_collection_group_collect (gmond.c:1540) ==21588== by 0x404FC8: process_collection_groups (gmond.c:1662) ==21588== by 0x40600E: main (gmond.c:1913) ==21588== ==21588== ==21588== 192 bytes in 1 blocks are still reachable in loss record 6 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x41BDC1: apr_allocator_create (apr_pools.c:90) ==21588== by 0x41C55C: apr_pool_initialize (apr_pools.c:506) ==21588== by 0x41A7C4: apr_initialize (start.c:55) ==21588== by 0x40EC9F: Ganglia_pool_create (libgmond.c:494) ==21588== by 0x4055DA: main (gmond.c:1789) ==21588== ==21588== ==21588== 322 bytes in 48 blocks are still reachable in loss record 7 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x3F810F5A63: xdr_string (in /lib64/libc-2.5.so) ==21588== by 0x40DA67: xdr_Ganglia_message (protocol_xdr.c:124) ==21588== by 0x4047C3: process_udp_recv_channel (gmond.c:905) ==21588== by 0x4059FC: main (gmond.c:1279) ==21588== ==21588== ==21588== 328 bytes in 8 blocks are still reachable in loss record 8 of 16 ==21588== at 0x4A0590B: realloc (vg_replace_malloc.c:306) ==21588== by 0x40FCAB: cfg_addval (confuse.c:372) ==21588== by 0x411397: cfg_setopt (confuse.c:587) ==21588== by 0x410B7A: cfg_parse_internal (confuse.c:938) ==21588== by 0x410B9F: cfg_parse_internal (confuse.c:944) ==21588== by 0x410EC3: cfg_parse_fp (confuse.c:1035) ==21588== by 0x410F9D: cfg_parse (confuse.c:1054) ==21588== by 0x40EB8A: Ganglia_gmond_config_create (libgmond.c:525) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 1,128 bytes in 141 blocks are still reachable in loss record 9 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x4A05883: realloc (vg_replace_malloc.c:306) ==21588== by 0x40FCAB: cfg_addval (confuse.c:372) ==21588== by 0x411397: cfg_setopt (confuse.c:587) ==21588== by 0x4110D7: cfg_init_defaults (confuse.c:529) ==21588== by 0x411251: cfg_init (confuse.c:1094) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 1,143 bytes in 180 blocks are definitely lost in loss record 10 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x3F810F5A63: xdr_string (in /lib64/libc-2.5.so) ==21588== by 0x40D87D: xdr_Ganglia_gmetric_message (protocol_xdr.c:23) ==21588== by 0x40D9FD: xdr_Ganglia_message (protocol_xdr.c:83) ==21588== by 0x4047C3: process_udp_recv_channel (gmond.c:905) ==21588== by 0x4059FC: main (gmond.c:1279) ==21588== ==21588== ==21588== 1,456 bytes in 182 blocks are still reachable in loss record 11 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x40FCC5: cfg_addval (confuse.c:375) ==21588== by 0x411397: cfg_setopt (confuse.c:587) ==21588== by 0x4110D7: cfg_init_defaults (confuse.c:529) ==21588== by 0x411251: cfg_init (confuse.c:1094) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 2,912 bytes in 52 blocks are still reachable in loss record 12 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x41151E: cfg_setopt (confuse.c:665) ==21588== by 0x4110D7: cfg_init_defaults (confuse.c:529) ==21588== by 0x411251: cfg_init (confuse.c:1094) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 4,123 bytes in 401 blocks are still reachable in loss record 13 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x3F81075081: strdup (in /lib64/libc-2.5.so) ==21588== by 0x410218: cfg_dupopt_array (confuse.c:401) ==21588== by 0x41122B: cfg_init (confuse.c:1088) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 16,384 bytes in 2 blocks are still reachable in loss record 14 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x41C7C0: apr_palloc (apr_pools.c:293) ==21588== by 0x403E59: Ganglia_metric_cb_define (gmond.c:1306) ==21588== by 0x403F08: setup_metric_callbacks (gmond.c:1367) ==21588== by 0x4056EE: main (gmond.c:1845) ==21588== ==21588== ==21588== 40,576 bytes in 81 blocks are still reachable in loss record 15 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x4101BB: cfg_dupopt_array (confuse.c:395) ==21588== by 0x41122B: cfg_init (confuse.c:1088) ==21588== by 0x40EB7C: Ganglia_gmond_config_create (libgmond.c:523) ==21588== by 0x405529: process_configuration_file (gmond.c:180) ==21588== by 0x405627: main (gmond.c:1815) ==21588== ==21588== ==21588== 671,744 bytes in 82 blocks are still reachable in loss record 16 of 16 ==21588== at 0x4A05809: malloc (vg_replace_malloc.c:149) ==21588== by 0x41C2C3: apr_pool_create_ex (apr_pools.c:293) ==21588== by 0x41C586: apr_pool_initialize (apr_pools.c:511) ==21588== by 0x41A7C4: apr_initialize (start.c:55) ==21588== by 0x40EC9F: Ganglia_pool_create (libgmond.c:494) ==21588== by 0x4055DA: main (gmond.c:1789) ==21588== ==21588== LEAK SUMMARY: ==21588== definitely lost: 1,143 bytes in 180 blocks. ==21588== possibly lost: 0 bytes in 0 blocks. ==21588== still reachable: 739,459 bytes in 1,010 blocks. ==21588== suppressed: 0 bytes in 0 blocks. --21588-- memcheck: sanity checks: 46 cheap, 2 expensive --21588-- memcheck: auxmaps: 301 auxmap entries (19264k, 18M) in use --21588-- memcheck: auxmaps: 4427566 searches, 5961364 comparisons --21588-- memcheck: SMs: n_issued = 41 (656k, 0M) --21588-- memcheck: SMs: n_deissued = 0 (0k, 0M) --21588-- memcheck: SMs: max_noaccess = 524287 (8388592k, 8191M) --21588-- memcheck: SMs: max_undefined = 0 (0k, 0M) --21588-- memcheck: SMs: max_defined = 387 (6192k, 6M) --21588-- memcheck: SMs: max_non_DSM = 41 (656k, 0M) --21588-- memcheck: max sec V bit nodes: 3 (0k, 0M) --21588-- memcheck: set_sec_vbits8 calls: 3 (new: 3, updates: 0) --21588-- memcheck: max shadow mem size: 4800k, 4M --21588-- translate: fast SP updates identified: 5,079 ( 86.9%) --21588-- translate: generic_known SP updates identified: 607 ( 10.3%) --21588-- translate: generic_unknown SP updates identified: 153 ( 2.6%) --21588-- tt/tc: 23,734 tt lookups requiring 24,620 probes --21588-- tt/tc: 23,734 fast-cache updates, 6 flushes --21588-- transtab: new 5,719 (136,749 -> 2,554,493; ratio 186:10) [0 scs] --21588-- transtab: dumped 0 (0 -> ??) --21588-- transtab: discarded 153 (2,818 -> ??) --21588-- scheduler: 4,609,790 jumps (bb entries). --21588-- scheduler: 46/39,509 major/minor sched events. --21588-- sanity: 47 cheap, 2 expensive checks. --21588-- exectx: 30,011 lists, 203 contexts (avg 0 per list) --21588-- exectx: 3,963 searches, 5,723 full compares (1,444 per 1000) --21588-- exectx: 4,421 cmp2, 10 cmp4, 0 cmpAll Jesse Becker wrote: > On Feb 19, 2008 7:39 PM, Martin Knoblauch <[EMAIL PROTECTED]> wrote: >> ----- Original Message ---- >>> From: Jesse Becker <[EMAIL PROTECTED]> >>> To: Ganglia Developers <ganglia-developers@lists.sourceforge.net> >>> Sent: Tuesday, February 19, 2008 11:25:54 PM >>> Subject: Re: [Ganglia-developers] Memory leak in gmond >>> >>> I'm not sure if this is right--I've only take a really quick check in >>> libmetrics/linux/metrics.c, and my C-fu is rusty. >>> >>> It looks like strndup() is called in linux/metrics.c:hash_lookup >>> (about line 131) to dupliate an interface name, which is included in >>> the stats structure as stats->name. The net_dev_stats function will >>> return this struct. >>> >>> The function is called in a number of places pkts_in_func, >>> pkts_out_func, bytes_out_func and bytes_in_func. The variable "*ns" >>> is assigned the output of hash_lookup (e.g. the struct). Since the >>> 'name' element is malloc()ed, but not explictly freed, it will not go >>> away when *ns goes out of scope. This is the leak, isn't it? All >>> four of these functions are very similar, and need to be fixed if this >>> is the case. >>> >>> Or did I miss something obvious? :) >>> >> Lines 137, 148 and 159 ? :-) > > I saw those. :-P I meant after the struct has been returned, outside > the function, the memory is never freed. Inside that function, it's > okay. > >> The memory allocated in line 151 is never freed, indeed. But it is only >> allocated once per interface and stays alive for the entire lifetime of the >> gmond process. So, it is not leaked. > > Ah, that makes more sense, especially if those variables exist for the > lifetime of the program. > > So, I've just run gmond under valgrind and duma (a fork of the old > Electric Fence memory debugger), and I can't seem to reproduce the > problem now. Neither one of them is showing any obvious leaks, at > least not in the 15 minute tests I've run. The test system(s) are > CentOS4.6 boxes. > > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers