[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 2.1.17 memory leaks and other problems in cfservd
From: |
Mark Burgess |
Subject: |
Re: 2.1.17 memory leaks and other problems in cfservd |
Date: |
Wed, 04 Jan 2006 09:15:06 +0100 |
Does anyone know how much insure++ costs?
M
On Tue, 2006-01-03 at 17:37 -0800, Pete Wright wrote:
> Mark Burgess wrote:
>
> >It's great that you have these tools! THanks for this. I think the
> >important leak is occurring during connection. I have made some patches
> >to the svn and snapshot versions now (snapshot takes 1/2 hr to update).
> >If you have any way of testing the running code it would be great!!
> >
> >M
> >
> >
>
> I would be interested in testing out these patches, is there an easy way
> that someone can recommend in stress testing cfengine to see if the
> leaks are being addressed (I am currently working on a methodology to
> test scalability of cfengine in our environment). Or is this something
> that you would need to run through insure++ or some such tool? If so
> let me know and I will see if I can find resources to do so.
>
> -pete
>
> >On Thu, 2005-12-22 at 15:09 -0500, Joe Buehler wrote:
> >
> >
> >>Here are some memory leaks found with insure++. They just cover
> >>cfservd startup; I haven't actually done anything with the
> >>running cfservd yet...
> >>
> >>1. AddAuthHostItem creates a list with SplitStringAsItemList
> >>but never frees the list. Note that parts of the list are
> >>re-used (ip->name) so the list cannot just be wholesale deleted.
> >>
> >>\"/home/project-releases/tmp/cfengine-2.1.17/src/install.c\", line 6243:
> >>(LEAK_SCOPE)
> >>
> >>
> >>>> return;
> >>>>
> >>>>
> >> Memory leaked leaving scope: malloc(sizeof(struct Item))
> >>
> >> Lost block : 0x200d28d8 thru 0x200d28f7 (32 bytes)
> >> malloc(sizeof(struct Item)), allocated at item.c, 316
> >> malloc() (interface)
> >> AppendItem() item.c, 316
> >> SplitStringAsItemList() item.c, 1138
> >> AddAuthHostItem() install.c, 6231
> >> InstallAuthPath() install.c, 6208
> >> InstallAuthItem() install.c, 5164
> >> HandleServerRule() parse.c, 909
> >> yylex() cflex.l, 501
> >> yyparse() bison.simple, 432
> >> ParseFile() parse.c, 1051
> >> ParseInputFile() parse.c, 82
> >> main() cfservd.c, 144
> >> __start() crt0main.s
> >>
> >>2. In cfservd.c:
> >>
> >>if (StrStr(VSYSNAME.nodename,ToLowerStr(VDOMAIN)))
> >>
> >>The problem is that StrStr() calls ToLowerStr() internally
> >>and that function returns a pointer to a static area. ToLowerStr
> >>should be rewritten to use a buffer passed in as a parameter.
> >>
> >>\"/home/project-releases/tmp/cfengine-2.1.17/src/cfservd.c\", line 416:
> >>(COPY_DANGLING)
> >>
> >>
> >>>>if (StrStr(VSYSNAME.nodename,ToLowerStr(VDOMAIN)))
> >>>>
> >>>>
> >> Copying dangling pointer: StrStr
> >>
> >> Pointer : 0x2ff1e324
> >> In block: 0x2ff1e324 thru 0x2ff1f323 (4096 bytes)
> >> buf1, declared at patches.c, 59
> >> popped off stack at patches.c, 63
> >>
> >> Stack trace where the error occurred:
> >> CheckVariables() cfservd.c, 416
> >> main() cfservd.c, 148
> >> __start() crt0main.s
> >>
> >>3. nodename[] may not have any '.' characters in it -- note that
> >>if I recall correctly it may not be null-terminated either.
> >>
> >>\"/home/project-releases/tmp/cfengine-2.1.17/src/cfservd.c\", line 420:
> >>(READ_BAD_INDEX)
> >>
> >>
> >>>> while(VSYSNAME.nodename[i++] != '.')
> >>>>
> >>>>
> >> Reading array out of range: VSYSNAME.nodename[i++]
> >>
> >> Index used : 32
> >>
> >> Valid range: 0 thru 31 (inclusive)
> >>
> >> Stack trace where the error occurred:
> >> CheckVariables() cfservd.c, 420
> >> main() cfservd.c, 148
> >> __start() crt0main.s
> >>
> >>
> >
> >
> >
> >_______________________________________________
> >Help-cfengine mailing list
> >Help-cfengine@gnu.org
> >http://lists.gnu.org/mailman/listinfo/help-cfengine
> >
> >
> >
>
>