HP OpenVMS Systems Documentation

Content starts here

HP OpenVMS Version 8.3 Release Notes


Previous Contents

4.19 System Parameters

The following sections contain notes related to system parameters.

4.19.1 New System Parameters

V8.3

To learn about new system parameters, see the HP OpenVMS Version 8.3 New Features and Documentation Overview.

4.19.2 Obsolete System Parameters

V8.3

The following system parameters are marked as obsolete in OpenVMS Version 8.3:

  • SMP_CPUS
  • SMP_CPUSH
  • IO_PREFER_CPU
  • IO_PREFER_CPUS
  • NPAG_AGGRESSIVE
  • NPAG_GENTLE
  • SCH_CTLFLAGS
  • SHADOW_REC_DLY
  • TTY_SILOTIME
  • BALSETCNT
  • BREAKPOINTS
  • MMG_CTLFLAGS
  • MULTITHREAD
  • NISCS_MAX_PKTSZ
  • NISCS_PORT_SERV
  • SECURITY POLICY
  • SHADOW_HBMM_RTC
  • SHADOW_PSM_RDLY
  • SHADOW_SYS_DISK
  • WBM_MSG_UPPER

The following new parameters replace the preceding ones:

  • SMP_CPU_BITMAP
  • IO_PRCPU_BITMAP

For more information about these new system parameters, see the HP OpenVMS System Management Utilities Reference Manual or online help.

4.19.3 System Parameter Changes

V8.3

The following system parameters are changed in OpenVMS Version 8.3. For more information, see the HP OpenVMS System Management Utilities Reference Manual.

  • BALSETCNT - wording changes
  • BREAKPOINTS - now dynamic
  • MMG_CTLFLAGS - additional bits defined; wording changes
  • MULTITHREAD - I64 support added
  • NISCS_MAX_PKTSZ - wording changes
  • NISCS_PORT_SERV - bit definition changes
  • SECURITY POLICY - Bits 13 and 14 defined
  • SHADOW_HBMM_RTC - wording changes
  • SHADOW_PSM_RDLY - spelling corrected (from SHADOW_PSM_DLY)
  • SHADOW_SYS_DISK - wording changes
  • WBM_MSG_UPPER - default changed

For detailed descriptions of these parameters see the online help or the HP OpenVMS System Management Utilities Reference Manual.

4.19.4 Documentation Error: LCKMGR_CPUID System Parameter

V8.3

The OpenVMS Performance Management manual contains several references to the system parameter LCKMGR_CPUID as LOCKMGR_CPU. This latter reference is incorrect and will be corrected the next time the manual is updated.

4.19.5 MMG_CTLFLAGS: Documentation Error

V8.2

There is an error in the description of Bit 1 of the MMG_CTLFLAGS system parameter in the OpenVMS Performance Management manual. That description should be corrected to read as follows:

"Reclamation enabled by outswapping processes that have been idle for longer than LONGWAIT seconds. This occurs when the size of the free list drops below the value of FREEGOAL."

4.20 Terminal Fallback Facility (TFF)

V8.2

On OpenVMS Alpha systems, the Terminal Fallback Facility (TFF) includes a fallback driver (SYS$FBDRIVER.EXE), a shareable image (TFFSHR.EXE), a terminal fallback utility (TFU.EXE), and a fallback table library (TFF$MASTER.DAT).

Note

TFFSHR has been removed from IMAGELIB because it is not a documented, user-callable interface. The image is still available in the SYS$LIBRARY: directory.

To start TFF, invoke the TFF startup command procedure located in SYS$MANAGER, as follows:


$ @SYS$MANAGER:TFF$SYSTARTUP.COM

To enable fallback or to change fallback characteristics, invoke the Terminal Fallback Utility (TFU), as follows:


$ RUN SYS$SYSTEM:TFU
TFU>

To enable default fallback to the terminal, enter the following DCL command:


$ SET TERMINAL/FALLBACK

OpenVMS Alpha TFF differs from OpenVMS VAX TFF in the following ways:

  • On Alpha systems, the TFF fallback driver is named SYS$FBDRIVER.EXE. On VAX systems, the TFF fallback driver is named FBDRIVER.EXE.
  • On Alpha systems, TFF is capable of handling 16-bit character fallback. The OpenVMS Alpha fallback table library (TFF$MASTER.DAT) contains four more 16-bit character tables than the VAX library. Table 4-4 describes these additional tables.

    Table 4-4 TFF Character Fallback Tables
    Table Name Base Description
    BIG5_HANYU BIG5 BIG5 for CNS 11643 (SICGCC) terminal/printer
    HANYU_BIG5 CNS CNS 11643 (SICGCC) for BIG5 terminal/printer
    HANYU_TELEX CNS CNS 11643 for MITAC TELEX-CODE terminal
    HANGUL_DS KS KS for DOOSAN 200 terminal

    These tables are used mainly by the Asian region. Also, the table format was changed due to the support of 16-bit character fallback.
  • On Alpha systems, the TFU command SHOW STATISTICS does not display the size of the fallback driver (SYS$FBDRIVER.EXE).

RT terminals are not supported by TFF.

For more information about the Terminal Fallback Facility, refer to the now archived OpenVMS Terminal Fallback Utility Manual on the OpenVMS documentation website:

http://www.hp.com/go/openvms/doc

Click on "Archived documents" in the left sidebar to link to this manual.

4.21 User Environment Test Package (UETP) (I64 Only)

V8.2

The User Environment Test Package (UETP) can be used with the following cautions:

  • During the load phase, there are sporadic access violations in UETMEMY01. This does not terminate execution or really affect the validity of the run. UETP is still useable and produces valid results.
  • The device phase currently does not complete execution due to an access violation.
  • The DECnet phase runs fine. The cluster phase is still being tested. It appears to execute properly, but there are some concerns, and the output does not show other system names properly.

4.22 Recommended Caching Methods

Permanent Restriction

Virtual I/O Cache (VIOC) --- also known as VAX Cluster Cache (VCC) --- is not available on OpenVMS I64. On I64 systems, setting the SYSGEN parameter VCC_FLAGS to 1 is equivalent to setting VCC_FLAGS to 0 or not loading caching at all.

HP recommends Extended File Cache (XFC) as the preferred method for caching on both Alpha and I64 systems. For more information about XFC, refer to the HP OpenVMS System Manager's Manual.

In a future release of OpenVMS Alpha, support for VIOC will be removed.

4.23 Volume Shadowing for OpenVMS

The following release notes pertain to HP Volume Shadowing for OpenVMS, also known as host-based volume shadowing (HBVS).

4.23.1 Device Name Requirement

V7.3-2

Volume Shadowing for OpenVMS supports device names whose ddc portion of the full device name of $alloclass$ddcu: is three characters.

Prior to this release, it was possible to create device names whose ddc portion of the full device name was longer, such as $1$DECRAM10:, and these devices mounted successfully. However, mounting such devices as part of a shadow set caused operational problems, such as %MOUNT-F-XSMBRS errors when other disks were added to the shadow set.

Starting with OpenVMS Alpha Version 7.3-2, the Mount utility enforces this three-character requirement for the ddc portion of the full device name during the initial attempt to mount the device. If you attempt to mount a device whose name does not conform to this requirement, the following error message is displayed:


MOUNT-F-NOTSHDWDEV, not a valid shadow set member

4.23.2 Warning About Using SET SHADOW and SHOW SHADOW in DCL Command Procedures

V7.3-2

The new DCL commands SET SHADOW and SHOW SHADOW will continue to evolve. In a future release, the default display and implementation of a SHOW SHADOW/FULL display will change the current formatting. Therefore, HP advises customers not to rely on parsing the current format of output in DCL command procedures to obtain information about the shadow set. Instead, consider using the F$GETDVI lexical function to obtain many of the items displayed by the SHOW SHADOW command.

Furthermore, the behavior of the SET SHADOW command will also change. In addition to other new qualifiers, a new /ALL qualifier will be required if SET SHADOW is used to set characteristics in all shadow sets on a system at the same time.

Please keep these changes in mind if you are writing DCL command procedures that use these new commands.

4.23.3 Write Bitmaps and Dissimilar Device Shadowing (DDS) Caution

V7.3-2

An interaction occurs between write bitmaps and dissimilar device shadowing (DDS) when Volume Shadowing for OpenVMS is used.

DDS, a new feature in OpenVMS Version 7.3-2, allows you to construct shadow sets of disk devices that are of dissimilar sizes. (For details about DDS, refer to the HP OpenVMS Alpha Version 7.3--2 New Features and Documentation Overview manual and HP Volume Shadowing for OpenVMS.)

Write bitmaps keep track of application writes made to a shadow set virtual unit so that a member can be returned to that virtual unit without the overhead of a full copy. A write bitmap is created when the user issues a DISMOUNT/POLICY=MINICOPY command for a shadow set member or mounts a shadow set using the MOUNT/POLICY=MINICOPY command. When this bitmap is created, its size depends on the current size of the volume.

When a shadow set is mounted, the logical size of the shadow set virtual unit is set to the size of the smallest member unit. When a member of the shadow set is removed, the logical size of the virtual unit is recomputed based on the sizes of the remaining members of the set. Consequently, the logical size of the virtual unit may increase.

When a write bitmap is created for a shadow set, its size is determined by the current size of the shadow set virtual unit. If the virtual unit's size subsequently increases, the bitmap will not cover the entire virtual unit. If the bitmap is then used to bring back a shadow set member with a minicopy operation, the portion of the virtual unit that is not covered by the bitmap will be copied with a full copy operation.

The following example illustrates this problem:

  • Shadow set DSA1: consists of these three members:
    $1$DGA20: (18 GB)
    $1$DGA21: (36 GB)
    $1$DGA22: (36 GB)
  • $1$DGA22: is removed from the shadow set with a minicopy bitmap using the following command:


    $ DISMOUNT/POLICY=MINICOPY $1$DGA22:
    

    The write bitmap is sized for 18 GB, the current size of the shadow set virtual unit.
  • $1$DGA20: is removed from the shadow set. To allow the file system to utilize the entire 36 GB of the remaining member, use the following command:


    $ SET VOLUME/SIZE DSA1
    

    $1$DGA20 can no longer be used in this shadow set because it is smaller than the new volume size.
  • $1$DGA22: is returned to the shadow set using this command


    $ MOUNT/SYSTEM DSA1:/SHADOW=$1$DGA22: label
    

    The logical size of DSA1: remains at 36 GB; however, the bitmap covers only the first 18 GB.
  • The first 18 GB of $1$DGA22: are copied using the minicopy bitmap; the remaining 18 GB are copied using a full copy operation.

If the removal of a smaller shadow set member is planned, removing it before removing a larger member with a minicopy bitmap will cause a larger bitmap to be created and will avoid the performance impact of a short bitmap. (In the preceding example, you would remove $1$DGA20: before removing $1$DGA22:.)

4.23.4 KZPDC (Smart Array 5300) Restrictions

Permanent Restriction

Volume Shadowing for OpenVMS can be used with the KZPDC controller (Smart Array 5300) subject to the restriction that all shadow set members are formed using devices composed of fault-tolerant devices, such as the following:

  • RAID 1, also known as controller-based mirroring
  • RAID 5, which is striping with parity
  • RAID ADG (Advanced Data Guarding), which is striping with multiple parity devices

A fault-tolerant device on the KZPDC (Smart Array 5300) controller is one that can repair data errors when the media yields errors on one of the underlying LUNs.

OpenVMS Alpha Version 7.3-2 and higher supports shadow sets with members whose total block count varies. This new feature is known as dissimilar device shadowing (DDS). DDS allows a KZPDC device to be shadowed with a device from any supported controller.

For all prior OpenVMS versions, all devices must report the same number of total blocks for HBVS to create a multiple-member shadow set. The configuration utility sets the total number of blocks on a KZPDC or MSA1000 device to the closest match that it can make to the requested size. Because the KZPDC and the MSA1000 use the same calculation, a device created on both with the same requested size will be set to the same size. This allows HBVS to create multiple-member shadow sets.

Caution

There are cases where it will not be possible to use HBVS to create a multiple-member shadow set if a fault-tolerant device is not used. For example, a single member shadow set is formed using a device (physical disk or non-fault-tolerant device). If that device subsequently develops nonrecoverable data errors, it will not be possible to use HBVS successfully to add another member to this shadow set. Once the second member is added to the shadow set, HBVS will read the entire source device and copy it to the target device. When the data error is read from the founding or source shadow set member, HBVS will attempt to force all of the current shadow set members (the source member and the copy target) to create a "bad spot". If this request to create a bad spot fails on either shadow set member, the shadow set will be reduced to one member.

4.23.5 Changes in Shadow Set Merge Delay Computation

V7.3-2

During an unassisted shadow set merge operation, read I/O performance available to applications is reduced by two factors:

  • The need to perform data consistency checks on all read I/Os
  • Contention for I/O bandwidth by the shadow set merge operation

The shadow set merge operation employs a throttling mechanism to limit the impact of merge I/O on applications. The merge process is throttled by introducing a delay between merge I/Os when system load is detected. The logic for computing this delay has been redesigned for OpenVMS Alpha Version 7.3-2. With the new merge delay computation, the default parameter settings will result in faster merge rates for some I/O controllers, such as the HSG-80. For more information, refer to the HP Volume Shadowing for OpenVMS manual.

4.23.6 Dismount of Shadow Set Member Using /MINICOPY

V7.3

In a single site or in a multiple-site OpenVMS Cluster configuration, if you issue a DISMOUNT command with the /MINICOPY qualifier from a client system to dismount a shadow set member, the command might fail.

Workaround

If the first DISMOUNT command fails, repeat the command, as shown in the following example:


$! The following commands are NOT executed on the WILD3 system.
$
$ SHOW DEVICE DSA5555
Device                  Device           Error    Volume         Free  Trans Mnt
 Name                   Status           Count     Label        Blocks Count Cnt
DSA5555:                Mounted              0  $80$DKA107:    7994646     1  18
$80$DKA107:    (WILD3)  ShadowSetMember      0  (member of DSA5555:)
$80$DKA302:    (WILD3)  ShadowSetMember      0  (member of DSA5555:)
$80$DKA303:    (WILD3)  ShadowSetMember      0  (member of DSA5555:)
$
$
$ DISMOUNT/POLICY=MINICOPY $80$DKA302:
%DISM-W-CANNOTDMT, $80$DKA302: cannot be dismounted
%DISM-F-SRCMEM, only source member of shadow set cannot be dismounted
$
$
$ DISMOUNT/POLICY=MINICOPY $80$DKA302:
$

This problem will be corrected in a future release.

4.24 Authentication and Credential Management Extension (ACME)

4.24.1 New and Changed Features

V8.3

Following are new and changed features in Version 8.3.

  • ACME_SERVER restart changes
    In previous releases, the ACME_SERVER process recorded all configuration commands in a staging file, SYS$SYSTEM:ACME$SERVER_CONFIG.TMP. Upon restart, the server used this file to create a data file, SYS$SYSTEM:ACME$SERVER_RESTART.DAT, which contained selected configuration information from the staging file to be processed during restart.
    This method of restoring the server's configuration state following a restart is no longer used and is replaced by a site-specific startup procedure, SYS$MANAGER:ACME$START.COM. The executive-mode logical name ACME$START is used to locate this file.
    SYS$MANAGER:ACME$START.COM is run as a result of one of the following conditions:
    • SET SERVER ACME/START=AUTO command is issued.
    • SET SERVER ACME/RESTART command is issued.
    • Unexpected condition causes an automatic server restart.

    The SYS$MANAGER:ACME$START.LOG file contains any information produced during restart in the event of problems.
    Users can modify the SYS$MANAGER:ACME$START.COM file to define which agents are configured during a restart as well as any other server configuration options. This file is not replaced during system upgrades. The SYS$MANAGER:ACME$START.TEMPLATE file contains the HP version of the file.
  • New SET SERVER ACME/START[=AUTO] keyword
    The optional keyword AUTO causes the server to startup and configure itself using the SYS$MANAGER:ACME$START.COM procedure. By default, the server starts with only the OpenVMS ACME agent configured.
  • SET SERVER ACME/CONFIG=THREAD_MAX ignored on Integrity servers
    The SET SERVER ACME/CONFIG=THREAD_MAX command is ignored on Integrity servers for this release. Only one worker thread is active.
  • Optional kit for SYS$ACM-enabled LOUGINOUT.EXE and SETP0.EXE Images
    SYS$ACM-enabled LOGINOUT.EXE and SETP0.EXE (SET PASSWORD) images are available as an optional installation kit. When used with non-OpenVMS ACME agents, these images provide additional authentication features for sites that require them.
    For information about the operational requirements for this kit and a list of supported ACME agents, please refer to SYS$HELP:ACME_DEV_README.TXT.

4.25 Default Startup Order Required for OpenVMS and Kerberos ACME Agents

V8.3

The default settings for starting the OpenVMS ACME agents allow logins to function normally. If the default order of startup for the OpenVMS and Kerberos ACME agents is changed so that the Kerberos ACME is started first, accounts that are not in the Kerberos realm might not be able to log in. Changing the default order of startup is not supported in this release of OpenVMS.

If the startup order is changed, you can change it back to the default order by performing the following procedure.

Edit SYS$MANAGER:ACME$START.COM to search for the section (near the end of the command procedure) where you can specify the desired agent ordering. Change the last line (beginning with AGENT_LIST) so that it appears in the procedure.


$! A specific agent ordering can be specified in AGENT_LIST.
$!
$! If the list is empty, the agents will be enabled in the order that
$! they were configured. Some agent startup procedures may alter
$! the agent order. You can override that ordering here. Consult the
$! agent documentation you are using to ensure that the ordering you
$! specify is supported by that agent.
$!
$! For example
$!
$!      AGENT_LIST = "VMS,MSV1_0"
$!
$! will enable the VMS and MSV1_0 agents (and only those agents) in
$! that order.
$!
$ AGENT_LIST = "VMS,ACME_KRB_DOI"

4.26 Traceback API Problem Fixed

In OpenVMS I64 Version 8.2, an error occurred when the pc_rel (relative PC value) or image_desc (image name string descriptor) arguments were specified as zero. The Traceback facility now correctly ignores these arguments and continues Traceback processing.

4.27 WBEM Services for OpenVMS Version 2.0 Release Notes

The following release notes address late-breaking information about Version 2.0 of WBEM Services for OpenVMS.

4.27.1 Based on OpenPegasus 2.5

WBEM Services for OpenVMS Version 2.0 is based on the OpenPegasus 2.5 code stream of the The Open Group's Pegasus open source project.

4.27.2 Supports nPartitions and iCAP

Version 2.0 supports local nPartitions and iCAP providers. Only the functions and capabilities needed by these providers are supported.

4.27.3 Not Designed for Homogeneous Clusters

Pegasus, a UNIX-based product, is not designed for homogeneous clusters. To have the cimserver run on more than one node on a cluster common system disk, install the product on separate roots so that the repository, trace, and log file directories do not conflict.

4.27.4 Restart cimserver.exe to Unload Providers on OpenVMS

After entering the cimprovider -r command, you must stop and restart the cimserver to complete the process of replacing a provider. (OpenVMS does not support unloading a dynamically loaded image.)

4.27.5 Use Quotes Around Command Line Options

Be sure to use quotes around a command line option to preserve its case. For example,
Correct:
$ cimmofl "-E" "--xml"
Incorrect:
$ cimmof -E -xml

4.27.6 Clean Up WBEMCIM Repository Directory Tree After Uninstall

The DCL command PRODUCT REMOVE WBEMCIM does not remove the repository directory tree that WBEM_SERVICES$SETUP.EXE creates after installation. You need to delete SYS$COMMON:[WBEM_SERVICES.VAR...]*.*;* by hand.

If you do not delete the directory tree, when you upgrade or reinstall WBEM, multiple "File already exists" errors are reported when you run WBEM_SERVICES$SETUP.EXE.

4.28 Missing $SIGNAL_ARRAY_64 System Service on I64

V8.3

The system service $SIGNAL_ARRAY_64 is missing on I64. Whe you call this service on I64, you receive a return status of SS$_NOT_LOADED (4026 decimal) . This service will be added in a future release of OpenVMS on I64.

To work around this problem, you can find the address of the 64-bit signal array in the mechanism array at offset chf$ph_mch_sig64_addr . For example, in C, you can replace the following statement:


status = sys$signal_array_64(mech_array, &sig64_array);

with the following statement:


sig64_array = ((CHFDEF2 *)mech_array)->chf$ph_mch_sig64_addr;

4.29 HP OpenVMS System Analysis Tools Manual

V8.3

The following corrections pertain to the HP OpenVMS System Analysis Tools Manual. This manual was not updated for OpenVMS Version 8.3, but the corrections noted here and the additions described in the HP OpenVMS Version 8.3 New Features and Documentation Overview are included in online help for the SDA utility and in related commands for ANALYZE and System Services logging:

4.29.1 Definitions of Bits in DUMPSTYLE

The following row should replace the last row in Table 2-1:
5 32 0= Write all processes and global pages in a selective dump.
    1= 1= Only write key processes and global pages in a selective dump. This bit is ignored when writing a full dump (bit 0 = 0). This bit should be set only if the priority processes have been correctly set up, as described in HP OpenVMS System Manager's Manual, Volume 2: Tuning, Monitoring, and Complex Systems.

4.29.2 Saving System Dumps

The following paragraphs should be appended to Section 2.2.2:

When a dump is being analyzed, it is useful to have data available that cannot be written to the dump file at the time of the system crash. This data includes the full file specification associated with a file identification and, on I64 systems, the unwind data for images activated in processes.

If the dump is being analyzed on the system where it was originally written, this data can be collected for use in the current SDA session using the COLLECT command. If the dump is being copied for analysis elsewhere, the COPY/COLLECT command may be used to collect the data and append it to the copy being written. If the COPY/COLLECT command is used after a COLLECT command, the data already collected is appended to the dump copy.

By default, a copy of the original dump, as written at the time of the system crash, includes collection. You can use COPY/NOCOLLECT to override this. Conversely, a copy of a dump previously copied by SDA without collection (COPY/NOCOLLECT) does not include collection. You can use COPY/COLLECT to override this.

Copying a dump that already contains an appended collection always includes that collection.

For all file and unwind data to be collected successfully, all disks that were mounted at the time of the system crash should be remounted and accessible to the process running SDA. If SDA is started early during startup to save the contents of the dump (for example, using CLUE$SITE_PROC; see Section 2.2.3), but disks are not mounted until a batch job is run, then the COPY/NOCOLLECT command should be used in the CLUE$SITE_PROC command procedure. Once all disks are mounted, a COPY/COLLECT can be used to save file and/or unwind data.

If the COPY and the COLLECT operations cannot be done as a single step, entering the COLLECT/SAVE command writes the collection to a separate file that can be used later in conjunction with the dump file. A later copy combines the two files.

4.29.3 Invoking SDA When Rebooting the System

In Section 2.2.3, the following should be appended to the end of the paragraph on the CLUE HISTORY command:

You might need to include the /NOCOLLECT qualifier to the COPY command. For more information, see the preceding section for details.

4.29.4 SDA CONTEXT

In Section 2.5, in the first list of the SET PROCESS and SHOW PROCESS commands, the SHOW PROCESS/SYSTEM and SHOW PROCESS/NEXT lines should be juxtaposed, and the following lines should be added to the list:


VALIDATE PROCESS/POOL process-name
VALIDATE PROCESS/POOL/ADDRESS=pcb-address
VALIDATE PROCESS/POOL/INDEX=nn
VALIDATE PROCESS/POOL/NEXT
VALIDATE PROCESS/POOL/SYSTEM

At the end of the section, the following lines should be added to the bottom of the list of SET PROCESS and SHOW PROCESS commands:


VALIDATE PROCESS/POOL process-name
VALIDATE PROCESS/POOL/ADDRESS=pcb-address
VALIDATE PROCESS/POOL/INDEX=nn
VALIDATE PROCESS/POOL/NEXT

4.29.5 SDA Symbol Initiation

In Section 2.6.1.4, the following line should immediately precede the Section 4.29.5 heading:

Symbols can include lowercase letters. Commands that manipulate symbols (such as DEFINE , SHOW SYMBOL , and UNDEFINE ) require such symbols to be within quotes.

4.29.6 ANALYZE

In the Parameters section, Chapter 3, the of the file specifcation description should be as follows:

Name of file that contains the dump you want to analyze. If no file specification is given with an ANALYZE/CRASH_DUMP command, the default is the highest version of SYS$SYSTEM:SYSDUMP.DMP . If this file does not exist, SDA prompts you for a file name. If any field of file specification is given, the remaining fields default to the highest version of SYSDUMP.DMP in your default directory.

The following should be added to the Parameters section:

Collection-file-name

Name of the file to be used by SDA that contains the file ID translation data and/or unwind data.

4.29.7 Crash_Dump

In Chapter 3, in the Format section, filespec should be [ filespec ] (that is, the filespec parameter is now optional).

4.29.8 SDA Commands

In the the Introduction to Chapter 4, FLT should be removed and the following commands added:

COLLECT
SHOW EFI
SHOW VHPT
VALIDATE POOL
VALIDATE PROCESS

4.29.9 Copy Command

In Chapter 4, the following content should be appended to the COPY command description:

When a dump is being analyzed, it is useful to have data available that cannot be written to the dump file at the time of the system crash. This data includes the full file specification associated with a file identification, and, on OpenVMS I64, the unwind data for images activated in processes.

If the dump is being analyzed on the system where it was originally written, this data can be collected for use in the current SDA session using the COLLECT command. If the dump is being copied for analysis elsewhere, the COPY/COLLECT command can be used to collect the data and append it to the copy being written. If the COPY/COLLECT command is used after a COLLECT command, the data already collected is appended to the dump copy.

By default, a copy of the original dump, as written at the time of the system crash, will include collection. You can use COPY/NOCOLLECT to override this. Conversely, a copy of a dump previously copied by SDA without collection (COPY/NOCOLLECT) does not include collection. You can use COPY/COLLECT to override this. Copying a dump that already contains an appended collection always includes that collection.

For all file and unwind data to be collected successfully, all disks that were mounted at the time of the system crash should be remounted and accessible to the process running SDA. If SDA is invoked early on during startup to save the contents of the dump, for example, using CLUE$SITE_PROC (see Section 2.2.3), but disks are not mounted until a batch job is run, then the COPY/NOCOLLECT command should be used in the CLUE$SITE_PROC command procedure. Once all disks are mounted, a COPY/COLLECT can be used to save file and unwind data.

If the COPY and the COLLECT commands cannot be issued as a single step, a COLLECT/SAVE command writes the collection to a separate file that can be used later with the dump file. A later COPY command combines the two files.

4.29.10 DUMP Command

In Chapter 4, the following changes should be made to the DUMP command description:

  • At the end of the format section, /BYTE | /WORD | should appear before /LONGWORD and [/NOSUPPRESS] .
  • The following text should be appended to the description of the range parameter:
    The length of the range must be an exact multiple of the data item size (or of the index array size if /INDEX_ARRAY is specified).
  • The following text should be appended to the description of the /RECORD_SIZE parameter:
    If no record size is given, and the length of the range is not more than 512 bytes, a single record is output containing the range specified, with no record number field. The length of the range must be an exact multiple of the data item size (or of the index array size if /INDEX_ARRAY is specified).

4.29.11 EVALUATE Command

In Chapter 4, the following changes should be made to the EVALUATE command description:

  • In the Format section, [ = filter ] should be added after / [ NO ] SYMBOLS .
  • The /SYMBOLS and /NOSYMBOLS qualifier descriptions should be replaced with the following:
    The default behavior of the EVALUATE command is to display up to five symbols that are known to be equal to the evaluated expression. If /SYMBOLS is specified with no filter, all symbols are listed in alphabetical order. If /NOSYMBOLS is specified, only the hexadecimal and decimal values are displayed. If /SYMBOLS is specified with a filter, only symbols that match the filter are displayed. The filter is a string containing wildcards, such as PCB$* .

4.29.12 MAP Command

In Chapter 4, the following text should be appended to the end of the description section:

On OpenVMS for Integrity servers, the MAP command can also provide additional data for addresses in system space. If the address is determined to be in a code section of an executive loaded image or a resident shareable image, and if the image file is accessible and was linked /TRACEBACK , then the traceback data is used to obtain and display module name and routine name information.

In Chapter 4, the following example should be added to the MAP command description:


11. SDA> EVALUATE 2F0/SYMBOL=PCB*
        Hex = 00000000.000002F0   Decimal = 752        PCB$L_INITIAL_KTB
                                                PCB$L_PCB

This example shows the use of the symbol filter. Only symbols whose value is 2F0 and whose names begin with PCB are displayed.

4.29.13 SET CPU Command

In Chapter 4, the following lines should be appended to the list of SET PROCESS and SHOW PROCESS commands:

VALIDATE PROCESS/POOL process-name
VALIDATE PROCESS/POOL/ADDRESS=pcb-address
VALIDATE PROCESS/POOL/INDEX=nn
VALIDATE PROCESS/POOL/NEXT

4.29.14 SET PROCESS Command

In Chapter 4, the following lines should be appended to the list of SET PROCESS and SHOW PROCESS commands:

VALIDATE PROCESS/POOL process-name
VALIDATE PROCESS/POOL/ADDRESS=pcb-address
VALIDATE PROCESS/POOL/INDEX=nn
VALIDATE PROCESS/POOL/NEXT
VALIDATE PROCESS/POOL/SYSTEM

4.29.15 READ Command

In Chapter 4, the following text should be appended to the end of the description section:

In the description of the directory-spec parameter, SYS$LOADABLE_IMAGES and SYS$LIBRARY should be changed to SYS$LOADABLE_IMAGES , SYS$LIBRARY , and SYS$SYSTEM .

In Table 4-1, footnote 3, the following sentence should be removed:

These are found in SYS$SYSTEM , and are not automatically read in when you issue a READ/EXEC command.

4.29.16 SEARCH Command

The following changes should be made to the SEARCH command description in Chapter 4:

  • The following sentence should be appended to the end of the /LENGTH and /MASK qualifier descriptions:
    This qualifier is ignored for string searches.
  • In the /STEPS qualifier description, the text "or the given string" should be inserted after "expression."
  • At the end of the final sentence of the /STEPS qualifier description, "...for value searches, and a step factor of a byte for string searches" should be added.
  • In the Description section, the text "or string" should be inserted after "value."

4.29.17 SHOW_CALL_FRAME Command

In Chapter 4, the following text should replace the description of the starting-address parameter:

On Alpha:

An expression representing the starting address of the procedure call frame to be displayed. If no value for starting-address is given, the default starting address is the contents of the frame pointer (FP) register of the SDA current process. For a process that uses pthreads, the following SDA command can be used to display the starting addresses for all pthreads:


SDA> pthread thread -o u

On OpenVMS for Integrity servers:

An expression representing one of the following:

  • The invocation context handle of a frame
  • The address of an exception frame. This is equivalent to the SDA command:


    SDA> SHOW CALL_FRAME /EXCEPTION_FRAME=starting-address
    
  • The address of a thread environment block (TEB). For a list of all TEBs for the process, use the following SDA command:


    SDA> pthread thread -o u
    

    If no starting-address is given, the default starting address is the invocation context handle of the current procedure in the SDA current process.

4.29.18 SHOW CLUSTER Command

In Chapter 4, the following changes should be made to the SHOW CLUSTER command description:

In the Format section, "/CIRCUIT=pb-addr |" should be placed before "/CSID."

In the qualifier description for /ADDRESS, "/CSID=csid and /NODE=name" should be replaced with "/CIRCUIT=pb-addr, /CSID=csid, and /NODE=name".

In the qualifier descriptions for /CSID and /NODE, "/CIRCUIT=pb-addr," should be added after "/ADDRESS=n".

The following text should be appended to the Description:

If the qualifier /CIRCUIT=pb-addr is specified, then the SHOW CLUSTER command displays only the information from the specified path block.

4.29.19 SHOW CRASH Command

The following changes should be made to the SHOW CRASH command description in Chapter 4:

The Format section should read, "SHOW CRASH [ /ALL | /CPU = n]".

In the Description section the following should be appended to the second-to-last paragraph:

Unless /ALL is specified, the registers (on Alpha) or exception frame contents (on I64) are omitted from the display for any CPUs with CPUEXIT or DBGCPUEXIT bugchecks.

In the Description section, the phrase "and additionally displays all CPU database addresses in system dumps" should be removed from the final paragraph.

The command in example 3 should be changed to the following:


SDA> SHOW CRASH /ALL

4.29.20 SHOW DUMP Command

In Chapter 4, the following changes should be made to the SHOW DUMP command description:

The Format section should be replaced with the following:


SHOW DUMP [ /ALL
  | /BLOCK [ = m [ { : | ; } n ] ]
  | /COLLECTION [ = { ALL | n } ]
  | /COMPRESSION_MAP [ = m [ : n [ : p ] ] ]
  | /ERROR_LOGS
  | /FILE = { COLLECTION | DUMP }
  | /HEADER
  | /LMB [ = { ALL | n } ]
  | /MEMORY_MAP
  | /SUMMARY ]

In the Description section, the phrase "the memory map, and the file identification, and/or unwind data collection" should replace the phrase "and the memory map".

The following example should be appended to the SHOW DUMP command:


3. SDA> SHOW DUMP/COLLECTION

File and unwind data collection
-------------------------------

Collection start VBN:     0002155B
Collection end VBN:       00022071
Collection block count:   00000B17

  VBN    Blocks>      Contents
-------- -------- ------------------------------
0002155B 000000C1 Unwind data segment 00000001 of _$30$DKB200:[VMS$COMMON.SYSEXE]DCL.EXE;1
0002161C 00000001 Unwind data segment 00000001 of _$30$DKB200:[VMS$COMMON.SYSEXE]USB$UCM_SERVER.EXE;1
0002161D 0000000C Unwind data segment 00000008 of _$30$DKB200:[VMS$COMMON.SYSEXE]USB$UCM_SERVER.EXE;1
.
.
.
0002200F 0000001F Unwind data segment 00000007 of _$30$DKB200:[VMS$COMMON.SYSEXE]LATACP.EXE;1
0002202E 00000006 Unwind data segment 0000000B of _$30$DKB200:[VMS$COMMON.SYSEXE]LATACP.EXE;1
00022034 00000001 Unwind data segment 00000002 of _$30$DKB200:[BISHOP]CMEXEC_LOOP.EXE;1
00022035 00000001 File data for _$30$DKA0:
00022036 0000003B File data for _$30$DKB200:
00022071 00000001 Disk data

This example of the SHOW DUMP/COLLECTION command shows the contents of the file identification and/or unwind data collection appended to a system dump when it was copied with the SDA command COPY/COLLECT. Note that unwind data segments are found only in system dumps from OpenVMS I64 systems.

4.29.21 SHOW PROCESS Command

In Chapter4, the following changes should be made to the SHOW PROCESS command description:

In the Format section:

  • In "{ =P0 | =P1 | =ALL }", "=IMGACT" before "=ALL" should be inserted, and "(D)" should be added to "=ALL".
  • In "[ /BRIEF { /FREE | /UNUSED } |...]", "/CHECK" should be inserted after "/BRIEF".
  • "/UNWIND_TABLE [ =ALL ]" should be changed to "/UNWIND_TABLE [ = { ALL | name } ]".

In the description of qualifier /ALL, "/STATISTICS" should be added to the line "/POOL/HEADER/RING_BUFFER".

The heading and the first paragraph in the description for the /POOL qualifier should read:

/POOL [ = { P0 | P1 | IMGACT | ALL (D) } ]

Displays the dynamic storage pool in the processís P0 (process) region and/or the P1 (control) region and/or the image activatorís reserved pages, or optionally, a range of addresses. The default action is to display all dynamic storage pools.

The following should replace the description for the /UNWIND_TABLE qualifier:

/UNWIND_TABLE [ = { ALL | name } ] (I64 only)

If specified without a keyword, displays the master unwind table for the process. SHOW PROCESS/UNWIND=ALL displays the details of every process unwind descriptor. SHOW PROCESS/UNWIND=name displays the details of every unwind descriptor for the named image(s) (wildcards allowed). To look at unwind data for a specific PC in process space, use SHOW UNWIND address.

If some or all unwind data for an image was not included in the system dump (for example, it was not in the working set of the process at the time of the system crash), a SHOW PROCESS/UNWIND command may fail with a %SDA-W-NOREAD error because the unwind data is inaccessible. Collecting unwind data (see Commands COLLECT and COPY/COLLECT) will not correct this, as the collected unwind data is only used by SHOW UNWIND address and SHOW CALL.

The second bullet under "For I64" should read as follows:

Special purpose registers (PC, PSR, ISR). Note that the PC is the combination of the IP and the slot number from the PSR.

4.29.22 SHOW RESOURCES Command

The following changes should be made to the SHOW RESOURCES command description in Chapter 4:

The following keywords should be added to the /STATUS qualifier:

Keyword Meaning
RM_FORCE Forced tree move
RM_FREEZE Freeze resource tree on this node
RM_INTEREST Remaster due to master having no interest
XVAL_VALID Last value block was long block

4.29.23 SHOW SPINLOCKS Command

The following changes should be made to the SHOW SPINLOCKS command description in Chapter 4:

The Format section should read as follows:


SHOW SPINLOCKS {[name]|/ADDRESS = expression|/INDEX = expression }
                [/OWNED|/DYNAMIC|/STATIC
                |/CACHED_PCB|/MAILBOX|/PCB|/PORT|/PSHARED]
                [{/BRIEF|/COUNTS|/FULL}]

In the description of the name parameter, the phrase "PCB, or cached PCB" should be changed to "PCB, cached PCB, or process-shared."

In the description of the /ADDRESS qualifier, the phrase "PCB, or cached PCB" should be changed to "PCB, cached PCB, or process-shared."

In the description of the /DYNAMIC qualifier, the phrase "PCB, or cached PCB" should be changed to "PCB, cached PCB, or process-shared." The following new qualifier should be added after the /PORT qualifier:

/PSHARED

Displays all process-shared (Pthreads) spinlocks.

In the third paragraph of the description section, the phrase "PCB and cached PCB" should be changed to "PCB, cached PCB, and process-shared."

4.29.24 SHOW MEMORY Command

In Chapter 4,the following changes should be made to the SHOW MEMORY command description:

In the /SLOTS qualifier description, the word "partition" should be "process."

4.29.25 SHOW GCT Command

The following changes should be made to the SHOW GCT command description in Chapter 4:

In the Format section, "[ CHILDREN ] |" should be "[ /CHILDREN ] |," and should be followed by "[ /FULL ] |".

In the Qualifiers section, the /FULL qualifier description should be added after /CHILDREN:

/FULL

When used with /CHILDREN, /OWNER=n, or /TYPE=type, the /FULL qualifier causes SDA to provide a detailed display of each node.

In the /OWNER and /TYPE descriptions, "Provides a detailed display of all nodes" should be replaced by "Displays all nodes".

In the /TYPE description, "CORE," "SOCKET," and "THREAD" should be added (in alphabetical order) to the list of valid types.

4.29.26 SHOW CPU Command

The following should be appended to the SHOW CPU command description in Chapter 4:

  • On I64, the Exception Frame Summary

4.29.27 SHOW SYMBOL Command

The following text should be appended to the symbol-name parameter description:

Symbols that include lowercase letters must be enclosed in quotes.

4.29.28 SHOW UNWIND Command

The Format section should read as follows:

/IMAGE

SHOW UNWIND [address|/ALL|/IMAGE=name]

4.29.29 SHOW SWIS Command

The following changes should be made to the SHOW SWIS command description in Chapter 4:

  • The Format section should be changed to the following:


    SHOW SWIS [/RING_BUFFER [/CPU = (m, n,...)]]
    
  • The description for the /CPU qualifier should be changed to:


    /CPU = ( m, n,...)
    

    When used with /RING_BUFFER, displays only the entries for the specified CPU(s). If only one CPU is specified, the parentheses can be omitted.
  • The final sentence of the Description section should be changed to:
    If you specify /CPU = (m, n) , only the records for the specified CPU(s) are displayed.

4.29.30 CLUE CONFIG Command

The following qualifiers to the CLUE CONFIG command description in Chapter 5:

/CPU

Displays only the part of the system configuration that contains information about the system, memory and CPUs.

/ADAPTER

Displays only the part of the system configuration that contains information about the adapters and devices on the system.

The following sentence should be appended to the Description section:

If no qualifier is specified, the entire system configuration is displayed.

4.29.31 CLUE REGISTER Command

In Chapter 5, the following changes apply to the CLUE REGISTER command description:

The Format section should read as follows:


CLUE REGISTER [/CPU [cpu-id|ALL]
                | /PROCESS[/ADDRESS=n|INDEX=n
                | /IDENTIFICATION=n|process-name|ALL]]

The parameters and qualifiers are the same as those used for the CLUE_CALL_FRAME command.

The following sentence should be appended to the Description section:

If neither /CPU nor /PROCESS is specified, the parameter (CPU-id or process-name) is ignored and the registers for the SDA current process are displayed.

4.29.32 I64 ISD_Labels Index Table

The following table replaces the I64 ISD_Labels Index Table in Chapter 10:

Table 4-5 I64 ISD_Labels Index
Index Name Meaning
0 SDA_CIO$K_FIX Fixup
1 SDA_CIO$K_PROMO_CODE Promote (code)
2 SDA_CIO$K_PROMO_DATA Promote (data)
3 SDA_CIO$K_INIT_CODE Initialization (code)
4 SDA_CIO$K_INIT_DATA Initialization (data)
5 SDA_CIO$K_CODE Code
6 SDA_CIO$K_SHORT_RW Short data (read/write)
7 SDA_CIO$K_SHORT_RO Short data (read only)
8 SDA_CIO$K_RW Data (read/write)
9 SDA_CIO$K_RO Data (read only)
10 SDA_CIO$K_SHORT_DZ Short data (demand zero)
11 SDA_CIO$K_SHORT_TDZ Short data (trailing demand zero)
12 SDA_CIO$K_DZERO Demand zero
13 SDA_CIO$K_TR_DZERO Trailing demand zero

4.29.33 Compiling and Linking an SDA Extension

In Section 10.2.1 Note 2, both instances of "ALPHA$LIBRARY" should be changed to "SYS$LIBRARY."

4.29.34 Debugging an Extension

In the example in Section 10.3, both instances of "alpha$library" should be changed to "sys$library."

4.29.35 Callable Routines Overview

In Section 10.4, "SDA$NEWPAGE" should be changed to "SDA$NEW_PAGE."

The following routines should be added alphabetically to the existing list:

SDA$CBB_BOOLEAN_OPER
SDA$CBB_CLEAR_BIT
SDA$CBB_COPY
SDA$CBB_FFC
SDA$CBB_FFS
SDA$CBB_INIT
SDA$CBB_SET_BIT
SDA$CBB_TEST_BIT
SDA$DELETE_PREFIX
SDA$FID_TO_NAME
SDA$GET_FLAGS

The final paragraph of the section that begins with "So, for example," should be part of the final bullet that begins with, "Some routines expect..."

The following new bullet should be added to the end of the section:

  • The Common Bitmask Block (CBB) routines, SDA$CBB_xxx, are designed for use with local copies of the CBB structures that describe the CPUs in use in a system. The CBB structures are assumed to be at least CBB$K_STATIC_BLOCK bytes in length. The definitions of the various CBB constants and field names used by these routines can be found in CBBDEF.H in SYS$LIBRARY:SYS$LIB_C.TLB.
    The set of routines is not intended to be an exhaustive set of all possible CBB-related operations, but provides those operations known to be needed. They might not work as expected with CBB structures set up for any purpose other than to describe CPUs.

4.29.36 Setting Up the Target System for Connections

In Section 11.3, in the Boot Command description, the phrase "with boot command" should be changed to "with the boot command."

In the paragraph before the SCD Configuration File description, the final sentence should read, "See the Boot Option Maintenance Menu, as described in the HP OpenVMS System Manager's Manual, Volume 1: Essentials.

In Section 11.3, the first bullet in the XDELTA Commands Description should read:

  • n\xxxx\;R

The System Parameters description in Section 11.3 should have the following two bullets appended:

  • BREAKPOINTS
    This parameter is a bitmask that enables existing INI$BRK calls within OpenVMS in the following situations:
    • Bit 0: At the start of INIT
    • Bit 1: At the end of INIT
    • Bit 2: At the point in INIT just prior to starting secondary CPUs
    • Bit 3: If INI$BRK is called from an outer mode
    • Bit 4: Before calling the initialization routine of a newly loaded executive image
    • Bits 5-31: Reserved by HP

    Note

    1. Calling INI$BRK from executive mode when bit 3 of BREAKPOINTS is not set results in process exit, or a SSRVEXCEPT bugcheck (if SYSTEM_CHECK or BUGCHECKFATAL is also set).
    2. Changing BREAKPOINTS from its default value of 3 may allow the security of the system to be compromised, and should only be used with caution.
  • TIME_CONTROL
    This parameter is a bitmask, disabling certain time control functions within OpenVMS:
    • Bit 0: Disables system clock
    • Bit 1: Disables CPU sanity timeouts
    • Bit 2: Disables CPU spinwait timeouts

    When XDELTA or SCD is loaded (bit 1 or bit 15 of boot flags is set), the value of TIME_CONTROL is changed from its default of zero to 6 (disable CPU sanity and CPU spinwait timeouts). This is to prevent these timeouts from occurring when the system is waiting at a breakpoint. If necessary, these settings can be altered using SYSGEN or the DEPOSIT command within XDELTA or SCD. Bit 0 should never be set.

At the end of Section 11.3.2, the following should be added:

The equivalent technique on I64 is as follows: Boot the system with only the SCD flag set (bit 15). When you see that the error has occurred, press Ctrl/P at the console. This action gives control to XDELTA (even though the XDELTA boot flag is not set), and you can now type 1;R. The target kernel will get control and wait for a connection for SCD.

Also, the following new Section 11.3.3 should be added:

The target kernel must have exclusive use of its ethernet device. Some system components, such as DECnet, will not start if the System Code Debugger is loaded. If there are multiple Ethernet devices, and the system is configured to give exclusive access of the SCD Ethernet device to the target kernel, the logical name DBGTK$OVERRIDE should be defined, indicating that the affected system components should start up as normal. The logical name can either be defined systemwide, or in the process where the startup command for the system component will be executed.

In Section 11.11.1, the final sentence of the second paragraph ("To remove symbols...") should be removed.

In Section 11.11.3, the second and third bullets should be removed, and the first bullet ("Access to All Executive Image Symbols") should not be a bullet.

In Section 11.12, the following new paragraph should appear immediately before Example 11-1:

Note that the example displays from Example 11-5 onwards are all taken from an OpenVMS I64 system. On an OpenVMS Alpha system, some of the output is different, but the commands entered are the same on both platforms, with one exception as noted in the accompanying text.

Also in Section 11.12, the references to "V8.2-014" should be changed to "V8.3-003."

Example 11-5 should be replaced with the following:


DBG> connect %node_name TSTSYS
%DEBUG-I-INIBRK, target system interrupted
DBG> show image
 image name                      set    base address         end address

 ERRORLOG                        no     0000000000000000     FFFFFFFFFFFFFFFF
 EXEC_INIT                       no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$ACPI                        no     0000000000000000     FFFFFFFFFFFFFFFF
*SYS$BASE_IMAGE                  yes    0000000000000000     FFFFFFFFFFFFFFFF
 SYS$DKBTDRIVER                  no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$DKBTDRIVER                  no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$DKBTDRIVER                  no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$EGBTDRIVER                  no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$OPDRIVER                    no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$PKMBTDRIVER                 no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$PKMBTDRIVER                 no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$PKMBTDRIVER                 no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$PLATFORM_SUPPORT            no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$PUBLIC_VECTORS              no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$SRBTDRIVER                  no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_DEBUG                    no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_PRIMITIVES               no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_SYNCHRONIZATION          no     0000000000000000     FFFFFFFFFFFFFFFF

 total images: 18
DBG>
Example 11-7 should be replaced with the following:


DBG> set image system_debug
%DEBUG-I-DYNLNGSET, setting language IMACRO
DBG> show module
module name                     symbols   language   size

AUX_TARGET                      no        C             0
BUFSRV_TARGET                   no        C             0
BUGCHECK_CODES                  no        BLISS         0
C_TEST_ROUTINES                 no        C             0
LIB$$UNWIND_WEAK                no        BLISS         0
LIB$EF                          no        IMACRO        0
LIB$MALLOC                      no        C             0
LIB$MALLOC_64                   no        C             0
LINMGR_TARGET                   no        C             0
OBJMGR                          no        C             0
PLUMGR                          no        C             0
POOL                            no        C             0
PROTOMGR_TARGET                 no        C             0
SOCMGR                          no        C             0
SYS$DOINIT                      yes       IMACRO   122526
TMRMGR_TARGET                   no        C             0

total modules: 16
DBG> set module c_test_routines
DBG> show module c_test_routines
module name                     symbols    size

C_TEST_ROUTINES                 yes        5672

total C modules: 1
DBG> set language c
DBG> show symbol test_c_code*
routine C_TEST_ROUTINES\test_c_code
routine C_TEST_ROUTINES\test_c_code2
routine C_TEST_ROUTINES\test_c_code3
routine C_TEST_ROUTINES\test_c_code4
routine C_TEST_ROUTINES\test_c_code5
DBG> set break test_c_code

In Example 11-8, the final line should be replaced with the following:


113:     x = c_test_array[0];

Example 11-9 should be replaced with the following:


DBG> Set Mode Screen; Set Step Nosource

- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
   105:     c_test_array[3] = test;
   106:     return c_test_array[23];
   107: }
   108: void test_c_code(void)
   109: {
   110:     int x,y;
   111:     __int64 x64,y64;
   112:
-> 113:     x = c_test_array[0];
   114:     y = c_test_array[1];
   115:     x64 = c_test_array[2];
   116:     y64 = c_test_array[3];
   117:     c_test_array[14] = test_c_code2(x64+y64,x+y,x64+x,&y64);
   118:     test_c_code4();
   119:     return;
   120: }
- OUT -output-------------------------------------------------------------------












- PROMPT -error-program-prompt--------------------------------------------------





DBG>

In the paragraph immediately preceding Example 11-10, the reference to line 46 should be replaced with line 93.

Example 11-10 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    80: void test_c_code4(void)
    81: {
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
    93:         subrtnCount = test_c_code3(subrtnCount);
    94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
- OUT -output-------------------------------------------------------------------












- PROMPT -error-program-prompt--------------------------------------------------



DBG> Scroll/Up
DBG> set break %line 93
DBG>

Example 11-11 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
->  93:         subrtnCount = test_c_code3(subrtnCount);
    94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
- OUT -output-------------------------------------------------------------------
break at C_TEST_ROUTINES\test_c_code3\%LINE 93











- PROMPT -error-program-prompt--------------------------------------------------


DBG> Scroll/Up
DBG> set break %line 93
DBG> go
DBG>

In the paragraph immediately preceding Example 11-12, the reference to line 147 should be replaced with line 94, and the reference to line 146 with line 93.

Example 11-12 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
->  93:         subrtnCount = test_c_code3(subrtnCount);
    94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
- OUT -output-------------------------------------------------------------------
break at C_TEST_ROUTINES\test_c_code3\%LINE 93
break at C_TEST_ROUTINES\test_c_code3\%LINE 93

In the paragraph immediately preceding Example 11-13, the following statement should be added before the closing parenthesis:

The suffix _CODE0 is appended if the executive image is sliced.

Example 11-13 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
->  93:         subrtnCount = test_c_code3(subrtnCount);
    94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
- OUT -output-------------------------------------------------------------------
C_TEST_ROUTINES\test_c_code3\subrtnCount:       8
 module name     routine name     line           rel PC           abs PC
*C_TEST_ROUTINES test_c_code3       93       0000000000000DC0 FFFFFFFF800BAFC0
*C_TEST_ROUTINES test_c_code3       93       0000000000000DE0 FFFFFFFF800BAFE0
*C_TEST_ROUTINES test_c_code2      104       0000000000000F40 FFFFFFFF800BB140
*C_TEST_ROUTINES test_c_code       117       00000000000010B0 FFFFFFFF800BB2B0
                 XDT$INIT                    00000000000015C0 FFFFFFFF880955C0
*SYS$DOINIT      EXE$INITIALIZE   1973       0000000000000360 FFFFFFFF88094360
 SHARE$EXEC_INIT_CODE0                       000000000005C240 FFFFFFFF803BB640
 SHARE$EXEC_INIT_CODE0                       0000000000057F20 FFFFFFFF803B7320
 SHARE$EXEC_INIT_CODE0                       0000000000047850 FFFFFFFF803A6C50
 SHARE$EXEC_INIT_CODE0                       0000000000042E90 FFFFFFFF803A2290
- PROMPT -error-program-prompt--------------------------------------------------
DBG> set break %line 93
DBG> go
DBG> Step
DBG> examine subrtnCount
DBG> show calls
DBG>

In the paragraph immediately preceding Example 11-14, the reference to line 147 should be replaced with line 94, and the reference to line 146 with line 93.

Example 11-14 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
    93:         subrtnCount = test_c_code3(subrtnCount);
->  94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
   105:     c_test_array[3] = test;
- OUT -output-------------------------------------------------------------------
 module name     routine name     line           rel PC           abs PC
*C_TEST_ROUTINES test_c_code3       93       0000000000000DC0 FFFFFFFF800BAFC0
*C_TEST_ROUTINES test_c_code3       93       0000000000000DE0 FFFFFFFF800BAFE0
*C_TEST_ROUTINES test_c_code2      104       0000000000000F40 FFFFFFFF800BB140
*C_TEST_ROUTINES test_c_code       117       00000000000010B0 FFFFFFFF800BB2B0
                 XDT$INIT                    00000000000015C0 FFFFFFFF880955C0
*SYS$DOINIT      EXE$INITIALIZE   1973       0000000000000360 FFFFFFFF88094360
 SHARE$EXEC_INIT_CODE0                       000000000005C240 FFFFFFFF803BB640
 SHARE$EXEC_INIT_CODE0                       0000000000057F20 FFFFFFFF803B7320
 SHARE$EXEC_INIT_CODE0                       0000000000047850 FFFFFFFF803A6C50
 SHARE$EXEC_INIT_CODE0                       0000000000042E90 FFFFFFFF803A2290
stepped to C_TEST_ROUTINES\test_c_code3\%LINE 94
- PROMPT -error-program-prompt--------------------------------------------------
DBG> Step
DBG> examine subrtnCount
DBG> show calls
DBG> cancel break/all
DBG> go
DBG>

In the STEP/RETURN paragraph preceding Example 11-15, the phrase "on Alpha, or the R8 register on I64" should follow "R0 register".

Example 11-15 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
    93:         subrtnCount = test_c_code3(subrtnCount);
->  94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
   105:     c_test_array[3] = test;
- OUT -output-------------------------------------------------------------------
*C_TEST_ROUTINES test_c_code3       93       0000000000000DE0 FFFFFFFF800BAFE0
*C_TEST_ROUTINES test_c_code2      104       0000000000000F40 FFFFFFFF800BB140
*C_TEST_ROUTINES test_c_code       117       00000000000010B0 FFFFFFFF800BB2B0
                 XDT$INIT                    00000000000015C0 FFFFFFFF880955C0
*SYS$DOINIT      EXE$INITIALIZE   1973       0000000000000360 FFFFFFFF88094360
 SHARE$EXEC_INIT_CODE0                       000000000005C240 FFFFFFFF803BB640
 SHARE$EXEC_INIT_CODE0                       0000000000057F20 FFFFFFFF803B7320
 SHARE$EXEC_INIT_CODE0                       0000000000047850 FFFFFFFF803A6C50
 SHARE$EXEC_INIT_CODE0                       0000000000042E90 FFFFFFFF803A2290
stepped to C_TEST_ROUTINES\test_c_code3\%LINE 94
stepped on return from C_TEST_ROUTINES\test_c_code3\%LINE 94 to C_TEST_ROUTINES -
\test_c_code3\%LINE 94+17
C_TEST_ROUTINES\test_c_code3\%R8:       0
- PROMPT -error-program-prompt--------------------------------------------------
DBG> show calls
DBG> cancel break/all
DBG> go
DBG> step/return
DBG> examine r8
DBG>

In the first paragraph preceding Example 11-16, the phrase "for address 80002010" should be removed, and the phrase "this image or module" replaced with "INI$BRK."

The current Example 11-16 should be removed; the current Example 11-17 now becomes Example 11-16 and is replaced by the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
    90: {
    91:     subrtnCount = subrtnCount - 1;
    92:     if (subrtnCount != 0)
    93:         subrtnCount = test_c_code3(subrtnCount);
->  94:     return subrtnCount;
    95: }
    96: int test_c_code2(__int64 in64,int in32, __int64 test, __int64* pVar)
    97: {
    98:     c_test_array[5] = in64;
    99:     c_test_array[6] = in32;
   100:     if (c_test_array[9] > 0)
   101:         *pVar =  (*pVar + c_test_array[17]) & c_test_array[9];
   102:     else
   103:         *pVar = (*pVar + c_test_array[17]);
   104:     c_test_array[7] = test_c_code3(10);
   105:     c_test_array[3] = test;
- OUT -output-------------------------------------------------------------------
 SYS$UTC_SERVICES                no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$VM                          no     0000000000000000     FFFFFFFFFFFFFFFF
 SYS$XFCACHE_MON                 no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSDEVICE                       no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSGETSYI                       no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSLDR_DYN                      no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSLICENSE                      no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_DEBUG                    yes    0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_PRIMITIVES               no     0000000000000000     FFFFFFFFFFFFFFFF
 SYSTEM_SYNCHRONIZATION          no     0000000000000000     FFFFFFFFFFFFFFFF

 total images: 53
- PROMPT -error-program-prompt--------------------------------------------------
DBG> go
%DEBUG-I-INIBRK, target system interrupted
%DEBUG-I-DYNIMGSET, setting image SYS$BASE_IMAGE %DEBUG-W-SCRNOSRCLIN, No source line -
for address: FFFFFFFF80000310
DBG> show image
DBG> go

4.29.37 OpenVMS Alpha System Dump Debugger

The title to Chapter 12 should now read "OpenVMS System Dump Debugger," and the "Alpha Only" note should be removed.

The first paragraph in Section 12.4 should be replaced with the following:

If SDD cannot find one of the images through this search path, a warning message is displayed. SDD will continue initialization as long as it finds at least two images. If SDD cannot find the SYS$BASE_IMAGE and SYS$PUBLIC_VECTORS files, which are the OpenVMS operating system's main image files, an error message is displayed and the debugger exits.

In Section 12.10, Steps 1 and 2 should be replaced with the following:

  1. 1. Follow the steps in Section 11.12, up to and including Example 11-9 (Using The Set Mode Screen Command).
  2. 2. Enter the following OpenVMS Debugger commands:


    DBG> set break test_c_code5
    DBG> go
    DBG> deposit k=0
    DBG> go
    
The following new paragraph should immediately precede Example 12-1:

Note that the example displays from Example 12-1 onwards are all taken from an OpenVMS I64 system. On an OpenVMS Alpha system, some of the output is different, but the commands entered are the same on both platforms.

In Example 12-1, the reference to "Alpha" should change to "I64," and "V7.2-019" to "V8.3-003".

Example 12-3 should be replaced with the following:


DBG> Set Mode Screen; Set Step Nosource

- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    67:
    68:     /* We want some global data cells */
    69: volatile __int64 c_test_array[34];
    70:
    71: void test_c_code5(int *k)
    72: {
    73:     int i;
    74:     char str[100];
    75:     for(i=0;i<100;i++)
    76:       str[i]= 'a';
    77:     str[99]=0;
->  78:     *k = 9;
    79: }
    80: void test_c_code4(void)
    81: {
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
- OUT -output-------------------------------------------------------------------












- PROMPT -error-program-prompt--------------------------------------------------



%DEBUG-I-SCRNOTORIGSRC, original version of source file not found for display in SRC
        file used is SYS$COMMON:[SYSHLP.EXAMPLES]C_TEST_ROUTINES.C;1
DBG>

Example 12-4 should be replaced with the following:


- SRC: module C_TEST_ROUTINES -scroll-source------------------------------------
    67:
    68:     /* We want some global data cells */
    69: volatile __int64 c_test_array[34];
    70:
    71: void test_c_code5(int *k)
    72: {
    73:     int i;
    74:     char str[100];
    75:     for(i=0;i<100;i++)
    76:       str[i]= 'a';
    77:     str[99]=0;
->  78:     *k = 9;
    79: }
    80: void test_c_code4(void)
    81: {
    82:     int i,k;
    83:     for(k=0;k<1000;k++)
    84:       {
    85:          test_c_code5(&i);
    86:       }
    87:     return;
    88: }
    89: int test_c_code3(int subrtnCount)
- OUT -output-------------------------------------------------------------------
C_TEST_ROUTINES\test_c_code5\i: 100
C_TEST_ROUTINES\test_c_code5\k: 0
 module name     routine name     line           rel PC           abs PC
*C_TEST_ROUTINES test_c_code5       78       0000000000000CD0 FFFFFFFF800BAED0
*C_TEST_ROUTINES test_c_code4       85       0000000000000D60 FFFFFFFF800BAF60
*C_TEST_ROUTINES test_c_code       118       00000000000010D0 FFFFFFFF800BB2D0
                 XDT$INIT                    00000000000015C0 FFFFFFFF880955C0
*SYS$DOINIT      EXE$INITIALIZE   1973       0000000000000360 FFFFFFFF88094360
 SHARE$EXEC_INIT_CODE0                       000000000005C240 FFFFFFFF803BB640
 SHARE$EXEC_INIT_CODE0                       0000000000057F20 FFFFFFFF803B7320
 SHARE$EXEC_INIT_CODE0                       0000000000047850 FFFFFFFF803A6C50
 SHARE$EXEC_INIT_CODE0                       0000000000042E90 FFFFFFFF803A2290
- PROMPT -error-program-prompt--------------------------------------------------

%DEBUG-I-SCRNOTORIGSRC, original version of source file not found for display in SRC
        file used is SYS$COMMON:[SYSHLP.EXAMPLES]C_TEST_ROUTINES.C;1
DBG> examine i,k
DBG> show calls
DBG>

4.29.38 OpenVMS Alpha Watchpoint Utility

On the Part III page, the content in the "Alpha Only" note should be replaced with the following:

This utility runs on OpenVMS Alpha systems only.

On the first page of Chapter 13, the content in the "Alpha Only" note should be replaced with the following:

This utility runs on OpenVMS Alpha systems only.

4.29.39 SET PROCESS/LOG Command

In the format section, ARGS should be replaced with ARGUMENTS.

In description of parameter FLAGS, ARGS should be replaced with ARGUMENTS.

Note that these changes also affect the HP OpenVMS DCL Dictionary: N--Z.


Previous Next Contents