[Digital logo]
[HR]

OpenVMS VAX System Dump Analyzer Utility Manual


Previous | Contents

This excerpt illustrates the condensed form of the display produced in the first example.

#3

SDA> SHOW SPINLOCKS/OWNED
System static spinlock structures
---------------------------------
IOLOCK8                            Address : 801BA538
Owner CPU ID     : 02              IPL     : 08
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000            Index   : 34
Timeout interval 002DC60
   .
   .
   .
System dynamic spinlock structures
----------------------------------
HAETAR$PAA                         Address : 8063A620
Owner CPU ID     : 02              DIPL    : 14
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000
Timeout interval 002DC60
  
HAETAR$CNA                         Address : 801BA538
Owner CPU ID     : 02              IPL     : 08
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000            Index   : 34
Timeout interval 002DC60
  
HAETAR$NET                         Address : 801BA538
Owner CPU ID     : 02              IPL     : 08
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000            Index   : 34
Timeout interval 002DC60
  
HAETAR$NDA                         Address : 801BA538
Owner CPU ID     : 02              IPL     : 08
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000            Index   : 34
Timeout interval 002DC60
   .
   .
   .
 

The SHOW SPINLOCKS/OWNED command shows all owned spin locks in the system.

#4
SDA> SHOW SPINLOCKS/FULL
System static spinlock structures
---------------------------------
EMB                                Address : 801B9EF8
Owner CPU ID     : None            IPL     : 1F
Ownership Depth  : 0000            Rank    : 00
CPUs Waiting     : 0000            Index   : 20
Timeout interval 002DC60
 
Spinlock EMB was last acquired or released from:
(Most recently)             80195146 ERL$WAKE+00089
       .                    801950EF ERL$WAKE+00032
       .                    80195146 ERL$WAKE+00089
       .                    801950EF ERL$WAKE+00032
       .                    80195146 ERL$WAKE+00089
       .                    801950EF ERL$WAKE+00032
       .                    80195146 ERL$WAKE+00089
(Least recently)            801950EF ERL$WAKE+00032
   .
   .
   .
Last release of multiple acquisitions occurred at:
                            801194F9 EXE$INSIOQ+00044
   .
   .
   .
IOLOCK8                            Address : 801BA538
Owner CPU ID     : 02              IPL     : 08
Ownership Depth  : 0001            Rank    : 14
CPUs Waiting     : 0000            Index   : 34
Timeout interval 002DC60
  
Spinlock IOLOCK8 was last acquired or released from:
(Most recently)             801BBE08 EXE$FORKDSPTH+0007E
       .                    80198EBF EXE$QIOACPPKT+00052
       .                    80198E7E EXE$QIOACPPKT+00011
       .                    80199BB2 IOC$CHECK_HWM+0032D
       .                    80182DE5 LCK$QUEUED_EXIT+0001D
       .                    80182884 LCK$AR_COMPAT_TBL+0007C
       .                    8018357E EXE$DEQ+00189
(Least recently)            80183428 EXE$DEQ+00033
   .
   .
   .
 

The SHOW SPINLOCKS/FULL command displays a list of the last eight PCs that have accessed the spin lock. For instance, the fork dispatcher contains the code that most recently acquired the fork lock.


SHOW STACK

Displays the location and contents of the four process stacks of the SDA current process and the interrupt stack of the SDA current CPU.

Format

SHOW STACK [range|/qualifier[,...]]


PARAMETERS

range

Range of memory locations you want to display in stack format. You can express a range using the following format:
m:n Range of virtual addresses from m to n
m;n Range of virtual addresses starting at m and continuing for n bytes

QUALIFIERS

/ALL

Displays the locations and contents of the four process stacks for the SDA current process and the interrupt stack for the SDA current CPU.

/EXECUTIVE

Shows the executive stack for the SDA current process.

/INTERRUPT

Shows the interrupt stack for the SDA current CPU.

/KERNEL

Shows the kernel stack for the SDA current process.

/SUPERVISOR

Shows the supervisor stack for the SDA current process.

/USER

Shows the user stack for the SDA current process.

DESCRIPTION

The SHOW STACK command, by default, displays the stack that was in use when the system failed or, in the analysis of a running system, the current operating stack. For any other process made the SDA current process, the SHOW STACK command by default shows its current operating stack.

The various qualifiers to the command can display any of the four per-process stacks for the SDA current process, as well as the interrupt stack for the SDA current CPU.

You can define SDA process and CPU context by using the SET CPU, SHOW CPU, SHOW CRASH, SET PROCESS, and SHOW PROCESS commands as indicated in their command descriptions. A complete discussion of SDA context control appears in Section 5.

SDA provides the following information in each stack display.
Section Contents
Identity of stack SDA indicates whether the stack is a process stack (user, supervisor, executive, or kernel) or the processor interrupt stack. If the interrupt stack is being displayed, SDA displays the CPU ID of the processor that owns it. Similarly, if the SDA current process is currently scheduled on a processor in the system, SHOW STACK also specifies the CPU ID of the processor on which the process is scheduled.
Stack pointer The stack pointer identifies the top of the stack. The display indicates the stack pointer by the symbol SP =>.
Stack address SDA lists all the virtual addresses that the operating system has allocated to the stack. The stack addresses are listed in a column that increases in increments of 4 bytes (one longword).
Stack contents SDA lists the contents of the stack in a column to the right of the stack addresses.
Symbols SDA attempts to display the contents of a location symbolically, using a symbol and an offset.

If the address is not within FFF 16 of the value of any existing symbol, this column is left blank.

If a stack is empty, the display shows the following:

        SP =>  (STACK IS EMPTY) 

Example

SDA> SHOW STACK
Process stacks (on CPU 00)
--------------------------
 
Current operating stack (USER):
                7FF73278  200C0000
                7FF7327C  00001518      SGN$C_MAXPGFL+518
                7FF73280  7FF732F0
                7FF73284  000187A7      RMS$_ECHO+72E
         SP =>  7FF73288  0000060A      BUG$_NOHDJMT+002
                7FF7328C  00000000
                7FF73290  00000003
                7FF73294  7FF73800
                7FF73298  7FF73800

The SHOW STACK command displays a user stack that was the current operating stack for a process scheduled on CPU 00. The data shown above the stack pointer might not be valid. The symbol to the right of the columns, BUG$_NOHDJMT+002, is the result of the SDA attempt to interpret the contents of the longword at the top of the stack as a symbol meaningful to the user. In this case, the value on the stack and the value of BUG$_NOHDJMT are unrelated.


SHOW SUMMARY

Displays a list of all active processes and the values of the parameters used in swapping and scheduling those processes.

Format

SHOW SUMMARY [/IMAGE]


PARAMETERS

None.

QUALIFIER

/IMAGE

Causes SDA to display, if possible, the name of the image being executed within each process.

DESCRIPTION

The SHOW SUMMARY command displays the information in Table SDA-23 for each active process in the system.

Table SDA-23 Process Information in the SHOW SUMMARY Display
Column Contents
Extended PID 32-bit number that uniquely identifies the process
Indx Index of this process into the PCB array
Process name Name assigned to the process
Username Name of the user who created the process
State Current state of the process, one of the following 14 states:
  • COM

    Computable and resident in memory

  • COMO

    Computable but outswapped

  • CUR

    Currently executing¹

  • CEF

    Waiting for a common event flag

  • LEF

    Waiting for a local event flag

  • LEFO

    Outswapped and waiting for a local event flag

  • HIB

    Hibernating

  • HIBO

    Hibernating and outswapped

  • SUSP

    Suspended

  • SUSPO

    Suspended and outswapped

  • PFW

    Waiting for a page that is not in memory (page-fault wait)

  • FPG

    Waiting to add a page to its working set (free-page wait)

  • COLPG

    Waiting for a page collision to be resolved (collided-page wait); this usually occurs when several processes cause page faults on the same shared page

  • MWAIT

    Waiting for a system resource (miscellaneous wait)

Pri Current scheduling priority of the process
PCB Address of the process control block
PHD Address of the process header
Wkset Number (in decimal) of pages currently in the working set of the process


¹For a process in the CUR state executing in a multiprocessing environment, SDA indicates the CPU ID of the processor on which the process is current. This information, however, might not be accurate in SHOW SUMMARY displays produced in the analysis of a running system.


Example

SDA> SHOW SUMMARY/IMAGE
Current process summary
-----------------------
Extended  Indx Process name    Username    State   Pri   PCB      PHD    Wkset
-- PID -- ---- --------------- ----------- ------- --- -------- -------- -----
 33C00101 0001 SWAPPER                      HIB     16 8000C3C0 8000C200     0
 33C00205 0005 _RTA5:          SIVAD        LEF      4 80482FE0 82120E00   293
 33C00106 0006 ERRFMT          SYSTEM       HIB      8 80432950 80DB4600   126
          $254$DUA200:[SYS6.SYSCOMMON.][SYSEXE]ERRFMT.EXE;1
 33C00107 0007 CACHE_SERVER    SYSTEM       HIB     16 80432AC0 81121E00   120
          $254$DUA200:[SYS6.SYSCOMMON.][SYSEXE]FILESERV.EXE;400
 33C00108 0008 CLUSTER_SERVER  SYSTEM       HIB     10 804331F0 81246600   313
          $254$DUA200:[SYS6.SYSCOMMON.][SYSEXE]CSP.EXE;300
   .
   .
   .
 33C0010D 000D NETACP          DECNET       CUR  00 10 8044C6D0 816D8600  1500
          $254$DUA200:[SYS6.SYSCOMMON.]<SYSEXE>NETACP.EXE;3
 33C0010E 000E EVL             DECNET       HIB      4 8044CD60 817FCE00    68
          $254$DUA200:[SYS6.SYSCOMMON.]<SYSEXE>EVL.EXE
   .
   .
   .

The SHOW SUMMARY/IMAGE command describes all active processes in the system at the time of the system failure. Note that the process NETACP is in the CUR state on CPU 00 of a multiprocessor system at the time of the failure.


SHOW SYMBOL

Displays the hexadecimal value of a symbol and, if the value is equal to an address location, the contents of that location.

Format

SHOW SYMBOL [/ALL] symbol-name


PARAMETER

symbol-name

Name of the symbol to be displayed. You must provide a symbol-name.

QUALIFIER

/ALL

Displays information about all symbols whose names begin with the characters specified in symbol-name.

DESCRIPTION

The SHOW SYMBOL/ALL command is useful for determining the values of symbols that belong to a symbol set, as illustrated in the examples.

Examples

#1
SDA> SHOW SYMBOL G
G = 80000000 :  8FBC0FFC

The SHOW SYMBOL command evaluates the symbol G as 8000000016 and displays the contents of address 8000000016 as 8FBC0FFC16.

#2
SDA>  SHOW SYMBOL/ALL BUG

Symbols sorted by name 
---------------------- 
BUG$BUILD_HEADE 80002038 => 24A89F16        BUG$_CONSOLRX50 00000640 => 10A2020E 
BUG$DUMP_REGIST 80002040 => 24A89F16        BUG$_CONTRACT   000000C0 
BUG$FATAL       80002048 => 24A89F16        BUG$_CPUBUSYWAI 00000780 => 6501FB30 
BUG$L_BUGCHK_FL 80004108 => 00000001        BUG$_CPUCEASED  000005E8 => 5EDD0000 
BUG$L_FATAL_SPS 8000410C => 7FFE7C6C        BUG$_CPUEXIT    000006B8 => 218FD007 
BUG$READ_ERR_RE 80002050 => 24A89F16        BUG$_CPUSANITY  00000778 => 8A031164 
BUG$REBOOT      80002058 => 6E9E9F17        BUG$_CTERM      00000678 => 00000004 
BUG$TABLE       8000D09E => 00280001        BUG$_CWSERR     00000698 => 004C414E 
   .
   .
   .

This example shows the display produced by the SHOW SYMBOL/ALL command. SDA searches its symbol table for all symbols that begin with the string "BUG" and displays the symbols and their values. Although certain values equate to memory addresses, it is doubtful that the contents of those addresses are actually relevant to the symbol definitions in this instance.


SHOW TRANSACTIONS

Displays information about all transactions on the node or about a specified transaction.

Format

SHOW TRANSACTIONS [/qualifier[,...]]


QUALIFIERS

/DISPLAY=(item [,...])

Specifies the type of information to be displayed. The argument to /DISPLAY can be either a single item or a list. The following items can be specified.
Item Description
ALL All transaction control structures for the specified transaction. This is the default behavior.
BRANCHES Control structures for branches of the specified transaction.
PARTICIPANTS Control structures for resource managers participating in the specified transaction.
THREADS Control structures for threads of the specified transaction.
TRANSACTIONS Transaction control structures for the specified transaction.

/SUMMARY

Displays statistics for transactions on the node. The /SUMMARY qualifier cannot be used with the /TID or /DISPLAY qualifier.

/TID=tid

Specifies the transaction for which information is to be displayed. If you omit the /TID qualifier, the SHOW TRANSACTIONS command displays information about all transactions on the node.

Examples

#1
SDA> SHOW TRANSACTIONS/TID=FAC21DE2-BA88-0092-8FA6-00000000B24B
 

The SHOW TRANSACTIONS command displays all the transaction control structure information for the transaction identified by the transaction identifier.

#2
SDA> SHOW TRANSACTIONS/DISPLAY=(PARTICIPANTS, BRANCHES)

The SHOW TRANSACTIONS command displays the transaction branch and resource manager information for all transactions on the node.


SPAWN

Creates a subprocess of the process currently running SDA, copying the context of the current process to the subprocess and, optionally, executing within the subprocess a specified command.

Format

SPAWN [/qualifier[,...]] [command]


PARAMETER

command

Name of the command that you want executed by the subprocess.

QUALIFIERS

/INPUT=filespec

Specifies an input file containing one or more command strings to be executed by the spawned subprocess. If you specify a command string with an input file, the command string is processed before the commands in the input file. Once processing is complete, the subprocess is terminated.

/NOLOGICAL_NAMES

Specifies that the logical names of the parent process are not to be copied to the subprocess. The default behavior is that the logical names of the parent process are copied to the subprocess.

/NOSYMBOLS

Specifies that the DCL global and local symbols of the parent process are not to be passed to the subprocess. The default behavior is that these symbols are passed to the subprocess.

/NOTIFY

Specifies that a message is to be broadcast to SYS$OUTPUT when the subprocess completes processing or aborts. The default behavior is that such a message is not sent to SYS$OUTPUT.

When you use this qualifier, you must also specify the /NOWAIT qualifier.

/NOWAIT

Specifies that the system is not to wait until the subprocess is completed before allowing more commands to be specified. This qualifier allows you to specify new commands while the spawned subprocess is running. If you specify /NOWAIT, you should use /OUTPUT to direct the output of the subprocess to a file to prevent more than one process from simultaneously using your terminal.

The default behavior is that the system waits until the subprocess is completed before allowing more commands to be specified.

/OUTPUT=filespec

Specifies an output file to which the results of the SPAWN operation are written. You should specify an output other than SYS$OUTPUT whenever you specify /NOWAIT to prevent output from the spawned subprocess from being displayed while you are specifying new commands. If you omit the /OUTPUT qualifier, output is written to the current SYS$OUTPUT device.

/PROCESS=process-name

Specifies the name of the subprocess to be created. The default name of the subprocess is username_n, where username is the user name of the parent process.

Example

SDA>  SPAWN
$  MAIL
   .
   .
   .
$  DIR
   .
   .
   .
$  LO
   Process SYSTEM_1 logged out at 5-MAR-1993 15:42:23.59
SDA> 

This example uses the SPAWN command to create a subprocess that issues DCL commands to invoke the Mail utility. The subprocess then lists the contents of a directory before logging out to return to the parent process executing SDA.


VALIDATE QUEUE

Validates the integrity of the specified queue by checking the pointers in the queue.

Format

VALIDATE QUEUE [address] [/qualifier[,...]]


PARAMETER

address

Address of an element in a queue.

If you specify a period (.) as the address, SDA uses the last evaluated expression as the queue element's address.

If you do not specify an address, the VALIDATE QUEUE command determines the address from the last issued VALIDATE QUEUE command in the current SDA session.

If you do not specify an address, and no queue has previously been specified, SDA displays the following error message:

%SDA-E-NOQUEUE, no queue has been specified for validation 

QUALIFIERS

/MAXIMUM_LINKS=nn

Specifies the number of entries in the queue that are to be validated.

/SELF_RELATIVE

Specifies that the selected queue is a self-relative queue.

DESCRIPTION

The VALIDATE QUEUE command uses the forward and backward pointers in each element of the queue to make sure that all such pointers are valid and that the integrity of the queue is intact. If the queue is intact, SDA displays the following message:
Queue is complete, total of n elements in the queue 
In these messages, n represents the number of entries the VALIDATE QUEUE command has found in the queue.

If SDA discovers an error in the queue, it displays one of the following error messages:

Error in forward queue linkage at address nnnnnnnn after tracing x elements 
Error comparing backward link to previous structure address (nnnnnnnn) 
Error occurred in queue element at address oooooooo after tracing pppp elements 

These messages can appear frequently when the VALIDATE QUEUE command is used within an SDA session that is analyzing a running system. In a running system, the composition of a queue can change while the command is tracing its links, thus producing an error message.

If there are no entries in the queue, SDA displays this message:

The queue is empty 

Examples

#1
SDA> VALIDATE QUEUE SCH$GQ_LEFWQ/MAXIMUM_LINKS=3
The queue is consistent through 3 elements

This example validates three elements in the SCH$GQ_LEFWQ queue.

#2
SDA>  VALIDATE QUEUE/SELF_RELATIVE IOC$GL_IRPFL
Queue is complete, total of 159 elements in the queue

This example validates the self-relative queue that is the IRP pool list. The validation is successful and determines that there are 159 IRPs in the list.


Index | Contents | [Home] | [Comments] | [Ordering info] | [Help]

[HR]

  4556P014.HTM
  OSSG Documentation
  22-NOV-1996 14:13:22.72

Copyright © Digital Equipment Corporation 1996. All Rights Reserved.

Legal