Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Feb 2001 14:23:22 -0800 (PST)
From:      Mikko Tyolajarvi <mikko@dynas.se>
To:        pds@uberhacker.org
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: known pthread bug?
Message-ID:  <200102052223.f15MNMI77338@explorer.rsa.com>
References:  <20010205005937.M26076@fw.wintelcom.net>; from bright@wintelcom.net on Mon, Feb 05, 2001 at 12:59:37AM -0800 <20010205111506.A73450@uberhacker.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In local.freebsd.hackers you write:

>On Mon, Feb 05, 2001 at 12:59:37AM -0800, Alfred Perlstein wrote:
>> * Paul D. Schmidt <pds@uberhacker.org> [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 not a self-contained, runnable example, but if you just call
the functions in this order, you will not have not locked the
cond_mutex when you read pthread_cond_wait(), which is wrong, since
pthread_cond_wait() is supposed to unblock the mutex.

  $.02,
  /Mikko
-- 
 Mikko Työläjärvi_______________________________________mikko@rsasecurity.com
 RSA Security


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102052223.f15MNMI77338>