home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / except2x.zip / except.inf (.txt) < prev    next >
OS/2 Help File  |  1994-11-29  |  11KB  |  256 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Fatal Exceptions definition and values. ΓòÉΓòÉΓòÉ
  3.  
  4. The except package has been designed to gather the necessary information when a 
  5. fatal exception occurs. A fatal exception is an operating system defined class 
  6. of error condition which causes the end of the thread and the process when it 
  7. occurs. 
  8.  
  9. The exceptions have a 32 bits value and are grouped by severity. The 2 first 
  10. bits defined the severity. These 2 bits are set for a fatal exception. The most 
  11. current exception when programming is the XCPT_ACCESS_VIOLATION (0xC0000005). 
  12.  
  13.  Portable, Fatal, Hardware-Generated Exceptions: 
  14.  
  15.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16.  ΓöéException Name                  ΓöéValue         ΓöéRelated Trap  Γöé
  17.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18.  Γöé  XCPT_ACCESS_VIOLATION         Γöé0xC0000005    Γöé0x09, 0x0B,   Γöé
  19.  Γöé                                Γöé              Γöé0x0C, 0x0D,   Γöé
  20.  Γöé  ExceptionInfo[ 0 ] - Flags    Γöé              Γöé0x0E          Γöé
  21.  Γöé      XCPT_UNKNOWN_ACCESS  0x0  Γöé              Γöé              Γöé
  22.  Γöé      XCPT_READ_ACCESS     0x1  Γöé              Γöé              Γöé
  23.  Γöé      XCPT_WRITE_ACCESS    0x2  Γöé              Γöé              Γöé
  24.  Γöé      XCPT_EXECUTE_ACCESS  0x4  Γöé              Γöé              Γöé
  25.  Γöé      XCPT_SPACE_ACCESS    0x8  Γöé              Γöé              Γöé
  26.  Γöé      XCPT_LIMIT_ACCESS    0x10 Γöé              Γöé              Γöé
  27.  Γöé  ExceptionInfo[ 1 ] - FaultAddrΓöé              Γöé              Γöé
  28.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  29.  ΓöéXCPT_INTEGER_DIVIDE_BY_ZERO     Γöé0xC000009B    Γöé0             Γöé
  30.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  31.  ΓöéXCPT_FLOAT_DIVIDE_BY_ZERO       Γöé0xC0000095    Γöé0x10          Γöé
  32.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  33.  ΓöéXCPT_FLOAT_INVALID_OPERATION    Γöé0xC0000097    Γöé0x10          Γöé
  34.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  35.  ΓöéXCPT_ILLEGAL_INSTRUCTION        Γöé0xC000001C    Γöé0x06          Γöé
  36.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  37.  ΓöéXCPT_PRIVILEGED_INSTRUCTION     Γöé0xC000009D    Γöé0x0D          Γöé
  38.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  39.  ΓöéXCPT_INTEGER_OVERFLOW           Γöé0xC000009C    Γöé0x04          Γöé
  40.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  41.  ΓöéXCPT_FLOAT_OVERFLOW             Γöé0xC0000098    Γöé0x10          Γöé
  42.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  43.  ΓöéXCPT_FLOAT_UNDERFLOW            Γöé0xC000009A    Γöé0x10          Γöé
  44.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  45.  ΓöéXCPT_FLOAT_DENORMAL_OPERAND     Γöé0xC0000094    Γöé0x10          Γöé
  46.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  47.  ΓöéXCPT_FLOAT_INEXACT_RESULT       Γöé0xC0000096    Γöé0x10          Γöé
  48.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  49.  ΓöéXCPT_FLOAT_STACK_CHECK          Γöé0xC0000099    Γöé0x10          Γöé
  50.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  51.  ΓöéXCPT_DATATYPE_MISALIGNMENT      Γöé0xC000009E    Γöé0x11          Γöé
  52.  Γöé                                Γöé              Γöé              Γöé
  53.  Γöé  ExceptionInfo[ 0 ] - R/W flag Γöé              Γöé              Γöé
  54.  Γöé  ExceptionInfo[ 1 ] - AlignmentΓöé              Γöé              Γöé
  55.  Γöé  ExceptionInfo[ 2 ] - FaultAddrΓöé              Γöé              Γöé
  56.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  57.  ΓöéXCPT_BREAKPOINT                 Γöé0xC000009F    Γöé0x03          Γöé
  58.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  59.  ΓöéXCPT_SINGLE_STEP                Γöé0xC00000A0    Γöé0x01          Γöé
  60.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  61.  
  62. Portable, Fatal, Software-Generated Exceptions: 
  63.  
  64.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  65.  ΓöéException Name                  ΓöéValue         ΓöéRelated Trap  Γöé
  66.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  67.  ΓöéXCPT_IN_PAGE_ERROR              Γöé0xC0000006    Γöé0x0E          Γöé
  68.  Γöé                                Γöé              Γöé              Γöé
  69.  Γöé  ExceptionInfo[ 0 ] - FaultAddrΓöé              Γöé              Γöé
  70.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  71.  ΓöéXCPT_PROCESS_TERMINATE          Γöé0xC0010001    Γöé              Γöé
  72.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  73.  ΓöéXCPT_ASYNC_PROCESS_TERMINATE    Γöé0xC0010002    Γöé              Γöé
  74.  Γöé                                Γöé              Γöé              Γöé
  75.  Γöé  ExceptionInfo[ 0 ] - TID of   Γöé              Γöé              Γöé
  76.  Γöé           terminating thread   Γöé              Γöé              Γöé
  77.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  78.  ΓöéXCPT_NONCONTINUABLE_EXCEPTION   Γöé0xC0000024    Γöé              Γöé
  79.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  80.  ΓöéXCPT_INVALID_DISPOSITION        Γöé0xC0000025    Γöé              Γöé
  81.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  82.  
  83.  Non-Portable, Fatal Exceptions: 
  84.  
  85.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  86.  ΓöéException Name                  ΓöéValue         ΓöéRelated Trap  Γöé
  87.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  88.  ΓöéXCPT_INVALID_LOCK_SEQUENCE      Γöé0xC000001D    Γöé              Γöé
  89.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  90.  ΓöéXCPT_ARRAY_BOUNDS_EXCEEDED      Γöé0xC0000093    Γöé0x05          Γöé
  91.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  92.  
  93. Fatal Signal Exceptions: 
  94.  
  95.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  96.  ΓöéException Name                  ΓöéValue         Γöé
  97.  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  98.  ΓöéXCPT_SIGNAL                     Γöé0xC0010003    Γöé
  99.  Γöé                                Γöé              Γöé
  100.  Γöé  ExceptionInfo[ 0 ] - Signal   Γöé              Γöé
  101.  Γöé                       Number   Γöé              Γöé
  102.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  103.  
  104. When investigating an exception caused by your code you first need to know 
  105. where it occurred. 
  106.  
  107. Exception handlers 
  108.  
  109.  
  110. ΓòÉΓòÉΓòÉ 2. Exception Handlers and investigating fatal exception ΓòÉΓòÉΓòÉ
  111.  
  112. Exception handlers are OS/2 2.x programming facilities which allow the 
  113. programmer to act when the exception occur. 
  114.  
  115. There must be at least one exception handler defined per thread of the process 
  116. to handle the exceptions which may occur in that thread. 
  117.  
  118. The exception handler is a callback function which gets called with several 
  119. parameter among which a pointer to CONTEXTRECORD which contains all the thread 
  120. and register information at the time the failure occurred. 
  121.  
  122. Some of the registers are essential to investigate the TRAPs. 
  123.  
  124. CS                  This is the code segment register. Its value is the current 
  125.                     code segment being executed. If the application is a 16:16 
  126.                     bit segmented code is must be matched to one of the .EXE 
  127.                     objects  orone of the DLLs code object in memory at that 
  128.                     time. For 32 bit linear code (C-Set/2 C-Set++) CS contains 
  129.                     the value of the OS/2 segment mapping all executable user 
  130.                     memory. 
  131.  
  132. IP or EIP           IP or EIP (resp. 16:16 or 32 code) is the segment 
  133.                     containing the instruction pointer which is the offset from 
  134.                     the beginning of the segment of the failing instruction. If 
  135.                     EIP is greater than 0x0000FFFF then the code being executed 
  136.                     is 32 bits linear else it is 16:16 segmented. 
  137.  
  138. ESP or SP           Those registers give the current stack pointer. 
  139.  
  140. EBP or BP           Those registers give the address of the base pointer. The 
  141.                     base pointer should contain the stack address or offset 
  142.                     where the calling function address has been saved. 
  143.  
  144.                     Usually the stack frame respects the following convention 
  145.                     which allows to find from where the failing code was called 
  146.                     once one has the stack dump. 
  147.  
  148.                                          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  149.                                          Γöé                    Stack content                             Γöé
  150.                                          Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  151.                                          Γöé     16:16 bit code            Γöé     32 bit code              Γöé
  152.                                          Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  153.                                          Γöé       <ΓöÇΓöÇΓöÇΓöÇ 2 Bytes ΓöÇΓöÇΓöÇΓöÇΓöÇ>    Γöé        <ΓöÇΓöÇΓöÇΓöÇ 4 Bytes ΓöÇΓöÇΓöÇΓöÇΓöÇ>  Γöé
  154.                                          Γöé       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    Γöé        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé
  155.                                          Γöé    .  .                       Γöé     .  .                     Γöé
  156.                                          Γöé    Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé     Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  157.                                          Γöé    ΓööΓöÇ<  previous caller  Γöé    Γöé     ΓööΓöÇ<  previous caller  Γöé  Γöé
  158.                                          Γöé    Γöî >  BP etc ...       Γöé    Γöé     Γöî >  EBP etc ...      Γöé  Γöé
  159.                                          Γöé    Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé     Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  160.                                          Γöé    Γöé  . caller's local   .    Γöé     Γöé  . caller's local   .  Γöé
  161.                                          Γöé    Γöé  . parms            .    Γöé     Γöé  . parms            .  Γöé
  162.                                          Γöé    Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé     Γöé  .                  .  Γöé
  163.                                          Γöé    Γöé  Γöé Caller return IP Γöé    Γöé     Γöé  .                  .  Γöé
  164.                                          Γöé    Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé     Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  165.                                          Γöé    Γöé  Γöé Caller return CS Γöé    Γöé     Γöé  Γöé Caller return EIPΓöé  Γöé
  166.                                          Γöé    Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé     Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  167.                                          Γöé    ΓööΓöÇΓöÇ< Caller's BP      Γöé    Γöé     ΓööΓöÇΓöÇ< Caller's EBP     Γöé  Γöé
  168.                                          Γöé BP -> Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ    Γöé EBP -> Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé
  169.                                          Γöé       .  function local  .    Γöé        .  function local  .  Γöé
  170.                                          Γöé       .  parameters      .    Γöé        .  parameters      .  Γöé
  171.                                          Γöé                               Γöé                              Γöé
  172.                                          Γöé SP -> ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ    Γöé ESP -> ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé
  173.                                          Γöé       <ΓöÇΓöÇΓöÇΓöÇ 2 Bytes ΓöÇΓöÇΓöÇΓöÇΓöÇ>    Γöé        <ΓöÇΓöÇΓöÇΓöÇ 4 Bytes ΓöÇΓöÇΓöÇΓöÇΓöÇ>  Γöé
  174.                                          ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  175.  
  176. CSLIM               For 16:16 bit code this gives the size of the failing code 
  177.                     object. 
  178.  
  179.  
  180. ΓòÉΓòÉΓòÉ 3. EXCEPT and EXCEPTQ Trap analysis exception handlers. ΓòÉΓòÉΓòÉ
  181.  
  182. EXCEPT and EXCEPTQ are now identical. They are exception handlers which when a 
  183. trap occurs save the registers in a file named xxxx.TRP (xxxx=Pid,Tid) together 
  184. with the Loaded modules code and data objects addresses, and also the failing 
  185. thread stack dump and the call stack analysis.  If the debugging information is 
  186. present in the executable then the source line numbers will be too in the 
  187. output .TRP file.  Trapper is an IBM C/2 program which shows how to implement 
  188. the call to 32 bits exception handler from a 16:16 bits program Sample in a 
  189. C-Set/2 program which shows the usage from a 32 bit program. Enter Trapper 
  190. (16:16) or Sample (0:32) to generate a sample trap and the xxxxxx.TRP file. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 4. TRAPTRAP Non intrusive exception catcher ΓòÉΓòÉΓòÉ
  194.  
  195.  TRAPTRAP is a sample Trap catcher code using DosDebug. Usage is   TRAPTRAP 
  196. [optional watch points] trapping_program arguments  optional watch points 
  197. syntax is :  /address1 [ /address2 [/address3 [ /address4 ]]]  where address1 
  198. (2,3,4) are the linear addresses to watch up to 4 addresses can be specified 
  199. sample provided use > TRAPTRAP TEST where test.exe will trap  sample watch 
  200. point provided use > TRAPTRAP /20000 WATCH where watch.exe will write at linear 
  201. address 20000 run 1st watch alone to check address.  it generates a PROCESS.TRP 
  202. file similar to EXCEPTQ's 
  203.  
  204.  
  205. ΓòÉΓòÉΓòÉ 5. Using Exception handler with C-Set/2 and C-Set++ ΓòÉΓòÉΓòÉ
  206.  
  207.  Usage with C-Set/2 and C-Set++ is very simple. Just add the following 2 lines 
  208. in your code containing the main(). 
  209.  
  210. #pragma handler(main)
  211. #pragma map(_Exception,"MYHANDLER")
  212.  
  213. First line tells compiler to install an exception handler for "main". You 
  214. should also add a handler for all thread functions using #pragma handler(xxxx) 
  215. where xxxx is the name of the thread function parameter to _beginthread(). 
  216.  
  217. Second line tells compiler to use the handler "MYHANDLER" (contained in 
  218. EXCEPTQ.DLL or EXCEPT.DLL) instead of the default C-Set handler named 
  219. _Exception. 
  220.  
  221. See the "sample.c" sample for source. The code object should be linked with 
  222. EXCEPTQ.LIB (or EXCEPT.LIB). 
  223.  
  224.  
  225. ΓòÉΓòÉΓòÉ 6. Getting Symbolic information in Trap files ΓòÉΓòÉΓòÉ
  226.  
  227. Use the MAPSYM tool from the toolkit against your executables (.EXE,.DLL)  .MAP 
  228. files and put the resulting .SYM files in the same directory where the 
  229. executable resides. The EXCEPTQ (and EXCEPT) exception handlers will 
  230. automatically locate them and use them to find the closest symbols from the 
  231. failing address and calling functions when walking the stack. Thus you will 
  232. have the symbolic name of the functions (if available). 
  233.  
  234. I'll make line numbering will be available when MAPSYM will be able to process 
  235. LINK386 generated maps with /LI line information. 
  236.  
  237.  
  238. ΓòÉΓòÉΓòÉ 7. using COPYDBG to ship debug information separately ΓòÉΓòÉΓòÉ
  239.  
  240. EXCEPT and EXCEPTQ use the debug inforamtion if present in the executable to 
  241. locate the failing line of code and source file. However if you do not want to 
  242. ship the modules with the debug (codeview) information and ship it only if 
  243. problems occur, then link with /CO first, use the COPYDBG command to copy the 
  244. debug information from the executables (EXE or DLL), then link without /CO to 
  245. ship. COPYDBG creates files with .DBG extension, those files containing only 
  246. the debugging information. 
  247.  
  248.  
  249. ΓòÉΓòÉΓòÉ 8. Using EXCEPTQ's ForceExit ΓòÉΓòÉΓòÉ
  250.  
  251. EXCEPTQ has a ForceExit function which allows processes to exit even if threads 
  252. are in kernel wait. It intentionally generates an invisible trap, having 
  253. resumed all frozen threads before. 
  254.  
  255. Thread calling forcexit should not by in a Critical Section. See the EXITTEST.c 
  256. for sample use.