cygthread::cygthread() hang

Joe Buehler jbuehler@hekimian.com
Wed Apr 9 16:32:00 GMT 2003


Christopher Faylor wrote:

> Yep.  I guess it's possible that there are more leaks than just the
> stack one.

OK, I think I know what is going on.  The stack address for terminated
threads is walking up through memory until it hits the top and then
CreateThread() fails.  So the thread stack is not being freed.

Looking at the API documentation, it looks like VirtualFree() is not being
used correctly.  The VirtualQuery() function is returning a region of size
4096.  So probably that is all that is committed, the rest is reserved,
and VirtualFree is only freeing the committed memory, since everything has
to be in the same state.  I'll call VirtualFree() twice like the docs say
and see if that fixes it.
-- 
Joe Buehler



More information about the Cygwin-developers mailing list