This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

~100KB usleep() memory leak


Hi All,

I have noticed ~100KB usleep() memory leak then compile mine
application under Cygwin. On Mac OS X 10.7 Lion it works fine (no
leak).
I am using Cygwin 1.7.11 version.
so, each call of usleep() I can see in Task Manager or Process
Explorer about ~100KB of memory are leaked. it is not so problematic,
but if I am using thread pool (e.g. 16 threads) it will leak about
~1MB per seconds, and several minutes of running application are
enough to waste all available memory ~4GB.

it is easy to reproduce. compile the following really simple source code :

#include <unistd.h>

int main()
{
	for (;;)
	{
		usleep(10);
	}
}

>g++ main.cpp

then run :

>./a.exe

and observe memory is leaking. to notice more huge memory leak,
compile the following simple example simulating thread pool :

#include <unistd.h>
#include <pthread.h>

void * ThreadProc(void *)
{
    for (;;)
	{
		usleep(10);
	}
	return NULL;
}

int main()
{
	size_t count = 16; // specify more to see bigger leak!
	pthread_t id;
	for (size_t i(0); i < count; ++i)
	pthread_create(&id, NULL, ThreadProc, NULL);
	for (;;);
	return NULL;
}

> g++ main.cpp

and run :

> ./a.exe

and observe huge and fast leaking memory. and if you comment usleep
call, memory leak will disapper.

I would be grateful if you could possibly advice something on this issue.

P.S. "cygcheck -s -v -r > cygcheck.out" execution log is in attachment
I am pleasant to enclose.

Attachment: cygcheck.out
Description: Binary data

#include <unistd.h>

int main()
{
	for (;;)
	{
		usleep(10);
	}
}
#include <unistd.h>
#include <pthread.h>

void * ThreadProc(void *)
{
    for (;;)
	{
		usleep(10);
	}
	return NULL;
}

int main()
{
	pthread_t id;
	for (size_t i(0); i < 16; ++i)
	pthread_create(&id, NULL, ThreadProc, NULL);
	for (;;);
}
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]