Trap Errors Under OS/2

From OS2World.Com Wiki
Jump to navigation Jump to search

DESCRIPTION

This document contains a list and explanations of OS/2 traps.

RESOLUTION

There are a maximum of 255 possible traps. Trap errors consist of interrupts and exceptions. An interrupt is an event external to the processor that can occur at random times during system operation. An exception is a special condition which is detected by the processor during the execution of instructions. Exceptions only occur when the processor is executing instructions.

Traps 0 through 16, with the exclusion of Trap 2, are special exceptions that are detected by the processor. Trap 2 is a non-maskable interrupt (NMI) error indicating a catastrophic system failure. Traps 17 through 31 are exceptions reserved by Intel. Traps 32 through 255 are maskable interrupts that are user defined. A summary of the traps is shown below.

Trap Number
Decimal   (Hex)   Description
------------------------------------------------------------
 0        0000    Divide By Zero Error
 1        0001    Debug Exception
 2        0002    NMI Interrupt
 3        0003    Debug Breakpoint
 4        0004    Overflow Detected
 5        0005    Bound Range Exceeded
 6        0006    Invalid Opcode Instruction
 7        0007    Coprocessor Not Available
 8        0008    Double Fault
 9        0009    Coprocessor Segment Overrun
10        000A    Invalid Task State Segment
11        000B    Segment Not Present
12        000C    Stack Fault
13        000D    General Protection
14        000E    Page Fault
15        000F    Intel Reserved - Do Not Use
16        0010    Coprocessor Error
17-31     0011-1F Intel Reserved - Do Not Use
32-255    0020-FF Maskable Interrupts

Note: This information deals with the first 16 traps, which are of concern to the servicer. Traps 0 through 16 are exceptions; if they occur, the processor takes the appropriate action according to the instructions in the interrupt handler routine of your operating system. The exception handler can vary widely according to the software vendor.

The following list describes Traps 0 through 16 and provides direction for the most efficient problem resolution:

TRAP0000 - DIVIDE ERROR. A program attempted to divide a number by zero. Contact software support.

TRAP0001 - DEBUG EXCEPTION. Contact software support.

TRAP0002 - NMI INTERRUPT. An NMI interrupt is generated by the system when a catastrophic error occurs. This is typically the result of a hardware problem (specifically memory or cache). However, there can be four possible causes of this problem:

 110 error - system board memory parity error
 111 error - I/O channel check (adapter card error)
 112 error - watchdog timeout (may be hardware or software)
 113 error - DMA timeout (may be hardware or software)

The Service Aid Diskette (SADA) may be useful to determine whether the problem was a 110, 111, 112, or 113 error. If a 112 or 113 error cannot be resolved by hardware troubleshooting, software support should be contacted. (Some operating systems do not support this Service Aid diskette.)

Note: Recent PS/2 Systems have serial and parallel ports with DMA arbitration. If DMA arbitration errors are encountered during I/O operations to these ports, changing the arbitration to another level, or to "disable," may correct the problem.

For further problem determination of TRAP0002 errors on ISA or EISA bus systems, beginning with OS/2 Warp v3 FixPak 14, and OS/2 2.11 FixPak 103 (this fix is already included in OS/2 Warp v4) examine the ERRCD field of the TRAP screen. This field contains the values from hardware port 0x61. The following codes indicate the actions needed:

 0000 - Software caused NMI
 0001 - RAM error, check memory (parity error)
 0002 - Adapter caused error (I/O channel check)
 0003 - Check bus mastering adapters, update adapter drivers.
        Also disable bus mastering on failing adapters as
        a problem determination tool to figure out which
        adapter is causing the failure. Contact the adapter
        vendor for further assistance. (DMA timeout)
 0004 - A device driver or DOS application disabled interrupts
        too long. Contact appropriate software vendor for
        updated software (Watchdog timeout).
 0005 - Contact application or device driver hardware vendor
        (software generated NMI).
 0006 - see error code 0003
 0007 - see error code 0004
 0008 - see error code 0002
 0009 - see error code 0001

The following built in OS/2 error messages can be queried to see additional help for the error codes:

For this ERRCD: Type HELP <number> to get more help

     0000                1944
     0001                1945
     0002                1946
     0003                1947
     0004                1948
     0005                3140
     0006                3141
     0007                3142
     0008                3143
     0009                3144

For example, type HELP 1945 at an OS/2 command prompt to provide additional useful information about the failure.

TRAP0003 - BREAKPOINT. This is a special instruction (INT 3) used in "debugging" software, which was left in the code either accidentally or by design. Contact software support.

TRAP0004 - OVERFLOW. An overflow occurred while doing an arithmetic operation. Contact software support.

TRAP0005 - BOUND RANGE EXCEEDED. A BOUND instruction exceeded the specified limits. Contact software support.

TRAP0006 - INVALID OPCODE. The processor tried to execute an unreserved invalid opcode. Contact software support.

TRAP0007 - COPROCESSOR NOT AVAILABLE. If coprocessor diagnostics run error-free, contact software support.

TRAP0008 - DOUBLE FAULT. The processor detected an exception while processing an exception. It could be caused by either hardware or software. If TRAP0002 is also being experienced, contact hardware support.

TRAP0009 - COPROCESSOR OVERRUN. The middle portion of a coprocessor operand is protected or not-present. Contact software support.

TRAP000A - INVALID TASK STATE SEGMENT. A task switch to an invalid task switch segment was attempted. Contact software support.

TRAP000B - SEGMENT NOT PRESENT. The segment being referenced is not present. Contact software support.

TRAP000C - STACK FAULT. Contact software support.

TRAP000D - GENERAL PROTECTION EXCEPTION. All protection violations which do not cause another exception, cause a TRAP000D. Contact software support.

TRAP000E - PAGE FAULT. The page being referenced is not present in memory or the procedure referencing the page does not have enough privilege to access the page. Contact software support.

TRAP000F - RESERVED BY INTEL.

TRAP0010 - COPROCESSOR ERROR. The processor detected an error from the coprocessor. This could be caused by hardware or software.