 |
OpenVMS Alpha System Analysis Tools Manual
SHOW CPU
When analyzing a dump, displays information about the state of a CPU at
the time of the system failure.
Note
SHOW CPU is only valid when you are analyzing a crash dump. It is not a
valid command when you are analyzing the running system, because all
the CPU-specific information may not be available.
|
Format
SHOW CPU [cpu-id]
Parameter
cpu-id
Numeric value from 00 to 1F16 indicating the identity of the
CPU for which context information is to be displayed. If you specify a
value outside this range, or you specify the cpu-id of
a CPU that was not active at the time of the system failure, SDA
displays the following message:
%SDA-E-CPUNOTVLD, CPU not booted or CPU number out of range
|
If you use the cpu-id parameter, the SHOW CPU command
performs an implicit SET CPU command, making the CPU indicated by
cpu-id the current CPU for subsequent SDA commands.
(See the description of the SET CPU command and Section 2.5 for
information on how this can affect the CPU context---and process
context---in which SDA commands execute.)
Qualifiers
None.
Description
The SHOW CPU command displays system failure information about the CPU
specified by cpu-id or, by default, the SDA current
CPU, as defined in Section 2.5. You cannot use the SHOW CPU command
when examining the running system with SDA.
The SHOW CPU command produces several displays. The first display is a
brief description of the system failure and its environment that
includes the following:
- Reason for the bugcheck.
- Name of the currently executing process. If no process has been
scheduled on this CPU, SDA displays the following message:
Process currently executing: no processes currently scheduled on the processor
|
- File specification of the image executing within the current
process (if there is a current process).
- Interrupt priority level (IPL) of the CPU at the time of the system
failure.
- The CPU database address.
- The CPU's capability set.
Next, the general registers display shows the contents
of the CPU's integer registers (R0 to R30), and the AI, RA, PV, FP, PC,
and PS at the time of the system failure.
The processor registers display consists of the
following parts:
- Common processor registers
- Processor-specific registers
- Stack pointers
The first part of the processor registers display includes registers
common to all Alpha processors, which are used by the operating system
to maintain the current process virtual address space, system space, or
other system functions. This part of the display includes the following
registers:
- Hardware privileged context block base register (PCBB)
- System control block base register (SCBB)
- Software interrupt summary register (SISR)
- Address space number register (ASN)
- AST summary register (ASTSR)
- AST enable register (ASTEN)
- Interrupt priority level register (IPL)
- Processor priority level register (PRBR)
- Page table base register (PTBR)
- Virtual page table base register (VPTB)
- Floating-point control register (FPCR)
- Machine check error summary register (MCES)
The last part of the display includes the four stack pointers: the
pointers of the kernel, executive, supervisor, and user stacks (KSP,
ESP, SSP, and USP, respectively).
The SHOW CPU command concludes with a listing of the spinlocks, if any,
owned by the CPU at the time of the system failure, reproducing some of
the information given by the SHOW SPINLOCKS command. The spinlock
display includes the following information:
- Name of the spinlock.
- Address of the spinlock data structure (SPL).
- The owning CPU's CPU ID.
- IPL of the spinlock.
- Indication of the depth of this CPU's ownership of the spinlock. A
number greater than 1 indicates that this CPU has nested acquisitions
of the spinlock.
- Rank of the spinlock.
- Timeout interval for spinlock acquisition (in terms of 10
milliseconds).
- Shared array (shared spinlock context block pointers)
Example
|
SDA> SHOW CPU 0
CPU 00 Processor crash information
----------------------------------
CPU 00 reason for Bugcheck: CPUEXIT, Shutdown requested by another CPU
Process currently executing on this CPU: None
Current IPL: 31 (decimal)
CPU database address: 81414000
CPUs Capabilities: PRIMARY,QUORUM,RUN
General registers:
R0 = FFFFFFFF.81414000 R1 = FFFFFFFF.81414000 R2 = 00000000.00000000
R3 = FFFFFFFF.810AD960 R4 = 00000000.01668E90 R5 = 00000000.00000001
R6 = 66666666.66666666 R7 = 77777777.77777777 R8 = FFFFFFFF.814FB040
R9 = 99999999.99999999 R10 = FFFFFFFF.814FB0C0 R11 = BBBBBBBB.BBBBBBBB
R12 = CCCCCCCC.CCCCCCCC R13 = FFFFFFFF.810AD960 R14 = FFFFFFFF.81414018
R15 = 00000000.00000004 R16 = 00000000.000006AC R17 = 00000000.00000047
R18 = 00000000.00000000 R19 = 00000000.00000000 R20 = FFFFFFFF.8051A494
R21 = 00000000.00000000 R22 = 00000000.00000001 R23 = 00000000.00000010
R24 = FFFFFFFF.81414000 AI = FFFFFFFF.81414000 RA = FFFFFFFF.81006000
PV = 00000001.FFFFFFFF R28 = 00000000.00000000 FP = FFFFFFFF.88ABDFD0
PC = FFFFFFFF.8009C95C PS = 18000000.00001F04
Processor Internal Registers:
ASN = 00000000.00000000 ASTSR/ASTEN = 00000000
IPL = 0000001F PCBB = 00000000.01014080 PRBR = FFFFFFFF.81414000
PTBR = 00000000.0000FFBF SCBB = 00000000.000001E8 SISR = 00000000.00000100
VPTB = FFFFFEFC.00000000 FPCR = 00000000.00000000 MCES = 00000000.00000000
KSP = FFFFFFFF.88ABDCD8
ESP = FFFFFFFF.88ABF000
SSP = FFFFFFFF.88AB9000
USP = FFFFFFFF.88AB9000
Spinlocks currently owned by CPU 00
SCS Address 810AF300
Owner CPU ID 00000000 IPL 00000008
Ownership Depth 00000000 Rank 0000001A
Timeout Interval 002DC6C0 Share Array 00000000
|
This example shows the default output of the SHOW CPU command.
SHOW CRASH
Displays information about the state of the system at the time of
failure. Provides system information identifying a running system.
Format
SHOW CRASH [/CPU=n]
Parameters
None.
Qualifier
/CPU=n
Allows exception data to be displayed from CPUs other than the one
considered as the crash CPU when more than one CPU crashes
simultaneously.
Description
The SHOW CRASH command has two different functions, depending on
whether you use it to analyze a running system or a system failure.
When used during the analysis of a running system, the SHOW CRASH
command produces a display that describes the system and the version of
OpenVMS Alpha that it is running. The system crash
information display contains the following information:
- Name and version number of the operating system
- Major and minor IDs of the operating system
- Identity of the Alpha system, including an indication of its
cluster membership
- CPU ID of the primary CPU
- Address of all CPU databases
When used during the analysis of a system failure, the SHOW CRASH
command produces several displays that identify the system and describe
its state at the time of the failure.
If the current CPU context for SDA is not that of the processor that
signaled the bugcheck, or the CPU specified with the /CPU=n
qualifier, the SHOW CRASH command first performs an implicit SET CPU
command to make that processor the current CPU for SDA. (See the
description of the SET CPU command and Section 2.5 for a discussion
of how this can affect the CPU context---and process context---in which
SDA commands execute.)
The system crash information display in this context
provides the following information:
- Date and time of the system failure.
- Name and version number of the operating system.
- Major and minor IDs of the operating system.
- Identity of the system.
- CPU IDs of both the primary CPU and the CPU that initiated the
bugcheck. In a uniprocessor Alpha system, these IDs are identical.
- Bitmask of the active and available CPUs in the system.
- For each active processor in the system, the name of the bugcheck
that caused the system failure. Generally, there will be only one
significant bugcheck in the system. All other processors typically
display the following as their reason for taking a bugcheck:
CPUEXIT, Shutdown requested by another CPU
|
Subsequent screens of the SHOW CRASH command display information about
the state of each active processor on the system at the time of the
system failure. The information in these screens is identical to that
produced by the SHOW CPU command, including the general-purpose
registers, processor-specific registers, stack pointers, and records of
spinlock ownership. The first such screen presents information about
the processor that caused the failure; others follow according to the
numeric order of their CPU IDs.
Examples
#1 |
SDA> SHOW CRASH
System crash information
------------------------
Time of system crash: 1-JAN-2001 00:00:00.00
Version of system: OpenVMS (TM) Alpha Operating System, Version X901-SSB
System Version Major ID/Minor ID: 3/0
VMScluster node: VMSTS6, a
Crash CPU ID/Primary CPU ID: 00/00
Bitmask of CPUs active/available: 00000001/00000001
CPU bugcheck codes:
CPU 00 -- INVEXCEPTN, Exception while above ASTDEL
System State at Time of Exception
---------------------------------
Exception Frame:
----------------
R2 = FFFFFFFF.810416C0 SCS$GA_LOCALSB+005C0
R3 = FFFFFFFF.81007E60 EXE$GPL_HWRPB_L
R4 = FFFFFFFF.850AEB80
R5 = FFFFFFFF.81041330 SCS$GA_LOCALSB+00230
R6 = FFFFFFFF.81038868 CON$INITLINE
R7 = FFFFFFFF.81041330 SCS$GA_LOCALSB+00230
PC = FFFFFFFF.803EF81C SYS$TTDRIVER+0F81C
PS = 30000000.00001F04
FFFFFFFF.803EF80C: STL R24,#X0060(R5)
FFFFFFFF.803EF810: LDL R28,#X0138(R5)
FFFFFFFF.803EF814: BIC R28,R27,R28
FFFFFFFF.803EF818: 00000138
PC => FFFFFFFF.803EF81C: HALT
FFFFFFFF.803EF820: HALT
FFFFFFFF.803EF824: BR R31,#XFF0000
FFFFFFFF.803EF828: LDL R24,#X0138(R5)
FFFFFFFF.803EF82C: BIC R24,#X40,R24
PS =>
MBZ SPAL MBZ IPL VMM MBZ CURMOD INT PRVMOD de
0 30 00000000000 1F 0 0 KERN 1 KERN
Signal Array
------------
Length = 00000003
Type = 0000043C
Arg = FFFFFFFF.803EF81C SYS$TTDRIVER+0F81C
Arg = 30000000.00001F04
%SYSTEM-F-OPCDEC, opcode reserved to Digital fault at PC=FFFFFFFF803EF81C, PS=00001F04
Saved Scratch Registers in Mechanism Array
------------------------------------------
R0 = 00000000.00000000 R1 = FFFFFFFF.811998B8 R16 = 00000000.00001000
R17 = FFFFFFFF.8119B1F0 R18 = 00000000.00000010 R19 = FFFFFFFF.810194F0
R20 = 00000000.00000000 R21 = 0000000F.00000000 R22 = 00000000.00000000
R23 = 00000000.00004000 R24 = 00000000.00001000 R25 = 00000000.00000000
R26 = FFFFFFFF.81041474 R27 = 00000000.00004000 R28 = 00000000.00001000
.
.
.
(CPU-specific display omitted)
.
.
.
|
This long display reflects the output of the SHOW CRASH command within
the analysis of a system failure.
#2 |
SDA> SHOW CRASH
System crash information
------------------------
Time of system crash: 12-OCT-2000 11:27:58.02
Version of system: OpenVMS (TM) Alpha Operating System, Version X74B-FT2
System Version Major ID/Minor ID: 3/0
System type: DEC 3000 Model 400
Crash CPU ID/Primary CPU ID: 00/00
Bitmask of CPUs active/available: 00000001/00000001
CPU bugcheck codes:
CPU 00 -- PGFIPLHI, Pagefault with IPL too high
System State at Time of Page Fault:
-----------------------------------
Page fault for address 00000000.00046000 occurred at IPL: 8
Memory management flags: 00000000.00000001 (instruction fetch)
Exception Frame:
----------------
R2 = 00000000.00000003
R3 = FFFFFFFF.810B9280 EXCEPTION_MON+39C80
R4 = FFFFFFFF.81564540 PCB
R5 = 00000000.00000088
R6 = 00000000.000458B0
R7 = 00000000.7FFA1FC0
PC = 00000000.00046000
PS = 20000000.00000803
00000000.00045FF0: LDQ R2,#X0050(FP)
00000000.00045FF4: LDQ R12,#X0058(FP)
00000000.00045FF8: LDQ R13,#X0060(FP)
00000000.00045FFC: LDQ R14,#X0068(FP)
PC => 00000000.00046000: BIS R1,R17,R1
00000000.00046004: BIS R31,#X01,R25
00000000.00046008: STQ_U R1,#X0002(R10)
00000000.0004600C: BSR R26,#X00738C
00000000.00046010: LDQ_U R16,#X0002(R10)
PS =>
MBZ SPAL MBZ IPL VMM MBZ CURMOD INT PRVMOD de
0 20 00000000000 08 0 0 KERN 0 USER
.
.
.
(CPU-specific display omitted)
.
.
.
|
This display reflects the output of a SHOW CRASH command within the
analysis of a PGFIPLHI bugcheck.
SHOW DEVICE
Displays a list of all devices in the system and their associated data
structures, or displays the data structures associated with a given
device or devices.
Format
SHOW DEVICE [device-name|/ADDRESS=ucb-address|/CDT=cdt_address|
/CHANNELS|/HOMEPAGE|/PDT|/UCB=ucb-address]
Parameter
device-name
Device or devices for which data structures are to be displayed. The
following table lists several uses of the device-name
parameter:
To Display the Structures For... |
Action |
All devices in the system
|
Do not specify a
device-name (for example, SHOW DEVICE).
|
A single device
|
Specify an entire
device-name (for example, SHOW DEVICE VTA20).
|
All devices of a certain type on a single controller
|
Specify only the device type and controller designation (for example,
SHOW DEVICE RTA or SHOW DEVICE RTB).
|
All devices of a certain type on any controller
|
Specify only the device type (for example, SHOW DEVICE RT).
|
All devices whose names begin with a certain character or character
string
|
Specify the character or character string (for example, SHOW DEVICE D).
|
All devices on a single node or HSC
|
Specify only the node name or HSC name (for example, SHOW DEVICE
GREEN$).
|
All devices with a certain allocation class
|
Specify the allocation class including leading and trailing $, for
example, SHOW DEVICE $63$.
|
Qualifiers
/ADDRESS=ucb-address
Indicates the device for which data structure information is to be
displayed by the address of its unit control block (UCB). The /ADDRESS
qualifier is an alternate method of supplying a device name to the SHOW
DEVICE command. If both the device-name parameter and
the /ADDRESS qualifier appear in a single SHOW DEVICE command, SDA
responds only to the parameter or qualifier that appears first.
/CDT=cdt_address
Identifies the device by the address of its Connector Descriptor Table
(CDT). This applies to cluster port devices only.
/CHANNELS
Displays information on active Memory Channel channel blocks. This
qualifier is ignored for devices other than Memory Channel.
/HOMEPAGE
Displays fields from the Memory Channel Home Page. This qualifier is
ignored for devices other than Memory Channel.
/PDT
Displays the Memory Channel Port Descriptor Table. This qualifier is
ignored for devices other than Memory Channel.
/UCB=ucb-address
This is a synonym for /ADDRESS=ucb-address as described previously.
Description
The SHOW DEVICE command produces several displays taken from system
data structures that describe the devices in the system configuration.
If you use the SHOW DEVICE command to display information for more than
one device or one or more controllers, it initially produces the
device data block (DDB) list to provide a brief
summary of the devices for which it renders information in subsequent
screens.
Information in the DDB list appears in five columns,
the contents of which are as follows:
- Address of the device data block (DDB)
- Controller name
- Name of the ancillary control process (ACP) associated with the
device
- Name of the device driver
- Address of the driver prologue table (DPT)
The SHOW DEVICE command then produces a display of information
pertinent to the device controller. This display includes information
gathered from the following structures:
- Device data block (DDB)
- Primary channel request block (CRB)
- Interrupt dispatch block (IDB)
- Driver dispatch table (DDT)
If the controller is an HSC controller, SHOW DEVICE also displays
information from its system block (SB) and each path block (PB).
Many of these structures contain pointers to other structures and
driver routines. Most notably, the DDT display points to various
routines located within driver code, such as the start I/O routine,
unit initialization routine, and cancel I/O routine.
For each device unit subject to the SHOW DEVICE command, SDA displays
information taken from its unit control block, including a list of all
I/O request packets (IRPs) in its I/O request queue. For certain mass
storage devices, SHOW DEVICE also displays information from the primary
class driver data block (CDDB), the volume control block (VCB), and the
ACP queue block (AQB). For units that are part of a shadow set, SDA
displays a summary of shadow set membership.
As it displays information for a given device unit, SHOW DEVICE defines
the following symbols as appropriate:
Symbol |
Meaning |
UCB
|
Address of unit control block
|
SB
|
Address of system block
|
ORB
|
Address of object rights block
|
DDB
|
Address of device data block
|
DDT
|
Address of driver dispatch table
|
CRB
|
Address of channel request block
|
SUD
|
Address of supplementary VCB data
|
SHAD
|
Address of host-based shadowing data structure
|
AMB
|
Associated mailbox UCB pointer
|
IRP
|
Address of I/O request packet
|
2P_UCB
|
Address of alternate UCB for dual-pathed device
|
LNM
|
Address of logical name block for mailbox
|
PDT
|
Address of port descriptor table
|
CDDB
|
Address of class driver descriptor block for MSCP served device
|
2P_CDDB
|
Address of alternate CDDB for MSCP served device
|
RWAITCNT
|
Resource wait count for MSCP served device
|
VCB
|
Address of volume control block for mounted device
|
2P_DDB
|
Address of secondary DDB
|
VP_IRP
|
Address of volume processing IRP
|
MMB
|
Address of merge management block
|
CPYLOCK
|
ID of copier lock
|
VU_TO
|
Virtual Unit Timeout (seconds)
|
VU_UCB
|
UCB address of Virtual Unit
|
MPDEV
|
Address of multipath data structure
|
PRIMARY_UCB
|
UCB address for primary path
|
CURRENT_UCB
|
UCB address for current path
|
If you are examining a driver-related system failure, you may find it
helpful to issue a SHOW STACK command after the appropriate SHOW DEVICE
command, to examine the stack for any of these symbols. Note, however,
that although the SHOW DEVICE command defines those symbols relevant to
the last device unit it has displayed, and redefines symbols relevant
to any subsequently displayed device unit, it does not undefine
symbols. (For instance, SHOW DEVICE DUA0 defines the symbol PDT, but
SHOW DEVICE MBA0 does not undefine it, even though the PDT structure is
not associated with a mailbox device.) To maintain the accuracy of such
symbols that appear in the stack listing, use the DEFINE command to
modify the symbol name. For example:
SDA> DEFINE DUA0_PDT PDT
SDA> DEFINE MBA0_UCB UCB
|
See the descriptions of the READ and FORMAT commands for additional
information on defining and examining the contents of device data
structures.
Examples
#1 |
SDA> SHOW DEVICE/ADDRESS=8041E540
OPA0 VT300_Series UCB address 8041E540
Device status: 00000010 online
Characteristics: 0C040007 rec,ccl,trm,avl,idv,odv
00000200 nnm
Owner UIC [000001 ,000004] Operation count 160 ORB address 8041E4E8
PID 00010008 Error count 0 DDB address 8041E3F8
Class/Type 42/70 Reference count 2 DDT address 8041E438
Def. buf. size 80 BOFF 00000001 CRB address 8041E740
DEVDEPEND 180093A0 Byte count 0000012C I/O wait queue 8041E5AC
DEVDEPND2 FB101000 SVAPTE 80537B80
DEVDEPND3 00000000 DEVSTS 00000001
FLCK index 3A
DLCK address 8041E880
*** I/O request queue is empty ***
|
This example reproduces the SHOW DEVICE display for a single device
unit, OPA0. Whereas this display lists information from the UCB for
OPA0, including some addresses of key data structures and a list of
pending I/O requests for the unit, it does not display information
about the controller or its device driver. To display the latter
information, specify the device-name as OPA (for
example, SHOW DEVICE OPA).
#2 |
SDA> SHOW DEVICE DU
I/O data structures
-------------------
DDB list
--------
Address Controller ACP Driver DPT
------- ---------- -------- ------------ ---
80D0B3C0 BLUES$DUA F11XQP SYS$DKDRIVER 807735B0
8000B2B8 RED$DUA F11XQP SYS$DKDRIVER 807735B0
80D08BA0 BIGTOP$DUA F11XQP SYS$DKDRIVER 807735B0
80D08AE0 TIMEIN$DUA F11XQP SYS$DKDRIVER 807735B0
.
.
.
Press RETURN for more.
.
.
.
|
This excerpt from the output of the SHOW DEVICE DU command illustrates
the format of the DDB list. In this case, the
DDB list concerns itself with those devices whose
device type begins with DU. It displays devices of these types attached
to various HSCs (RED$ and BLUES$) and systems in a cluster (BIGTOP$ and
TIMEIN$).
|