libpthread patch

David Xu davidxu at freebsd.org
Wed Apr 16 16:29:14 PDT 2003


----- Original Message ----- 
From: "Daniel Eischen" <eischen at pcnet1.pcnet.com>
To: "David Xu" <davidxu at freebsd.org>
Cc: <freebsd-threads at freebsd.org>
Sent: Thursday, April 17, 2003 5:05 AM
Subject: Re: libpthread patch


> There's a new patch available at:
> 
>     http://people.freebsd.org/~deischen/kse/libpthread.diffs
> 
> This passes all the ACE tests that libc_r passes, with the
> exception of Cached_Conn_Test.
> 
> It also seems to work with KDE, konqueror, kwrite, kmail, etc.
> I don't have mozilla built (and am dreading trying to), but
> it would be interesting to see if it works with that.
> 

Cool!

> If no-one has any objections, I'd like to commit this
> soon.  I'll let David review and comment to it first.
> 
> David, I didn't add critical regions to _thr_alloc() and
> _thr_free().  I think that whenever they are used, we
> are already in a critical region or operating on an upcall.
> 

Hmm,  I don't like to put malloc calling under critical section,
it is better to put it under a lock, otherwise this would cause dead 
lock. suppose that an user thread is calling malloc(), and heap manager
got malloc spinlock, then it does somethings and the thread is preempted
by upcall from kernel,  now UTS switches to another thread, that thread
starts to call  pthread_create,  so UTS kernel enters a critical region first,
and calls malloc, this would cause dead lock, because UTS is under critical
region and no context switch could happen.
Also I don't like thr_free under critical region, I think a GC thread is still
needed to recycle zombie thread and free extra memory, UTS kernel 
should't be blocked by user thread. Despite this,  I think the patch should
be committed. 

David Xu

> -- 
> Dan Eischen



More information about the freebsd-threads mailing list