From owner-freebsd-current Sat Sep 9 13:12:12 2000 Delivered-To: freebsd-current@freebsd.org Received: from scientia.demon.co.uk (scientia.demon.co.uk [212.228.14.13]) by hub.freebsd.org (Postfix) with ESMTP id E6A9937B423 for ; Sat, 9 Sep 2000 13:12:07 -0700 (PDT) Received: from strontium.scientia.demon.co.uk ([192.168.91.36] ident=root) by scientia.demon.co.uk with esmtp (Exim 3.16 #1) id 13XqtI-000OT0-00 for current@FreeBSD.org; Sat, 09 Sep 2000 21:06:20 +0100 Received: (from ben@localhost) by strontium.scientia.demon.co.uk (8.9.3/8.9.3) id VAA36100 for current@FreeBSD.org; Sat, 9 Sep 2000 21:06:19 +0100 (BST) (envelope-from ben) Date: Sat, 9 Sep 2000 21:06:19 +0100 From: Ben Smithurst To: current@FreeBSD.org Subject: Re: page fault in sched_ithd Message-ID: <20000909210619.F77593@strontium.scientia.demon.co.uk> References: <20000909195525.E77593@strontium.scientia.demon.co.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="sm4nu43k4a2Rpi4c" Content-Disposition: inline User-Agent: Mutt/1.2i In-Reply-To: <20000909195525.E77593@strontium.scientia.demon.co.uk> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG --sm4nu43k4a2Rpi4c Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Ben Smithurst wrote: > A kernel from the latest sources gets a page fault in sched_ithd. DDB says: > > Stopped at: sched_ithd+0x3c: movl $0x01,0x14(%edi) > > Any ideas what's wrong? After poking around a bit with remote GDB, this seems to be caused by a stray IRQ 7, since irq == 7, ir == ithds[irq] == NULL, ir->foo == BOOM. The attached rather crude patch has "fixed" the problem for now, but does anyone have any suggestions for a real fix? -- Ben Smithurst / ben@FreeBSD.org / PGP: 0x99392F7D --sm4nu43k4a2Rpi4c Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="ithread.diff" Index: ithread.c =================================================================== RCS file: /usr/cvs/src/sys/i386/isa/ithread.c,v retrieving revision 1.1 diff -u -r1.1 ithread.c --- ithread.c 2000/09/07 01:32:48 1.1 +++ ithread.c 2000/09/09 19:58:46 @@ -144,6 +144,9 @@ } #endif + if (ir == NULL) + return; + /* * Set it_need so that if the thread is already running but close * to done, it will do another go-round. Then get the sched lock --sm4nu43k4a2Rpi4c-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message