From 5ffec1d16d6a4372f9800136be254fdf35a760d8 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 11 Aug 2002 19:31:24 +0000 Subject: [PATCH] * cygthread.cc (cygthread::cygthread): Close another race. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/cygthread.cc | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 1da5f3c98..07d103758 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2002-08-11 Christopher Faylor + + * cygthread.cc (cygthread::cygthread): Close another race. + 2002-08-11 Christopher Faylor * assert.cc (__assert): Call debugger on assertion failure if diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index 00eeb25d0..d1d93375c 100644 --- a/winsup/cygwin/cygthread.cc +++ b/winsup/cygwin/cygthread.cc @@ -123,8 +123,15 @@ cygthread::cygthread (LPTHREAD_START_ROUTINE start, LPVOID param, api_fatal ("name should never be NULL"); #endif thread_printf ("name %s, id %p", name, id); - while (ResumeThread (h) == 0) + while (!h || ResumeThread (h) != 1) +#ifndef DEBUGGING Sleep (0); +#else + { + thread_printf ("waiting for %s<%p> to become active", __name, h); + Sleep (0); + } +#endif __name = name; /* Need to set after thread has woken up to ensure that it won't be cleared by exiting thread. */