On Feb 9, Nathan Meyers wrote:
> On Tue, Feb 08, 2000 at 01:19:50PM +0100, Wolfgang Weisselberg wrote:
> > Hi, Nathan!
> > 
> > Trying to kill the keyboard, Nathan Meyers
> > ([EMAIL PROTECTED]) produced 0,7K in 22 lines:
> > 
> > > Its purpose is to call a function pointed to by the function pointer
> > > "handler". As far as I can tell, it behaves the following way when
> > > handler points to the function fdc_isr():
> > 
> > >   1) If fdc->fifo_locked is 0, fdc_isr is called.
> > >   2) If fdc->fifo_locked is 1, fdc_isr is not called.
> > 
> > > There is no obvious reason for this logic, but that seems to be what's
> > > happening and seems to be the cause for my lack of a working tape
> > > drive. Any insights into what's going on here would be most welcome.
> 
> This problem is a symptom of the memory corruption I described last
> night. The memory being corrupted includes the ftape_tracings[] array;
> it's not that fdc_isr() is not being called, it's that the logging in
> fdc_isr() is not happening because the relevant tracing variable was
> set to 0 by the corruption. At some later time, another event of some
> sort sets it back to 4 and tracing resumes.

There are some places where ftape does this intentionally.  You should
disable the SET_TRACE_LEVEL macro to be sure you get not bitten by
this.

Also note that there are 5 different tracing variables (one for each
slot and one for messages not related to a slot).  Maybe the fdc_isr
uses a different variable than the bpck_fdc_interrupt.  You can change
the ftape_tracing macro to always use the same ft_tracings entry to be
sure.

  Jochen

Reply via email to