Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Apr 2001 14:41:29 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Richard Todd <rmtodd@ichotolot.servalan.com>, current@FreeBSD.org, Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
Subject:   RE: selwakeup()
Message-ID:  <XFMail.010405144129.jhb@FreeBSD.org>
In-Reply-To: <XFMail.010405104534.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 05-Apr-01 John Baldwin wrote:
> 
> On 05-Apr-01 Garrett Wollman wrote:
>> <<On Thu, 05 Apr 2001 01:39:35 -0500, Richard Todd
>> <rmtodd@ichotolot.servalan.com> said:
>> 
>>> If I'm reading this backtrace right, the thread handling the sound
>>> hardware called selwakeup() (frame #19).  This called pfind() (frame
>>> #18), which tries to lock allproc.
>> 
>> selwakeup() shouldn't need to call pfind().  Because the process table
>> is in type-stable memory, it should be sufficient to keep a reference
>> to the caller's proc structure and check to see whether its pid is the
>> same one as in the selinfo.  The locking that selwakeup() already
>> needs to do should be sufficient to avoid a race.
>> 
>> (In 4.4BSD, process structures were not type-stable so this technique
>> could not have been used.)
> 
> There are probably several other places that pfind is called that this check
> should also be adequate for as well.  The ones in syscons for example.

As a safety check we should probably zero the pid right before zfree()'ing a
proc in wait() however, so that a stale pointer to a free'd process doesn't
have a valid pid if we do this.

>> -GAWollman

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.010405144129.jhb>