Sections of the Language Environment dump

The sections of the dump listed in Table 1 appear independently of the Language Environment-conforming languages used.

Table 1. Contents of the Language Environment dump - AMODE 64
Section Number and Heading Contents
[1] Page Heading The page heading section appears on the top of each page of the dump and contains:
  • CEE3DMP identifier
  • Title For dumps generated as a result of an unhandled condition, the title is "Condition processing resulted in the Unhandled condition."
  • Product abbreviation of Language Environment
  • Version number
  • Release number
  • Date
  • Time
  • Page number
[2] CEE3845I CEEDUMP Processing started. Identifies the start of the Language Environment dump processing. Similarly, message CEE3846I identifies the end of the dump processing, Message number CEE3845I can be used to locate the start of the next CEEDUMP report when scanning forward in a data set that contains several CEEDUMP reports.
[3] Enclave Identifier Names the enclave for which information in the dump is provided.
[4] - [10] Thread Information: These sections show information that is specific to a thread. When multiple threads are dumped, these sections will appear for each thread.
[4] Information for thread Shows the system identifier for the thread. Each thread has a unique identifier.
[5] Traceback For all active routines in a particular thread, the traceback section shows routine information in three parts. The first part contains:
  • DSA number: A number assigned to the information for this active routine by dump processing. The number is used to associate information from the first part of the traceback with information in the second and third parts of the traceback.
  • Entry : For C/C++ routines, this is the function name. If a function name or entry point was not specified for a particular routine, then the string '** NoName **' will appear.
  • Entry point offset
  • Statement number: Refers to the line number in the source code (program unit) in which a call was made or an exception took place. The statement number appears only if your routine was compiled with the options required to generate statement numbers. These options are described under XL C and XL C++ compiler options for AMODE 64 applications.
  • Load module: The load module name displayed can be a partitioned data set member or an UNIX executable file. The load module name is also displayed in the third part of the traceback (see below for details).
  • Program unit: The primary entry point of the external procedure. For C routines, this is the compile unit name. For Language Environment-conforming assemblers, this is the ENTNAME = value on the CELQPRLG macro.
    If your routine was compiled with the compile options to generate statement numbers then the program unit name displayed under this column will appear as follows:
    • If your compiled routine is in a partitioned data set then only the member will be output.
    • If your compiled routine is in a sequential data set then only the last qualifier will be shown.
    • If your compiled routine is in an UNIX filename then only what fits of the filename will be displayed in a line.

    Look for the complete name of the program unit in the Fully Qualified Names section of the traceback, if your routine was compiled using compile options to generate statement numbers.

  • Service level : The latest service level applied to the compile unit (for example, for IBM® products, it would be the PTF number).
  • Status: Routine status can be call or exception.
[5] Traceback (continued) The second part contains:
  • DSA number: A number assigned to the information for this active routine by dump processing. The number is used to associate information from the first part of the traceback with information in the second and third parts of the traceback.
  • Stack frame (DSA) address
  • Entry point address
  • Program unit address
  • Program unit offset: The offset of the last instruction to run in the routine. If the offset is a negative number, zero, or a very large positive number, the routine associated with the offset probably did not allocate a save area or the routine could have been called using SVC-assisted linkage. Adding the program unit address to the offset gives you the location of the current instruction in the routine. This offset is from the starting address of the routine.
  • Compile Date
  • Attributes: The attributes of the compile unit including whether character data is being treated as EBCDIC or ASCII and whether floating point data is being treated as IEEE or hexadecimal.
The third part, which is also referred to as 'Fully Qualified Names' section, contains the following:
  • DSA number
  • Entry
  • Program unit: Similar to the Program Unit column in part 1 except that the server name and the complete program unit (PU) name will be displayed. A PU name will appear here only if it was compiled using compile options to produce statement numbers.
  • Load Module: The complete pathname of a load module name residing in an UNIX filename will be displayed here if available. The load module's full pathname will be displayed if the PATH environment variable is set such that the pathname of the load module's directory appears before the current directory (.). For load modules found in data sets, the same output shown in the traceback part 1 will also be displayed here.
[6] Condition Information for Active Routines Displays the following information for all conditions currently active on the call chain:
  • Statement showing failing routine and stack frame address of routine
  • Condition information block (CIB) address
  • Current® condition, in the form of a Language Environment message for the condition raised or a Language Environment abend code, if the condition was caused by an abend
  • Location: For the failing routine, this is the program unit, entry routine, statement number, and offset.
  • Machine state, which shows:
    • Instruction length counter (ILC)
    • Interruption code
    • Program status word (PSW)
    • Contents of GPRs 0–15. Contents of floating point content register (FPC) and floating point registers FPR 0-15.
    • Storage dump near condition (2 hex-bytes of storage near the PSW)
    • Storage pointed to by General Purpose Registers

These values are the current values at the time the condition was raised.

[7] Parameters, Registers, and Variables for Active Routines For each active routine, this section shows:
  • Routine name and stack frame address
  • Saved registers: This lists the contents of GPRs 0–15 at the time the routine received control. The saved registers are those saved by the DSA-owning routine on entry. Register 7 is the return address back to the caller of the DSA-owning routine. Register 6 may be the entry point of the DSA-owning routine. (This is not true when the Branch Relative and Save instruction is used to implement the call. The non-volatile floating-point registers that are saved in the stack frame. The registers are only displayed if the program owning the stack frame saved them. Dashes are displayed in the registers when the register values are not saved.
  • Storage pointed to by the saved registers: Treating the saved contents of each register as an address, 32 bytes before and 64 bytes after the address shown.
[8] Control Blocks for Active Routines For each active routine controlled by the STACKFRAME option, this section lists contents of related control blocks. The Language Environment-conforming language determines which language-specific control blocks appear. The possible control blocks are:
  • Stack frame
  • Condition information block
  • Language-specific control blocks
[9] Storage for Active Routines Displays local storage for each active routine. The storage is dumped in hexadecimal, with EBCDIC translations on the right side of the page. There can be other information, depending on the language used. For C/C++ routines, this is the stack frame storage.
[10] Control Blocks Associated with the Thread Lists the contents of the Language Environment common anchor area (CAA), thread synchronization queue element (SQEL) and dummy stack frame. Other language-specific control blocks can appear in this section.
[11] Enclave Control Blocks Lists the contents of the Language Environment enclave data block (EDB) and enclave member list (MEML). The information presented may vary depending on which runtime options are set.
  • If the POSIX runtime option is set to ON, this section lists the contents of the mutex and condition variable control blocks, the enclave level latch table, and the thread synchronization trace block and trace table.
  • If DLLs have been loaded, this section shows information for each DLL including the DLL name, load address, use count, writeable static area (WSA) address, and the thread ID of the thread that loaded the DLL.
  • If the HEAPCHK runtime option is set to ON, this section shows the contents of the HEAPCHK options control block (HCOP) and the HEAPCHK element tables (HCEL). A HEAPCHK element table contains the location and length of all allocated storage elements for a heap in the order that they were allocated.
  • When the call-level suboption of the HEAPHCK runtime option is set, any unfreed storage, which would indicate a storage leak, would be displayed in this area. The traceback could then be used to identify the program which did not free the storage.
  • If the TRACE runtime option is set to ON, this section shows the contents of the Language Environment trace table.
Other language-specific control blocks can appear in this section.
[12] Runtime Options Report Lists the Language Environment runtime options in effect when the routine was executed.
[13] Process Control Blocks Lists the contents for the Language Environment process control block (PCB), process member list (MEML), and if the POSIX runtime option is set to ON, the process level latch table. Other language-specific control blocks can appear in this section.
[14] CEE3846I CEEDUMP Processing completed. Identifies the end of the Language Environment dump processing. Similarly, message CEE3845I identifies the start of the dump processing, Message number CEE3846I can be used to locate the end of the previous CEEDUMP report when scanning backward in a data set that contains several CEEDUMP reports.