plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit 91ececc99741b3111c69d455bc928e871b15d766
parent 4692dd4786f8847494d3f020bc3c05ba210adc0d
Author: Russ Cox <rsc@swtch.com>
Date:   Wed, 30 Dec 2020 08:41:01 -0500

libthread: drop schedlock

Having two locks in the proc was causing deadlocks.

Diffstat:
Msrc/libthread/thread.c | 2+-
Msrc/libthread/threadimpl.h | 1-
2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/libthread/thread.c b/src/libthread/thread.c @@ -281,7 +281,7 @@ static void pthreadwakeupschedlocked(Proc *p, _Thread *self, _Thread *t) { _threaddebug(self, "pthreadwakeupschedlocked %p %d", p, t->id);; - t->schedrend.l = &p->schedlock; + t->schedrend.l = &p->lock; p->schedthread = t; _procwakeup(&t->schedrend); } diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h @@ -88,7 +88,6 @@ struct Proc uint nthread; uint sysproc; _Procrendez runrend; - Lock schedlock; _Thread *schedthread; void *udata; Jmp sigjmp;