Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jan 2000 22:18:44 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Brian Fundakowski Feldman <green@FreeBSD.ORG>
Cc:        Stephen McKay <syssgm@detir.qld.gov.au>, freebsd-current@FreeBSD.ORG, dt@FreeBSD.ORG
Subject:   Re: Crash from ^T during heavy paging
Message-ID:  <Pine.BSF.4.10.10001112139030.16099-100000@alphplex.bde.org>
In-Reply-To: <Pine.BSF.4.10.10001110327150.39255-100000@green.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 11 Jan 2000, Brian Fundakowski Feldman wrote:

> On Mon, 10 Jan 2000, Stephen McKay wrote:
> 
> > The problem is that calcru() thinks that P_INMEM means that the proc
> > structure is fully and accurately populated.  But P_INMEM is one of the
> > first flags set.
> >
> > So, calcru() and possibly some other places, are looking at a struct proc
> > before it's all there.  What's the "proper" way to do it?
> 
> It should really be one of the _last_ flags set, if it's to mean anything.
> I don't know how to explain the prevalance of race conditions in the old
> code, except to say it probably has to do with not planning ahead.

> [patch deleted]

I broke calcru() with the monotonicity fixes (kern_resource.c rev.1.45
(1999/03/13).  Accessing p->p_stats at interrupt time is only valid if
p == curproc.

Fix: move the new monotonicity fields from struct pstats to struct
proc.  I only put them in struct pstats because they logically go with
some fields in struct rusage.

P_INMEM is probably not supposed to work in interrupt contexts.
Checking it in ttyinfo() is a wrong fix for the bug in calcru().  It
was committed in tty.c rev.1.119 (1999/05/22).

Bruce



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?Pine.BSF.4.10.10001112139030.16099-100000>