home *** CD-ROM | disk | FTP | other *** search
- ID:13 Discussion of Exception #13
- Quarterdeck Technical Note
- by Bob Perry
-
- What is "Exception 13?"
- What can be done to prevent "Exception 13's?"
-
- Exceptions are unusual or invalid conditions associated with
- the execution of a particular instruction by the 80386 processor. The
- 80386 recognizes several different classes of exceptions, and assigns
- a different vector number to each class. The DESQview-386 memory
- manager, QEMM-386, has been designed to capture these 80386 exception
- vectors and display them directly to the user.
-
- Exception 13 is the "General Protection Fault" error. Any
- privileged instruction or any instruction that references memory can
- trigger an Exception 13.
-
- In the first case, privileged instructions, the Exception 13
- could indicate that a program has violated the protected mode of the
- 80386 by executing a privileged instruction or I/O reference. Thus,
- when the prompt, "Terminate, Reboot or Continue?" is issued, the
- "Continue" option directs the 80386 to reorder the ranking of
- priviliged instructions and the program should continue to execute.
-
- It is the second case, instructions that reference memory,
- that are far more common to DESQview 386 (and QEMM-386) users. Here
- the exception can indicate that an application has a bug. It has over-
- written its memory partition, and may in fact be running wild, writing
- code all over the place. This situation can occur with some programs
- that were written for use on the 8088 processor and may not be useable
- in the 80386's virtual 8086 mode. A few other programs may not be
- compatible with QEMM-386. All this adds up to mean that when
- "Terminate, Reboot or Continue" is displayed, the user can only
- "Terminate."
-
- For those users who are more technically oriented, this over-
- writing of the memory partition generally means that a word or a
- double word value of code has been written to the last byte of a
- segment. The problem or "bug" in the application program has to do
- with wrapping the value to the next segment of memory.
-
- What can the user do to prevent Exception 13's? The DESQview
- 386 user can try two things: First, run Change Program and try to
- allocate more memory to the application. Second, the user can try to
- increase the Protection Level to 3, which will not alleviate the
- source of the Exception 13, but may allow the application to pass more
- descriptive error messages through to the user.
-
- When Exception 13's are obtained outside of DESQview they are
- either caused by applications written for the 80386 protected mode or
- they are not. If the faulting application is written for protected
- mode of the 80386, it is likely that this program has no VCPI (Virtual
- Control Program Interface). Since QEMM-386 is a virtual 8086 program,
- such faulting applications cannot be run under QEMM without VCPI. The
- user has no choice but to reboot without QEMM, and contact the
- developer of the faulting application for VCPI support.
-
- If the faulting application was not written for the protected
- mode of the '386, the QEMM user is probably using the RAM parameter
- (which is necessary to LOADHI drivers and TSR's). In this case the
- faulting program may be rinning in an area of high RAM in which it
- never thought it would be run. To correct this problem, the user may
- opt to RAM only specific areas of memory, as described on page 6 of
- the QEMM manual, rather than issue a RAM for all mappable areas.
- Another possible solution to such memory conflicts might be to use the
- EXCLUDE parameter (on page 5 of the QEMM manual) for all known ROM's
- being mapped into RAM.
-
- Copyright (C) 1990 by Quarterdeck Office Systems
- * * * E N D O F F I L E * * *
-