tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Possible pthreads memory leak



On Sat, 16 Jan 2010 23:32:35 -0600
Zach Wegner <zwegner%gmail.com@localhost> wrote:

> On Sat, Jan 16, 2010 at 10:28 PM, john heasley <heas%shrubbery.net@localhost> 
> wrote:
> >
> > i think threads are attacahed by default, so you need to free the thread
> > pointer ,etc. Âpthread_destory()
> 
> Hello John,
> 
> I guess you mean pthread_detach()? I never thought that that was
> needed, and reading the man pages suggests that it's equivalent to a
> non-blocking version of pthread_join. So pthread_join should
> theoretically do the same cleanup that pthread_detach does, after the
> child thread exits. And indeed, calling pthread_detach after
> pthread_join (or vice versa) still leaks memory. pthread_detach
> returns an error too (ESRCH), as I guess it should.

You're right, you shouldn't need to detach threads which you're joining
(you'd indeed be leaking resources if you didn't join non-detached
threads, however).

I ran the same test on a recent i386 netbsd-5 and the process initially
grows (I suspect the pthread library, and potentially the heap memory
allocator, caches some pages/objects for performance), and then seems
rather stable in size.  I however do see a slight size increase over
time if running it for a long while.  However I'm still looking at the
new size and it appears stable again at 19M/904K SIZE/RES.

Thanks,
-- 
Matt


Home | Main Index | Thread Index | Old Index