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