From 5ffec1d16d6a4372f9800136be254fdf35a760d8 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 11 Aug 2002 19:31:24 +0000 Subject: * cygthread.cc (cygthread::cygthread): Close another race. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/cygthread.cc | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'winsup/cygwin') diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 1da5f3c..07d1037 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,9 @@ 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 debugging. * dcrt0.cc (dll_crt0_1): Just wait for signal thread to go live rather diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index 00eeb25..d1d9337 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. */ -- cgit v1.1