<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6002.18591" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>Hi Dave</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>Yay, so I've found some leaks and prepared a diff!
I've also included misc. other fixes and one cool feature. I'm still
working on 4.10.2 so the patches might not work or still be applicable to 5.x,
but last time I checked at least some of the issues I fixed were not fixed in
5.x. I assume you guys will review and manually merge into 5.x and/or
4.10.x. I'd be happy to provide more info and answer questions if anything
I've done is not clear.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>Quick overview:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed various collectd memory leaks.<BR>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed collectd's unixsock read
interrupted by SIGCHLD's.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed collectd exec module:
incorrectly exited select loop on
signal.</FONT></SPAN></DIV></SPAN></DIV></FONT></SPAN></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed incorrect collectd warning
when configuring network plugin.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Collectd's scale plugin now supports
scaling only on specific data sources, yay! (New
feature)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012>Apologies if I wasn't
supposed to paste the patch in the body of the email, but here
goes:</SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN
class=609501520-30052012></SPAN> </DIV></SPAN></DIV></DIV></FONT></SPAN></FONT></SPAN>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>commit ba04be9feeec4f40b9ada1cae64c0a27634f1c76<BR>Author:
Gerrie Roos <<A
href="mailto:groos@xiplink.com">groos@xiplink.com</A>><BR>Date:
Fri May 25 05:38:47 2012 +0200</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed various collectd memory
leaks.<BR> <BR> Once I understood what's
going on I tried to keep the changes to a minimum.<BR></FONT></SPAN><FONT
face=Arial color=#0000ff size=2></FONT></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>diff --git a/src/collectd.c b/src/collectd.c<BR>index
277d3b0..f5df460 100644<BR>--- a/src/collectd.c<BR>+++ b/src/collectd.c<BR>@@
-77,6 +77,7 @@ static void sig_usr1_handler (int __attribute__((unused))
signal)<BR> pthread_attr_init
(&attr);<BR> pthread_attr_setdetachstate (&attr,
PTHREAD_CREATE_DETACHED);<BR> pthread_create (&thread, &attr,
do_flush, NULL);<BR>+ pthread_attr_destroy
(&attr);<BR> }<BR> <BR> static int init_hostname
(void)<BR>diff --git a/src/exec.c b/src/exec.c<BR>index 322ff67..265ec01
100644<BR>--- a/src/exec.c<BR>+++ b/src/exec.c<BR>@@ -827,6 +827,7 @@ static int
exec_read (void) /* {{{ */<BR> pthread_attr_init
(&attr);<BR> pthread_attr_setdetachstate (&attr,
PTHREAD_CREATE_DETACHED);<BR> pthread_create (&t,
&attr, exec_read_one, (void *) pl);<BR>+
pthread_attr_destroy(&attr);<BR> } /* for (pl)
*/<BR> <BR> return (0);<BR>@@ -870,6 +871,7 @@ static int
exec_notification (const notification_t *n, /* {{{
*/<BR> pthread_attr_init
(&attr);<BR> pthread_attr_setdetachstate (&attr,
PTHREAD_CREATE_DETACHED);<BR> pthread_create (&t,
&attr, exec_notification_one, (void *) pln);<BR>+
pthread_attr_destroy (&attr);<BR> } /* for (pl)
*/<BR> <BR> return (0);<BR>diff --git a/src/meta_data.c
b/src/meta_data.c<BR>index 6a336c4..9307e5e 100644<BR>---
a/src/meta_data.c<BR>+++ b/src/meta_data.c<BR>@@ -214,6 +214,7 @@ void
meta_data_destroy (meta_data_t *md) /* {{{ */<BR> if (md ==
NULL)<BR> return;<BR> <BR>+
pthread_mutex_destroy(&md->lock);<BR> md_entry_free
(md->head);<BR> free (md);<BR> } /* }}} void
meta_data_destroy */<BR>diff --git a/src/unixsock.c b/src/unixsock.c<BR>index
1010b59..dea8be0 100644<BR>--- a/src/unixsock.c<BR>+++ b/src/unixsock.c<BR>@@
-187,6 +187,7 @@ static void *us_handle_client (void
*arg)<BR> close (fdin);<BR> close
(fdout);<BR> pthread_exit ((void *) 1);<BR>+ return
((void *) 0);<BR> }<BR> <BR> fhout = fdopen (fdout,
"w");<BR>@@ -198,6 +199,7 @@ static void *us_handle_client (void
*arg)<BR> fclose (fhin); /* this closes fdin as well
*/<BR> close (fdout);<BR> pthread_exit ((void
*) 1);<BR>+ return ((void *)
0);<BR> }<BR> <BR> /* change output buffer to line
buffered mode */<BR>@@ -209,6 +211,7 @@ static void *us_handle_client (void
*arg)<BR> fclose (fhin);<BR> fclose
(fhout);<BR> pthread_exit ((void *) 1);<BR>+ return
((void *) 0);<BR> }<BR> <BR> while (42)<BR>@@ -253,6
+256,7 @@ static void *us_handle_client (void
*arg)<BR> fclose
(fhin);<BR> fclose
(fhout);<BR> pthread_exit ((void *)
1);<BR>+ return ((void *)
0);<BR> }<BR> <BR> if (strcasecmp
(fields[0], "getval") == 0)<BR>@@ -307,9 +311,13 @@ static void
*us_server_thread (void __attribute__((unused)) *arg)<BR> pthread_t
th;<BR> pthread_attr_t th_attr;<BR> <BR>+ pthread_attr_init
(&th_attr);<BR>+ pthread_attr_setdetachstate (&th_attr,
PTHREAD_CREATE_DETACHED);<BR>+<BR> if (us_open_socket () !=
0)<BR> pthread_exit ((void *)
1);<BR> <BR>+<BR> while (loop !=
0)<BR> {<BR> DEBUG ("unixsock plugin: Calling
accept..");<BR>@@ -325,6 +333,7 @@ static void *us_server_thread (void
__attribute__((unused)) *arg)<BR> sstrerror
(errno, errbuf, sizeof (errbuf)));<BR> close
(sock_fd);<BR> sock_fd =
-1;<BR>+ pthread_attr_destroy(&th_attr);<BR> pthread_exit
((void *) 1);<BR> }<BR> <BR>@@ -341,9 +350,6 @@ static
void *us_server_thread (void __attribute__((unused))
*arg)<BR> <BR> DEBUG ("Spawning child to handle connection
on fd #%i", *remote_fd);<BR> <BR>- pthread_attr_init
(&th_attr);<BR>- pthread_attr_setdetachstate (&th_attr,
PTHREAD_CREATE_DETACHED);<BR>-<BR> status = pthread_create
(&th, &th_attr, us_handle_client, (void *)
remote_fd);<BR> if (status != 0)<BR> {<BR>@@
-358,6 +364,7 @@ static void *us_server_thread (void __attribute__((unused))
*arg)<BR> <BR> close (sock_fd);<BR> sock_fd =
-1;<BR>+ pthread_attr_destroy(&th_attr);<BR> <BR> status
= unlink ((sock_file != NULL) ? sock_file : US_DEFAULT_PATH);<BR> if
(status != 0)<BR>diff --git a/src/utils_cmd_listval.c
b/src/utils_cmd_listval.c<BR>index 4ca9646..f923fca 100644<BR>---
a/src/utils_cmd_listval.c<BR>+++ b/src/utils_cmd_listval.c<BR>@@ -89,8 +89,9 @@
int handle_listval (FILE *fh, char *buffer)<BR> <BR>
print_to_socket (fh, "%i Value%s
found\n",<BR> (int) number, (number == 1) ?
"" : "s");<BR>- for (i = 0; i < number; i++)<BR>+ for (i = 0; i
< number; i++) {<BR> print_to_socket (fh, "%u %s\n",
(unsigned int) times[i], names[i]);<BR>+ }<BR> <BR>
free_everything_and_return (0);<BR> } /* int handle_listval */<BR>diff
--git a/src/utils_fbhash.c b/src/utils_fbhash.c<BR>index d20b7e3..9f1058b
100644<BR>--- a/src/utils_fbhash.c<BR>+++ b/src/utils_fbhash.c<BR>@@ -234,6
+234,7 @@ void fbh_destroy (fbhash_t *h) /* {{{ */<BR> if (h ==
NULL)<BR> return;<BR> <BR>+
pthread_mutex_destroy(&h->lock);<BR> free
(h->filename);<BR> fbh_free_tree (h->tree);<BR> } /* }}}
void fbh_destroy */</FONT></SPAN></DIV>
<DIV> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>commit 402e0a1746a67e47619ffc4ce2ad6317e8884cfe<BR>Author:
Gerrie Roos <<A
href="mailto:groos@xiplink.com">groos@xiplink.com</A>><BR>Date:
Tue Apr 17 15:22:36 2012 +0200</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed collectd's unixsock read
interrupted by SIGCHLD's.</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>diff --git a/src/unixsock.c b/src/unixsock.c<BR>index
0b89748..1010b59 100644<BR>--- a/src/unixsock.c<BR>+++ b/src/unixsock.c<BR>@@
-222,6 +222,9 @@ static void *us_handle_client (void
*arg)<BR> errno = 0;<BR> if (fgets (buffer,
sizeof (buffer), fhin) == NULL)<BR> {<BR>+ if
(errno ==
EINTR)<BR>+ continue;<BR>+<BR> if
(errno != 0)<BR> {<BR> char
errbuf[1024];</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>commit 9f4c960f94bc70d680400b50a84655f288e7e96d<BR>Author:
Gerrie Roos <<A
href="mailto:groos@xiplink.com">groos@xiplink.com</A>><BR>Date:
Tue Jan 10 09:00:42 2012 +0200</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed collectd exec module:
incorrectly exited select loop on signal.</FONT></SPAN></DIV>
<DIV> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>diff --git a/src/exec.c b/src/exec.c<BR>index
c64f949..322ff67 100644<BR>--- a/src/exec.c<BR>+++ b/src/exec.c<BR>@@ -584,8
+584,15 @@ static void *exec_read_one (void *arg) /* {{{ */<BR> /*
We use a copy of fdset, as select modifies it */<BR> copy =
fdset;<BR> <BR>- while (select(highest_fd + 1, ©, NULL, NULL,
NULL ) > 0)<BR>+ while (1)<BR> {<BR>+ int
e = select(highest_fd + 1, ©, NULL, NULL, NULL );<BR>+
if (e < 0) {<BR>+ if (errno ==
EINTR)<BR>+ continue;<BR>+
break;<BR>+ }<BR>+<BR> int
len;<BR> <BR> if (FD_ISSET(fd,
©))</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>commit 27dd489e1242af63d2df04dfe627c440512e8da1<BR>Author:
Gerrie Roos <<A
href="mailto:groos@xiplink.com">groos@xiplink.com</A>><BR>Date:
Tue Dec 20 06:30:59 2011 +0200</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Fixed incorrect collectd warning
when configuring network plugin.</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>diff --git a/src/network.c b/src/network.c<BR>index
412b457..aa1c858 100644<BR>--- a/src/network.c<BR>+++ b/src/network.c<BR>@@
-1685,9 +1685,9 @@ static int network_set_interface (const sockent_t *se, const
struct addrinfo *ai<BR> }<BR> <BR> /* else: Not a
multicast interface. */<BR>-#if defined(HAVE_IF_INDEXTONAME) &&
HAVE_IF_INDEXTONAME && defined(SO_BINDTODEVICE)<BR> if
(se->interface != 0)<BR> {<BR>+#if defined(HAVE_IF_INDEXTONAME)
&& HAVE_IF_INDEXTONAME &&
defined(SO_BINDTODEVICE)<BR> char
interface_name[IFNAMSIZ];<BR> <BR> if (if_indextoname
(se->interface, interface_name) == NULL)<BR>@@ -1704,11 +1704,10 @@ static
int network_set_interface (const sockent_t *se, const struct addrinfo
*ai<BR> sstrerror (errno, errbuf, sizeof
(errbuf)));<BR> return
(-1);<BR> }<BR>- }<BR> /* #endif HAVE_IF_INDEXTONAME
&& SO_BINDTODEVICE */<BR> <BR> #else<BR>- WARNING
("network plugin: Cannot set the interface on a unicast
"<BR>+ WARNING ("network plugin: Cannot set the interface on a
unicast "<BR> "socket because "<BR> # if
!defined(SO_BINDTODEVICE)<BR> "the the
\"SO_BINDTODEVICE\" socket option "<BR>@@ -1718,6 +1717,8 @@ static int
network_set_interface (const sockent_t *se, const struct addrinfo
*ai<BR> "is not available on your
system.");<BR> #endif<BR> <BR>+ }<BR>+<BR> return
(0);<BR> } /* }}} network_set_interface */<BR> <BR>commit
641dc2dd4c595ede24c3997e4aa9db5c4528a2cd<BR>Author: Gerrie Roos <<A
href="mailto:groos@xiplink.com">groos@xiplink.com</A>><BR>Date:
Wed May 25 18:28:55 2011 +0200</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> Collectd's scale plugin now supports
scaling only on specific data sources, yay!</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>diff --git a/src/target_scale.c
b/src/target_scale.c<BR>index 29fecdf..a8d7038 100644<BR>---
a/src/target_scale.c<BR>+++ b/src/target_scale.c<BR>@@ -29,6 +29,9 @@ struct
ts_data_s<BR> {<BR> double factor;<BR> double
offset;<BR>+<BR>+ char **data_sources;<BR>+ size_t
data_sources_num;<BR> };<BR> typedef struct ts_data_s
ts_data_t;<BR> <BR>@@ -300,6 +303,67 @@ static int ts_config_set_double
(double *ret, oconfig_item_t *ci) /* {{{ */<BR> return
(0);<BR> } /* }}} int ts_config_set_double */<BR> <BR>+static int
ts_config_add_data_source(ts_data_t *data, /* {{{
*/<BR>+ oconfig_item_t *ci)<BR>+{<BR>+ size_t
new_data_sources_num;<BR>+ char **temp;<BR>+ int i;<BR>+<BR>+ /*
Check number of arbuments. */<BR>+ if (ci->values_num <
1)<BR>+ {<BR>+ ERROR ("`value' match: `%s' needs at least one
argument.",<BR>+ ci->key);<BR>+ return
(-1);<BR>+ }<BR>+<BR>+ /* Check type of arguments */<BR>+ for (i
= 0; i < ci->values_num; i++)<BR>+ {<BR>+ if
(ci->values[i].type ==
OCONFIG_TYPE_STRING)<BR>+ continue;<BR>+<BR>+ ERROR
("`value' match: `%s' accepts only string arguments
"<BR>+ "(argument %i is a
%s).",<BR>+ ci->key, i +
1,<BR>+ (ci->values[i].type ==
OCONFIG_TYPE_BOOLEAN)<BR>+ ? "truth value" :
"number");<BR>+ return (-1);<BR>+ }<BR>+<BR>+ /* Allocate
space for the char pointers */<BR>+ new_data_sources_num =
data->data_sources_num + ((size_t) ci->values_num);<BR>+ temp = (char
**) realloc (data->data_sources,<BR>+ new_data_sources_num *
sizeof (char *));<BR>+ if (temp == NULL)<BR>+ {<BR>+ ERROR
("`value' match: realloc failed.");<BR>+ return
(-1);<BR>+ }<BR>+ data->data_sources = temp;<BR>+<BR>+ /* Copy
the strings, allocating memory as needed. */<BR>+ for (i = 0; i <
ci->values_num; i++)<BR>+ {<BR>+ size_t
j;<BR>+<BR>+ /* If we get here, there better be memory for us to
write to. */<BR>+ assert (data->data_sources_num <
new_data_sources_num);<BR>+<BR>+ j =
data->data_sources_num;<BR>+ data->data_sources[j] = sstrdup
(ci->values[i].value.string);<BR>+ if (data->data_sources[j] ==
NULL)<BR>+ {<BR>+ ERROR ("`value' match: sstrdup
failed.");<BR>+ continue;<BR>+ }<BR>+ data->data_sources_num++;<BR>+ }<BR>+<BR>+ return
(0);<BR>+} /* }}} int ts_config_add_data_source */<BR>+<BR> static int
ts_destroy (void **user_data) /* {{{ */<BR> {<BR> ts_data_t
**data;<BR>@@ -309,6 +373,13 @@ static int ts_destroy (void **user_data) /* {{{
*/<BR> <BR> data = (ts_data_t **)
user_data;<BR> <BR>+ if (*data && (*data)->data_sources)
{<BR>+ size_t i;<BR>+ for (i = 0; i <
(*data)->data_sources_num;
i++)<BR>+ free((*data)->data_sources[i]);<BR>+ free((*data)->data_sources);<BR>+ }<BR>+<BR> free
(*data);<BR> *data = NULL;<BR> <BR>@@ -341,6 +412,8 @@ static
int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{
*/<BR> status = ts_config_set_double
(&data->factor, child);<BR> else if (strcasecmp
("Offset", child->key) == 0)<BR> status =
ts_config_set_double (&data->offset, child);<BR>+ else if
(strcasecmp ("DataSource", child->key) ==
0)<BR>+ status = ts_config_add_data_source(data,
child);<BR> else<BR> {<BR> ERROR
("Target `scale': The `%s' configuration option is not understood "<BR>@@ -393,6
+466,18 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{
*/<BR> <BR> for (i = 0; i < ds->ds_num;
i++)<BR> {<BR>+ /* If we've got a list of data sources, is
it in the list? */<BR>+ if (data->data_sources)
{<BR>+ size_t j;<BR>+ for (j = 0; j <
data->data_sources_num; j++)<BR>+ if
(strcasecmp(ds->ds[i].name, data->data_sources[j]) ==
0)<BR>+ break;<BR>+<BR>+ /* No
match, ignore */<BR>+ if (j >=
data->data_sources_num)<BR>+ continue;<BR>+ }<BR>+<BR> if
(ds->ds[i].type ==
DS_TYPE_COUNTER)<BR> ts_invoke_counter (ds, vl, data,
i);<BR> else if (ds->ds[i].type ==
DS_TYPE_GAUGE)</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2> </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>Hope you find this useful,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2>gerrie</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=609501520-30052012><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> David Halko [mailto:davidhalko@gmail.com]
<BR><B>Sent:</B> 25 May 2012 09:23 PM<BR><B>To:</B>
groos@xiplink.com<BR><B>Cc:</B> collectd@verplant.org<BR><B>Subject:</B> Re:
[collectd] Unixsock plugin memleaks<BR></FONT><BR></DIV>
<DIV></DIV>It sounds like a good deal, if you share the changed, <BR>if you have
fixed some memory leaks!!!<BR><BR>Dave<BR><A
href="http://netmgt.blogspot.com/">http://netmgt.blogspot.com/</A><BR><BR>
<DIV class=gmail_quote>On Thu, May 24, 2012 at 11:21 AM, Gerrie Roos <SPAN
dir=ltr><<A href="mailto:groos@xiplink.com"
target=_blank>groos@xiplink.com</A>></SPAN> wrote:<BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi
ppl<BR><BR>I've been chasing some memory leaks in the unixsock plugin (already
found a<BR>couple) but there might still be some leaks. Has anybody been
working on<BR>this plugin recently? I'd be happy to share what I've got
so
far.<BR><BR>gerrie<BR>_______________________________________________<BR>collectd
mailing list<BR><A
href="mailto:collectd@verplant.org">collectd@verplant.org</A><BR><A
href="http://mailman.verplant.org/listinfo/collectd"
target=_blank>http://mailman.verplant.org/listinfo/collectd</A><BR></BLOCKQUOTE></DIV>
<HR noShade SIZE=1>
<A></A>
<P class="" align=left color="#000000" avgcert??>No virus found in this
message.<BR>Checked by AVG - <A
href="http://www.avg.com">www.avg.com</A><BR>Version: 2012.0.2176 / Virus
Database: 2425/5022 - Release Date: 05/25/12</P></BODY></HTML>