[unixODBC-support] Memory leak in SQLFetch?

Saunders, Steve ssaunders at docucorp.com
Tue Dec 14 17:23:04 GMT 2004


This display's memory for the system.  

Better data would come from the 'ps l pid' (where pid is the process id of
the program).  I would do it by getting the initial memory usage of the
program by having it pause for user input before it loops, then get a few
different samples while it is running, and then have it pause for user input
again before it exits and collect the memory usage of the program before
stopping it.  

This will give you the detail about how much memory the specific program is
using.  

This is what I watch for leaks with during load testing our software on
various Unix/Linux platforms.




> -----Original Message-----
> From: unixodbc-support-bounces at easysoft.com
> [mailto:unixodbc-support-bounces at easysoft.com]On Behalf Of Craddock,
> Richard C
> Sent: Tuesday, December 14, 2004 12:15 PM
> To: Support for the unixODBC project
> Subject: RE: [unixODBC-support] Memory leak in SQLFetch?
> 
> 
> Here is the latest information that I have discovered.
> 
> In order to detect memory leaks I run free -b before and 
> after executing
> my code.  I assume that the difference between the two was 
> allocated but
> not freed by the application.
> 
> If I execute the SQLfetch() loop 101 times I get the following data:
> 
> [root at localhost file_upload]# free -b
>              total       used       free     shared    buffers
> cached
> Mem:    1326329856  604139520  722190336          0  281374720
> 231182336
> -/+ buffers/cache:   91582464 1234747392
> Swap:   4104372224          0 4104372224
> [root at localhost file_upload]# ./testfetch
> [root at localhost file_upload]# free -b
>              total       used       free     shared    buffers
> cached
> Mem:    1326329856  604270592  722059264          0  281391104
> 231198720
> -/+ buffers/cache:   91680768 1234649088
> Swap:   4104372224          0 4104372224
> 
> This shows a reproducible difference of 131072 bytes between runs.
> 
> If I allow the SQLfetch() loop execute 11 times I get the following:
> 
> [root at localhost file_upload]# free -b
>              total       used       free     shared    buffers
> cached
> Mem:    1326329856  604532736  721797120          0  281628672
> 231239680
> -/+ buffers/cache:   91664384 1234665472
> Swap:   4104372224          0 4104372224
> [root at localhost file_upload]# ./testfetch
> [root at localhost file_upload]# free -b
>              total       used       free     shared    buffers
> cached
> Mem:    1326329856  604532736  721797120          0  281636864
> 231243776
> -/+ buffers/cache:   91652096 1234677760
> Swap:   4104372224          0 4104372224
> 
> There is no difference between the two.  Maybe there is a memory
> corruption involved?  Attached is the sql.log file for the 
> 100 run case.
> 
> Thanks,
> Cameron
> 
> 



More information about the unixODBC-support mailing list