This is the mail archive of the
pthreads-win32@sourceware.cygnus.com
mailing list for the pthreas-win32 project.
Re: condvar.c
- To: "Mark E. Armstrong" <avail@pacbell.net>
- Subject: Re: condvar.c
- From: Ross Johnson <rpj@ise.canberra.edu.au>
- Date: Fri, 28 May 1999 15:14:11 +1000 (EST)
- cc: "Bossom, John" <John.Bossom@Cognos.COM>, "'Peter Slacik'" <Peter.Slacik@tatramed.sk>, Pthreads-Win32 Mailing List <pthreads-win32@sourceware.cygnus.com>
Hi all,
I'm going to put up a new snapshot late saturday (my time) with all
patches since snapshot 99-04-07 included.
Thanks everyone.
Ross
On Thu, 27 May 1999, Mark E. Armstrong wrote:
> Greetings,
>
> After reading the referenced messages and checking the code WRT to
> the incorrect equality check, I noticed the assignment made to
> cv->wasBroadcast should be moved to prevent a possible memory
> fault when cv is dereferenced for auto-init objects:
>
>
> ************ original condvar.c starting at line 828 ************
> cv = *cond;
>
> cv->wasBroadcast = TRUE;
>
> /*
> * No-op if the CV is static and hasn't been initialised yet.
> */
> if (cv == (pthread_cond_t) _PTHREAD_OBJECT_AUTO_INIT)
> {
> return 0;
> }
>
> ************* corrected condvar.c starting at line 828 ************
> cv = *cond;
>
> /*
> * No-op if the CV is static and hasn't been initialised yet.
> */
> if (cv == (pthread_cond_t) _PTHREAD_OBJECT_AUTO_INIT)
> {
> return 0;
> }
>
> cv->wasBroadcast = TRUE;
>
> **********************************************************
>
> Took a quick look through the rest of the 99-04-07 snapshot for similar
> errors and didn't find any more.
>
> Enjoy,
> Mark Armstrong
>
>
>
>
> "Bossom, John" wrote:
>
> > You are correct... (assuming the code snippet you sent originated from my
> > original source... it looks like it does... I don't have the win32-pthreads
> > snapshot).
> >
> > -----Original Message-----
> > From: Peter Slacik [mailto:Peter.Slacik@tatramed.sk]
> > Sent: Wednesday, May 26, 1999 12:19 PM
> > To: Pthreads-Win32 Mailing List
> > Subject: condvar.c
> >
> > Hi thread writers,
> >
> > I tried to upgrade (after half year) to the current pthreads snapshot,
> > snap-1999-04-07, and I suspect one inequality test to be wrong:
> >
> > cvs diff -c -r1.1 -r1.2 condvar.c
> > Index: condvar.c
> > ===================================================================
> > RCS file: pthread/condvar.c,v
> > retrieving revision 1.1
> > retrieving revision 1.2
> > diff -c -r1.1 -r1.2
> > *** condvar.c 1999/04/07 12:18:40 1.1
> > --- condvar.c 1999/05/26 16:10:08 1.2
> > ***************
> > *** 851,857 ****
> > * Wait for all the awakened threads to acquire their part of
> > * the counting semaphore
> > */
> > ! if (WaitForSingleObject (cv->waitersDone, INFINITE) !=
> > WAIT_OBJECT_0)
> > {
> > result = 0;
> > --- 851,857 ----
> > * Wait for all the awakened threads to acquire their part of
> > * the counting semaphore
> > */
> > ! if (WaitForSingleObject (cv->waitersDone, INFINITE) ==
> > WAIT_OBJECT_0)
> > {
> > result = 0;
> >
> > Please check this.
> >
> > Regards
> > Peter Slacik
>
>
+----------------------+---+
| Ross Johnson | | E-Mail: rpj@ise.canberra.edu.au
| Info Sciences and Eng|___|
| University of Canberra | FAX: +61 6 2015227
| PO Box 1 |
| Belconnen ACT 2616 | WWW: http://willow.canberra.edu.au/~rpj/
| AUSTRALIA |
+--------------------------+