[Q]: Trap number information and troubleshooting diagnostics

[A]: Ivan Grigoriev (2:5020/333)

_Trap_ 0000 (00) - Divide by Zero Error

A trap 0000 occurs when a program attempts to divide a number by zero or the

result of the operation is too large for the overflow register to handle it. [SYS1930]

_Trap_ 0001 (01) - Debug Exception

A trap 0001 is caused when a program enables the single step interrupt

when not being run by a debugger. [SYS1931]

_Trap_ 0002 (02) - Non-Maskable Interrupt (NMI).

A trap 0002 is caused when an Non-Maskable Interrupt (NMI) is generated by

the system for a catastrophic error. Four possible causes of this are:

110 error - Planar parity error: memory or system board
111 error - I/O parity error, memory adapter or memory
112 error - Watchdog time-out: any adapter, system board
113 error - DMA arbitration time-out: any adapter, system board

_Trap_ 0003 (03) - Debug Breakpoint.

A trap 0003 is caused when the program called an INT3 without being run by

debug. This happened because debugging code was left in the program either accidentally or by design. [SYS1933]

_Trap_ 0004 (04) - Overflow Detected.

A trap 0004 is caused when a program started an INTO instruction without

registering an overflow exception handler. [SYS1934]

_Trap_ 0005 (05) - Bound Range Exceeded.

A trap 0005 is caused when a program started a BOUND instruction without

registering a bound exception handler. [SYS1935]

_Trap_ 0006 (06) - Invalid Opcode Instruction.

A trap 0006 is caused when a program started an invalid instruction

without registering an invalid opcode exception handler. [SYS1936]

_Trap_ 0007 (07) - Coprocessor not Available.

A trap 0007 is caused when a program called for a numeric coprocessor

instruction without a coprocessor in the system and without registering a processor extension not available exception handler. [SYS1937]

_Trap_ 0008 (08) - Double Fault

A trap 0008 is caused when the processor detects an exception while

processing another exception. [SYS1938]

_Trap_ 0009 (09) - Coprocessor Segment Overrun

A trap 0009 is caused when a program runs a numeric coprocessor

instruction that tries to read or write past the end of the storage segment. [SYS1939]

_Trap_ 000A (10) - Invalid Task State Segment

A trap 000A is caused when a program attempts a task switch to an invalid

task switch segment. [SYS1940]

_Trap_ 000B (11) - Segment not Available

A trap 000B is caused when a program attempts to reference a memory

segment that isn't present. [SYS1941]

_Trap_ 000C (12) - Stack Fault

A trap 000C is caused when a program attempts to push more data onto the

stack than it can hold, call too many subroutines, take more data off the stack than was pushed onto it or return more subroutines than were called. [SYS1942]

_Trap_ 000D (13) - General Protection Fault

A trap 000D is caused (but not limited to) when a program references

storage outside the limit of the memory segment, references a storage segment that is restricted to privileged code, references storage with a selector value of zero, writing read-only memory or code segment, reading from an execute-only code segment or loading an invalid value into a selector register. [SYS1943]

NOTE: All protection violations which do not cause another exception cause a TRAP 000D.

_Trap_ 000E (14) - Page Fault

A trap 000E is caused when a page being referenced is not present in

memory, the procedure referencing the page doesn't have enough privilege to access the page or the address range was allocated but no storage is committed.

_Trap_ 000F (15) - Reserved by Intel

A trap 000F is reserved by Intel, It's not for our use.

_Trap_ 0010 (16) - Coprocessor Error

A trap 0010 is caused when the processor detects an error from the

coprocessor, either by hardware or software.

For Trap 0000 errors, try the following:

o If using a CSD level prior to XR06055, upgrade the operating system. With

earlier CSD levles, Trap 0002 errors

were sometimes incorrectly reported as Trap 0000 errors.

o Copy the default CONFIG.SYS from \OS2\INSTALL to the root directory. Trap

0000 errors can be caused by an

exception in a device driver. If the Trap 0000 does not occur with the

default CONFIG.SYS, check the original

CONFIG.SYS for the offending device driver.

For trap 0002 errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 0002

Errors.

o Check hardware, especially memory. Trap 0002 errors are caused almost

exclusively by hardware problems. The

most common type of Trap 0002 is caused by a failing memory module. (This

is the equivalent of a memory parity

error under DOS.)

o If there is an enhanced 80386 memory expansion adapter installed, ensure the

resistors are installed diagonally on

the adapter. (See Retain Tip #H037481 for additional details.)

o If error is received after installing new memory, ensure the SIMMs are

supported on the system. (Both speed and

manufacturer)

o Ensure that faster memory is installed before slower memory. Run advanced

diagnostics to ensure memory has not

failed. If bad SIMMs are detected, replace. If none are, suspect the

system board and have it inspected.

o On 8570-A61, -A21, -B61, -B21 or 8580-A21, -A31, -A16, refer to ECA 051 and

ECA 059 respectively.

o If the system has a non-IBM EGA adapter card, disable the adapter's

auto-switch function.

o If system is a MCA machine, check to see if there are any applicable ECA's.

For trap 0003 errors, try the following:

o Check hardware. (The failing hardware is usually not memory modules.)

o If using OS/2 2.1, use IBMINT13.I13 instead of IBM1S506.ADD. (Change BASEDEV

statement in CONFIG.SYS to

do this.)

For trap 0006 errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 0006

Errors.

o Check hardware. (The failing hardware is usually not memory modules.)

o Disable cache.

o Most Trap 0006 errors during installation can be corrected by disabling

cache, ROM shadowing, turbo, etc.

o Ensure the installed memory is the correct speed for the system board.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

For trap 0007 errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 0007

Errors.

o Obtain a copy of the program that doesn't require a coprocessor or install a

coprocessor if possible.

o Ensure the installed memory is the correct speed for the system board.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

For trap 0008 errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 0008

Errors.

o Ensure the installed memory is the correct speed for the system board.

o If during installation, REM out BASEDEV=IBM1S506.ADD in the CONFIG.SYS on

the installation diskette.

o Definitely check RETAIN for similar errors. A large number of Trap 0008

errors are caused by bugs in OS/2 or

other components, such as NTS/2, Netware Requester for OS/2, CM/2, etc.

o Check hardware. Trap 0008 errors can sometimes be caused by hardware

problems.

o Check for IRQ conflicts.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

For trap 000C errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 000C

Errors.

o Check memory, run advanced diagnostics on adapter cards, and replace as

needed. Trap 000C errors can be

caused by the same types of hardware problems that produce Trap 0002 errors.

o Ensure the installed memory is the correct speed for the system board.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

For trap 000D errors, try the following:

o See Retain Tip #H083121, Section C for several known causes of Trap 000D

Errors.

o Definitely check RETAIN for similar errors. A number of Trap 000D errors

are caused by software bugs.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

o Check hardware. Trap 000D errors are occassionally caused by hardware

problems.

o Make sure all adapters are supported by OS/2.

o If using the enhanced memory adapter on a model 80-111 or 80-311 and it's in

slot #1, move to slot #4. If already

there, verify that the resistors are positioned diagonally across the

modules. If these resistors are not present,

replace the adapter with PN 34F2825.

o If this occurs during installation, test the system memory, any memory

adapters and the system board. Replace as

necessary.

o If it occurs within a Token Ring environment, ensure the Token Ring RAM

window is set at 16 KB.

o If it occurs while printing, install the newest printer driver and ensure

the most current CSD is installed.

o If system is a MCA machine, check to see if there are any applicable ECA's.

o Ensure the installed memory is the correct speed for the system board.

For trap 000E errors, try the following:

o Check RETAIN for similar errors. Some Trap 000E errors are caused by

software bugs.

o If the error occurs every time within the same application and CHKDSK

doesn't correct the problem, contact the

software developer for further assistance.

o Check hardware. Trap 000E errors are occassionally caused by hardware

problems.

[A]: Roderick Klein (rwklein@wxs.nl)

A general remark for everyboby who gets a trap!

Don't just hit the reset button and hope it won't come back, try and trace a trap! One of the most helpfull hints is this! When a trap occurs write down the CSLIM value. Is it FFFFFFFF never mind then just hit reset… Is CLSIM != FFFFFFFF then you can be lucky!

After a reboot (if possible) go onto the internet and download this tool:

ftp://hobbes.nmsu.edu/pub/os2/util/disk/exeinfo.zip (only 22kB).

This is the manual:

Exeinfo searches your partitions for executable code (device drivers, file systems, EXEs, DLLs) that matches some criteria. To locate the module that caused a trap, write down the CSLIM value that is reported. Then run

"exeinfo -f -lxxxx c:\*.*"

where xxxx is the CSLIM value and C: should be replaced by each driver from which code may have been loaded.

If, for example, you get CSLIM=0000f113 and all your code is loaded from the D drive because you have multiboot, type

exeinfo -f -lf113 d:\*.*

Another hint for fixpak 13 users and higher, got a Teles ISDN card! Rem out this line: DEVICE=D:\CAPI\VCAPI.SYS D:\CAPI That driver is not that good with the WSeB kernel….. its not a fault in the kernel the device driver has been written badly….

Also when you have an application that causes a trap. Its useless to uninstall the app and reinstall. All apps are ring 3 code (they don't run on kernel level!)

Usually its a sound driver or video driver, switch to standard VGA or change resolution. Turn off sound, this way you can in many cases locate the problem!