Read cycle count before sending signal, this fixes a userland thread

suspension bug.

MFC after: 3 days
This commit is contained in:
davidxu 2006-02-20 09:02:40 +00:00
parent e94509aa30
commit 91fda076fb

View File

@ -126,10 +126,10 @@ suspend_common(struct pthread *curthread, struct pthread *thread,
while (thread->state != PS_DEAD &&
!(thread->flags & THR_FLAGS_SUSPENDED)) {
thread->flags |= THR_FLAGS_NEED_SUSPEND;
tmp = thread->cycle;
THR_THREAD_UNLOCK(curthread, thread);
_thr_send_sig(thread, SIGCANCEL);
if (waitok) {
tmp = thread->cycle;
_thr_umtx_wait(&thread->cycle, tmp, NULL);
THR_THREAD_LOCK(curthread, thread);
} else {