re-use of dbprocess structure (was: Re: [freetds] state of dbrpcsend())

liam at inodes.org liam at inodes.org
Fri Jul 9 02:47:19 EDT 2004


On Thu, Jul 08, 2004 at 11:50:58AM +0200, Frediano Ziglio wrote:

> > Unless there are some objections (or offers) I'll start trying to patch
> > the apparent numerous memory leaks in 0.62.4.
> > 
> 
> This patch should fix the problem (committed in 0.63, not in 0.62)

Thanks. I also sent a similar patch to James before you sent yours.
Unfortunately, there is still a more subtle memory leak that I've
been trying to track down.

The test code leaks approximately 96-120 bytes per 1,000 interations. I 
would expect that the leak variance between execution is due to page 
fragementation but I'll take other suggestions. However, it is still 
very puzzling as I would expect a consistent leak for every iteration
not one page per 40 interations. Maybe a bad realloc() somewhere?

I've re-compiled FreeTDS with dmalloc, removed -O2 and added -g. 
The dmalloc report has libc functions like nss_* and dlopen_* on the
not freed list which is probably okay. I did however see that
strdup() and tsearch() were also on the list which is suspicious.

I think dbcancel() needs to be modified to clear out the RPC 
structure and any paramaters so it can be called after use but I
don't know if this is an appropriate course of action interms of
other vendor impementations of dblib.

I need to get rid of this memory leak, any other suggestions on what
else it might be?

Cheers. 



More information about the FreeTDS mailing list