* Paul D. Schmidt <[EMAIL PROTECTED]> [010205 11:15] wrote:
> On Mon, Feb 05, 2001 at 12:59:37AM -0800, Alfred Perlstein wrote:
> > * Paul D. Schmidt <[EMAIL PROTECTED]> [010204 23:23] wrote:
> 
> > > Are there currently any known bugs with pthread_mutex_init
> > > and pthread_cond_init returning 0, but pthread_cond_wait
> > > returning EINVAL nonetheless?
> > 
> > Can you provide a code sample to replicate this and specify which
> > version of FreeBSD you're using?
> 
> typedef struct cond_tag {
>         long cond_id;
>         char *name;
>  
>         pthread_mutex_t cond_mutex;
>         pthread_cond_t sys_cond;
> } cond_t;
>  
> void thread_cond_create(cond_t *cond)
> {
>         pthread_cond_init(&cond->sys_cond, NULL);
>         pthread_mutex_init(&cond->cond_mutex, NULL);
> }
>  
> void thread_cond_wait(cond_t *cond)
> {
>         pthread_cond_wait(&cond->sys_cond, &cond->cond_mutex);
> }
> 
> pthread_cond_wait() is returning immediately with EINVAL, even though
> printf debugging tells me that both the pthread_(cond|mutex)_init
> functions returned 0 (which man tells me is success).
> 
> This is on FreeBSD 4.2-RELEASE.

1) 4.2 RELEASE has known pthreads bugs, you should upgrade to -stable.
2) is cond->cond_mutex held when thread_cond_wait() is called?  if not
   I'm pretty sure it needs to be.

-- 
-Alfred Perlstein - [[EMAIL PROTECTED]|[EMAIL PROTECTED]]
"I have the heart of a child; I keep it in a jar on my desk."


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to