CVP May Generate a Trap B with Large Programs Under OS/2 1.3

ID Number: Q69348

2.20 2.30 2.35 3.00 3.10 3.11 3.12 3.50

OS/2

Summary:

Debugging a large application with CodeView under OS/2 version 1.3 may

result in a Trap B system error. Trap B is a "segment not present"

exception resulting from changes made to this version of the operating

system.

More Information:

In OS/2 version 1.3, the code for DosPTrace() is swappable; it isn't

swappable in earlier versions. DosPTrace() is part of the OS/2 API

that allows a parent process to control the execution of a child

process, and to access the child process's memory directly to insert

breakpoints or change data.

Because CodeView relies heavily on DosPTrace(), problems arise if this

code is swapped from memory. The majority of problems occur when

execution reaches a breakpoint while the DosPTrace() code is not

present; control should then jump to code that is not currently in

RAM.

Because large programs (or heavily loaded systems) tend to result in

more swapping, this problem appears more readily when debugging large

applications.

To workaround this problem, turn off swapping while debugging.

Increasing or freeing up available memory may also be helpful. To

disable swapping, modify the MEMMAN switch in CONFIG.SYS as follows:

MEMMAN=NOSWAP

To increase available memory, either install more memory in the

computer or terminate all other unnecessary processes before debugging

(to remove them from memory).

This problem is the result of a design change with OS/2 1.3 and is not

a problem with CodeView. This change is being reconsidered for future

versions of OS/2. New information will be posted here as it becomes

available.

Additional reference words: gp fault protection violation 1.30