Sections of the Language Environment dump

The sections of the dump listed here appear independently of the Language Environment-conforming languages used. Each conforming language adds language-specific storage and file information to the dump. For a detailed explanation of language-specific dump output:
Table 1. Contents of the Language Environment dump
Section Number and Heading Contents
[1] Page Heading The page heading section appears on the top of each page of the dump and contains the following information:
  • 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

The contents of the second line of the page heading vary depending on the environment in which the CEEDUMP is issued.

For CEEDUMPs produced under a batch environment, the following items are displayed:
  • ASID: Describes the address space ID.
  • Job ID: Describes the JES Job ID.
  • Job name: Describes the job name.
  • Step name: Describes the job's step name in which the CEEDUMP was produced.
  • UserID: Describes the TSO userid who issued the job.
For jobs running with POSIX(ON), the following additional items are displayed:
  • PID: Displays the associated process ID.
  • Parent PID: Displays the associated parent PID.
For CEEDUMPs produced under the z/OS® UNIX shell, the following items are displayed:
  • ASID: Describes the address space ID.
  • PID: Displays the associated process ID.
  • Parent PID: Displays the associated parent PID.
  • User name: Contains the user ID associated to the CEEDUMP.
For CEEDUMPs produced under CICS®, the following items are displayed:
  • Transaction ID and task 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] Caller Program Unit and Offset Identifies the routine name and offset in the calling routine of the call to the dump service.
[4] Registers on Entry to CEE3DMP Shows data at the time of the call to the dump service.
  • Program mask: The program mask contains the bits for the fixed-point overflow mask, decimal overflow mask, exponent underflow mask, and significance mask.
  • General purpose registers (GPRs) 0–15: On entry to CEE3DMP, the GPRs contain:
    GPR 0
    Working register
    GPR 1
    Pointer to the argument list
    GPR 2–11
    Working registers
    GPR 12
    Address of CAA
    GPR 13
    Pointer to caller's stack frame
    GPR 14
    Address of next instruction to run if the ALL31 runtime option is set to ON
    GPR 15
    Entry point of CEE3DMP
  • Floating point registers (FPRs) 0 through 15
  • Start of changeVector registers (VRs) 0 through 31.End of change
  • Storage pointed to by General Purpose Registers. Treating the contents of each register as an address, 32 bytes before and 64 bytes after the address are shown.
[5] - [17] Enclave Information These sections show information that is specific to an enclave. When multiple enclaves are dumped, these sections will appear for each enclave.

Start of changeIf multiple CEEPIPI main-DP environments exist, the dump service generates data and storage information for the most current Main-DP environment, followed by the previous (parent) Main-DP environments in a last-in-first-out (LIFO) order. Sections [5] - [17] will appear for each enclave in the most current Main-DP environment, and sections [5]-[7] will appear for enclaves in the previous (parent) Main-DP environments. When multiple nested Main-DP environments are present in the dump output, a line displaying the CEEPIPI token value for each dumped Main-DP environment will appear before the output for that environment.End of change

[5] Enclave Identifier Names the enclave for which information in the dump is provided. If multiple enclaves exist, the dump service generates data and storage information for the most current enclave, followed by previous enclaves in a last-in-first-out (LIFO) order. For more information about dumps for multiple enclaves, see Multiple enclave dumps.
[6] - [12] Thread Information These sections show information that is specific to a thread. When multiple threads are dumped, these sections will appear for each thread.
[6] Information for thread Shows the system identifier for the thread. Each thread has a unique identifier.
[7] Traceback In a multithread case, the traceback reflects only the current thread. For all active routines, 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 COBOL, Fortran, PL/I, and Enterprise PL/I for z/OS routines, this is the entry point name. For C/C++ routines, this is the function name. If a function name or entry point was not specified for a particular routine, 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 (see Status column). The statement number appears only if your routine was compiled with the options required to generate statement numbers.
  • 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.
  • Program unit: For COBOL programs, program unit is the PROGRAM-ID name. For C, Fortran, and PL/I routines, program unit is the compile unit name. For Language Environment-conforming assemblers, program unit is either the EPNAME = value on the CEEPPA macro, or a fully qualified path name.
    If the program unit name is available to Language Environment (for example, for C/C++, the routine was compiled with TEST(SYM)), the program unit name will appear under this column, according to the following rules:
    • If your compiled routine is in a partitioned data set, only the member will be output.
    • If your compiled routine is in a sequential data set, only the last qualifier will be shown.
    • If your compiled routine is in an UNIX filename, only what fits of the filename will be displayed in a line.
  • 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'.
[7] 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 could have been called using SVC-assisted linkage. Adding the program unit address to the offset gives the location of the current instruction in the routine. This offset is from the starting address of the routine.
  • Compile Date: Contains the year, month and day in which the routine was compiled.
  • Attributes: The available compilation attributes of the compile unit including:
    • A label identifying the LE-supported language such as COBOL, ENT PL/I, C/C++, and so on.
    • Compilation attributes such as EBCDIC, ASCII, IEEE or hexadecimal floating point (HFP). The compilation attributes will only be displayed if there is enough information available.
    • If the CEEDUMP was created under a POSIX environment, POSIX will be displayed.
The third part of the traceback, which is also referred to as the "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 is available to Language Environment.
  • 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.
[8] 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 64-bit GPRs 0–15. Note that when the high halves of the registers are not known, they are shown as ********.
    • Storage dump near condition (2 hex-bytes of storage near the PSW)
    • Storage pointed to by General Purpose Registers
    • Contents of access registers, if available

    This information shows the current values at the time the condition was raised. The high halves of the general registers are dumped, in case they are useful for debugging some applications.

    If the PSW associated with the condition indicates AMODE 24, the register content will be treated as 24-bit address.

[9] Parameters, Registers, and Variables for Active Routines For each active routine, this section shows:
  • Routine name and stack frame address
  • Arguments: For C/C++ and Fortran, arguments are shown here rather than with the local variables. For COBOL, arguments are shown as part of local variables. PL/I arguments are not displayed in the Language Environment dump.
  • Saved registers: This lists the contents of GPRs 0–15 at the time the routine transferred control.
  • 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.
  • Local variables: This section displays the local variables and arguments for the routine. This section also shows the variable type. Variables are displayed only if the symbol tables are available. To generate a symbol table and display variables, use the following compile options:
    • For C, use TEST(SYM).
    • For C++, use TEST.
    • For VS COBOL II, use FDUMP.
    • For COBOL/370, use TEST(SYM).
    • For COBOL for OS/390 & VM, use TEST(SYM).
    • Start of changeFor Enterprise COBOL for z/OS V4R2 and prior releases, use TEST(SYM).End of change
    • Start of changeFor Enterprise COBOL for z/OS V5R1 and later releases, use TEST(DWARF).End of change
    • For Fortran, use SDUMP.
    • For PL/I, arguments and variables are not displayed.
[10] 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
[11] 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. For COBOL programs, this is language-specific information, WORKING-STORAGE, and LOCAL-STORAGE.
[12] Control Blocks Associated with the Thread Lists the contents of the Language Environment common anchor area (CAA), thread synchronization queue element (SQEL), DLL failure data, and dummy stack frame. Other language-specific control blocks can appear in this section. DLL failure data is described in Using the DLL failure control block.
[13] Enclave variables: Displays language specific global variables. This section also shows the variable type. Variables are displayed only if the symbol tables are available.
[14] 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.
[15] Enclave Storage Shows the Language Environment heap storage. For C/C++ and PL/I routines, heap storage is the dynamically allocated storage. For COBOL programs, it is the storage used for WORKING-STORAGE data items. This section also shows the writeable static area (WSA) storage for program objects. Other language-specific storage can appear in this section.
[16] File Status and Attributes Contains additional information about the file.
[17] Runtime Options Report Lists the Language Environment runtime options in effect when the routine was executed.
[18] 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.
[19] Additional Language Specific Information Displays any additional information not included in other sections. For C/C++, it shows the thread ID of the thread that generated the dump and the settings of the errno and errnojr variables for that thread.
[20] CEE3846I CEEDUMP Processing completed. Identifies the end of the Language Environment dump processing. Similarly, message CEE3845I identifies the start of the dump processing. Message 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.