Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Aug 1996 17:48:21 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        dfr@render.com, james@miller.cs.uwm.edu
Cc:        freebsd-current@FreeBSD.org, wangel@wgrobez1.remote.louisville.edu
Subject:   Re: locking up
Message-ID:  <199608130748.RAA31144@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> > Sometimes, at no predetermined time, without warning, when switching VC's,
>> > I'll lock up. FreeBSD doesn't lockup just the keyboard, and I can only fix
>> > it by rebooting.

>This happens to me whenever I break into DDB.  The ipending thing fixes
>it.  I guess this motherboard manages to misplace the keyboard interrupt
>while I am in the debugger :-(.

I guess it is a timing bug in the console driver.  If an ISA interrupt
handler returns before completely servicing then interrupt, then it will
never get anothr interrupt (because ISA interrupts are edge triggered
and the old one hasn't gone away).  Polling for keystrokes in the (ddb)
console input routine apparently sometimes confuses the driver into
thinking that an unserviced interrupt has been serviced.

The bug is very obvious:  scintr() doesn't loop like it needs to.
scgetc() does loop, but it sometimes returns early.  I used to think
that the loop handled all cases, but this bug has been present since
revision 1.1.

Bruce



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