Lightweight Corefile Browser

Standardized Lightweight Corefile Format (LCF)


The following is a pseudo-BNF description of the LCF syntax.

LCF-FILE         ::=  HEADER-LINE
		      PROGRAM-INFO
                      [PROGRAM-INFO]...

HEADER_LINE	 ::=  '+++PARALLEL TOOLS CONSORTIUM LIGHTWEIGHT
		       COREFILE FORMAT version 1.0' [ignored] '\n'

PROGRAM-INFO     ::=  '+++LCB' [date-time-info] [ignored] '\n'
                      [SECTION] ...
                      '---LCB' [ignored] '\n'

SECTION          ::=  '+++ID' node/process/thread_id_string '\n'
                      [FAULT-INFO]
                      STACK-INFO
                      '---ID' [ignored] '\n'

FAULT-INFO       ::=  '***FAULT' msg_string '\n'

STACK-INFO       ::=  '+++STACK' '\n' 
                      [STACK-LINE]... 
                      '---STACK' '\n'
                 ::=  '***STACK' [STACK-ENTRY] '\n'

STACK-LINE       ::=  STACK-ENTRY [ignored] '\n'
                 ::=  '\n'

STACK-ENTRY      ::=  routine-name ':' line-num

Notes:
(a) Comment lines (those with '#' in the first column) may
      appear anywhere and will be ignored.
(b) There will be a SECTION for every node, process, and/or
      thread for which execution data is available.  A
      '*** STACK' line with no STACK-ENTRY data signifies 
      that the entire stack is inaccessible or corrupted;
      an empty STACK-LINE is used when the remainder of the
      (partially available) stack is corrupted.
(c) If file is the result of a program failure, at least one
      section will include a FAULT-INFO line.
(d) To improve readability, the section identifier (string
      following ID on first line in SECTION) may be repeated
      on the matching trailer line.

An example of a standard-format LCF file follows.

+++PARALLEL TOOLS CONSORTIUM LIGHTWEIGHT COREFILE FORMAT version 1.0
+++LCB 1.0   14:32.40    EXAMPLE FILE - INFO FROM ONE POINT IN EXECUTION
# Node 0 info
+++ID Node 0 Process 12710
+++STACK
RANDS9:47
ROTVEC:28
RANDS7:38
SCALARPRO:48
ZVECT:59
MAIN_CG2:4
---STACK
---ID
+++ID Node 1 Process 11460
+++STACK
#     Note use of optional whitespace
RANDS9           : 32
ROTVEC           : 28
RANDS7           : 38
SCALARPRO        : 48
ZVECT            : 59
MAIN_CG2         : 4
---STACK
---ID
# Node 2 was the failing node
+++ID Node 2 Process 11622
***FAULT "Bus error (core dumped)"
+++STACK
ROTVEC:31
RANDS7:38
SCALARPRO:48
ZVECT:59
MAIN_CG2:4
---STACK
---ID Node 2 Process 11622
---LCB