[comp.unix.i386] Xenix 2.3 386 Device Driver bug

mike@isi.UUCP (Mike Maloney) (06/12/89)

Dear 386 and SCO device-driver gurus,

My NEC PowerMate 386/16 running Xenix 3.2 crashed with the final words:

	Trap D in system - error code 1

	eax: 6		ebx: 0		ecx: 0		esi: 0
	edi: 0		ebp: 708	uds: 18		es: 60000
	edx: A1		sl: 10206

It had been running constantly (without incident) for two and a half 
weeks before this happened.  The system has a smart serial card (Franklin
Telecom ICP188X) for which I wrote a device driver.  The driver polls the
card for data with each read request.  No interrupts are used.  The board
has a 64K window of memory visible to the PC.  I have it mapped at E0000.

MESSAGES(M) states that 'Trap in System' indicates that the CPU has
generated an illegal instruction trap while executing kernel or device 
driver code.  The intel 80386 Programmer's Reference Manual, section 9.8
says that this can happen because of:
		- Debug Exceptions
		- Breakpoint
		- Overflow
		- Two byte software interrupt

Now my questions:
1. Is the "error code 1" in the panic message above the same error code
described in section 9.7 of the intel 80386 manual?  If so, then "error code 1"
indicates the EXT bit being set?  If so what does this mean?

2. After a trap the CS and EIP registers point to the instruction dynamically
after the trap.  Why aren't these registers included in the dump?

3. What, if anything, can be inferred from the register values above?

4. What are likely sources of traps in a bad device driver?

-- 
Mike Maloney             Integral Systems, Inc 
(301) 731-4233		 5000 Philadelpha Way, Suite A,
			 Lanham, MD  20706