From owner-freebsd-bugs Sat Oct 24 06:10:08 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id GAA10831 for freebsd-bugs-outgoing; Sat, 24 Oct 1998 06:10:08 -0700 (PDT) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id GAA10826 for ; Sat, 24 Oct 1998 06:10:04 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id GAA25085; Sat, 24 Oct 1998 06:10:01 -0700 (PDT) Date: Sat, 24 Oct 1998 06:10:01 -0700 (PDT) Message-Id: <199810241310.GAA25085@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.ORG From: Daniel Eischen Subject: Re: kern/8375: pthread_cond_wait() spins the CPU Reply-To: Daniel Eischen Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/8375; it has been noted by GNATS. From: Daniel Eischen To: eischen@vigrid.com, jb@cimlogic.com.au Cc: dima@tejblum.dnttm.rssi.ru, freebsd-gnats-submit@FreeBSD.ORG, jb@FreeBSD.ORG Subject: Re: kern/8375: pthread_cond_wait() spins the CPU Date: Sat, 24 Oct 1998 08:52:45 -0400 (EDT) > > If thread scheduling is kicked off right after the last > > SPINUNLOCK, then you can also have a thread removed > > from the mutex queue, but it'll never get woken up. > > The simple solution to this is to change the thread state to PS_MUTEX_WAIT > while the mutex is locked, then enter the scheduler without changing the > state. I don't think that the problem is one of locking - just the > possibility that the thread state will be overwritten at an inoportune > time (i.e. the thread state may be changed to PS_RUNNING before it > gets a chance to set it's state to PS_MUTEX_WAIT). That works. If you want to keep your __FILE__ and __LINE__ debug thingys, you'll have to add another interface for _thread_kern_sched_state that doesn't change the state, though. Dan Eischen eischen@vigrid.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message