Possible memory leak in Pthreads-Win32

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Possible memory leak in Pthreads-Win32

Jason Jones-7
Hello!

I am having memory leaks when using Pthreads-Win32. I have attached a
very simple example program that illustrates the problem. It is very
simple:

1) Inside a for loop, I create two threads with pthread_create.
2) Each of these threads executes a function that just returns 0;
3) I print out the return from the pthread_create calls.
4) Then use pthread_join on the two threads and the execute the next
iteration of the loop.

As I run this program, I can watch the memory constantly growing (
through task manager ). If I let it run long enough, I have seen it
use 600 megabytes of memory. If I run the same program on Linux with
native pthreads, I do not see any memory growth no matter how long I
let it run. On Windows I see the memory leak with Visual Studio 2008
and also with the latest version of the Intel compiler.

Is this a memory leak? Or am I doing something stupid?

Thanks,

Jason

pthread_leak.c (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Possible memory leak in Pthreads-Win32

Ross Johnson-2
Hi Jason,

I ran your test with the pthreadVC2.dll that I've just built from the
sources from the current cvs head and did not see any resources growing
over time, including memory, handles, etc. Peak working set was about
1.6MB and Working Set (Private) was about 550kB toggling between a max
and min value with small delta but not growing at all.

The particulars for this test were:

- current cvs head revision of the code
- Windows Vista 32 bit
- MSVS 2010 Express compiler (32 bit)
- pthreadVC2.dll built by runing "nmake clean VC-inlined"
- test suite passed by running "nmake clean VC" in the tests folder
- your test compiled by running "nmake pthread_leak-1.exe" in the tests
folder (only succeeds if run after running the test suite so that the
required headers and libs are copied into the tests folder).

I also compiled your test using the command line in your comments
(modified to run relative to the tests folder), i.e. without all the
additional flags from the nmake build, and no leak there either but did
consume slightly more memory.

You didn't indicate what version of the library you are using (pre-built
or built from source) or any other details of your system but I'm
reasonably confident there aren't any leaks with the current cvs head
source revision.

Regards.
Ross

On 2/12/2011 1:11 PM, Jason Jones wrote:

> Hello!
>
> I am having memory leaks when using Pthreads-Win32. I have attached a
> very simple example program that illustrates the problem. It is very
> simple:
>
> 1) Inside a for loop, I create two threads with pthread_create.
> 2) Each of these threads executes a function that just returns 0;
> 3) I print out the return from the pthread_create calls.
> 4) Then use pthread_join on the two threads and the execute the next
> iteration of the loop.
>
> As I run this program, I can watch the memory constantly growing (
> through task manager ). If I let it run long enough, I have seen it
> use 600 megabytes of memory. If I run the same program on Linux with
> native pthreads, I do not see any memory growth no matter how long I
> let it run. On Windows I see the memory leak with Visual Studio 2008
> and also with the latest version of the Intel compiler.
>
> Is this a memory leak? Or am I doing something stupid?
>
> Thanks,
>
> Jason