Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Mar 2001 23:50:16 -0500
From:      Jake Burkholder <jburkholder0829@home.com>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        current@FreeBSD.ORG
Subject:   Re: Scheduler panic 
Message-ID:  <20010302045017.23221BACC@cr66388-a.rchrd1.on.wave.home.com>
In-Reply-To: Message from Jake Burkholder <jburkholder0829@home.com>  of "Thu, 01 Mar 2001 21:35:47 EST." <20010302023548.4F733BACC@cr66388-a.rchrd1.on.wave.home.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
replying to myself again....

> 
> This is the best workaround I can think of:
> 
> Index: kern/kern_intr.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/kern/kern_intr.c,v
> retrieving revision 1.47
> diff -u -r1.47 kern_intr.c
> --- kern/kern_intr.c    2001/02/28 02:53:43     1.47
> +++ kern/kern_intr.c    2001/03/02 02:28:08
> @@ -366,7 +366,7 @@
>          */
>         ithread->it_need = 1;
>         mtx_lock_spin(&sched_lock);
> -       if (p->p_stat == SWAIT) {
> +       if (p->p_stat == SWAIT && curproc->p_stat == SRUN) {
>                 CTR1(KTR_INTR, __func__ ": setrunqueue %d", p->p_pid);
>                 p->p_stat = SRUN;
>                 setrunqueue(p);

Heh.  Sorry this is wrong, the test for SRUN should be in the
same if statement as the do_switch, one further in.  This
will completetly miss interrupts if the race is ever hit...


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?20010302045017.23221BACC>