As you begin the decision-making process, follow these general guidelines from this point:
IF THE SYMPTOM IS A FAILURE TO PROCESS, refer to section a??H1a??Process Hangsa??.
IF THE SYMPTOM IS A MUPIP INTEG ERROR REPORT, refer to section a??I1a??MUPIP INTEG Errorsa??. If you are investigating a particular error message, refer to the "MUPIP INTEG errors" table in that section.
IF THE SYMPTOM IS A GT.M RUN-TIME ERROR REPORT, refer to section R1. Remember the GT.M Message and Recovery Procedures Manual may provide insights.
To facilitate use of the material as a troubleshooting guide, the text in these sections refers to other sections with alphanumeric designators. Each alphanumeric section describes suggested actions to employ in handling a particular situation.
Is the system "hung?" If so, consider the following additional questions:
Determine whether any database file used by the application has "Cache Freeze" set.
Determine whether the database files used by the application are accessible for reading.
Determine whether the database files used by the application are accessible for writing.
Set pipe="pipe" Open pipe:(command="/bin/csh")::pipe Use pipe Set reg="",cmd=$ztrnlnm("gtm_dist")_"/mupip dumpfhead " For Set reg=$View("GVNEXT",reg) Quit:""=reg Do . Set reg(reg)="",file=$view("GVFILE",reg) . Write cmd,file,! . For i=1:1 read x(i):1 Quit:(x(i)["sgmnt_data.freeze")!$ZEOF!'$Test . Set pid=+$Piece(x(i),"=",2) . Set:pid frozen(reg)=pid Close pipe Set g="^%",$etrap="Write $ZStatus Set $ecode="""" Quit" Write !,"Attempting read access" If $Data(^%) Set reg=$View("REGION",g) Do read1 For Set g=$Order(@g) Quit:""=g Set reg=$View("REGION",g) Do:""=(reg(reg)) read1 Set reg="" Write !!,"Attempting write access" For Set reg=$Order(reg(reg)) Quit:""=reg Do write1 Write ! Quit read1 Write !,"Read in region: ",reg," of ",g," successful" If ($Data(@g)#2) Set reg(reg)=g Else Set reg(reg)=$Query(@g) Quit write1 If $Data(frozen(reg)) Write !,"Region ",reg," Frozen by PID ",frozen(reg) Quit If ""=reg(reg) Write !,"Region ",reg," has no data" Quit Write !,"Write to region: ",reg Set x=$Get(@reg(reg),"Yndef") Set @reg(reg)=1,@reg(reg)=x If "Yndef"=x ZKill @ref(ref); assumption that a value of Yndef is very unlikely Write " of ",reg(reg)," successful" Quit
![]() | Note |
---|---|
If you have a Global Directory mapping globals to multiple files, you may create an alternative Global Directory using different mappings to those same files. Such mapping prevents the test program(s) from touching the "real" data. |
Mapping Production region Test region ----------------------------------------------- A to M $DEFAULT SCRATCH N to Z SCRATCH $DEFAULT
Process 1 Process 2 --------- --------- LOCK ^A LOCK ^B LOCK +^B LOCK +^A
Process 1 Process 2 Process 3 --------- --------- --------- LOCK ^A LOCK ^B LOCK ^C LOCK +^B LOCK +^C LOCK +^A
for quit:$$NEW quit NEW() lock ^X(0) set ^X(0)=^X(0)+1 quit $$STORE(^X(0)) STORE(x) lock +^X(x):10 if set ^X(x)=name_"^"_bal lock quit $TEST
This uses a timeout on the LOCK of ^X(x) to cause a retry of NEW.
In addition to the LOCK command, the M JOB, OPEN, and READ commands can contribute to deadlocks.
Process 1 Process 2 --------- --------- LOCK ^A OPEN "MSA0:" OPEN "/dev/nrst0" OPEN "MSA0:" OPEN "/dev/nrst0" LOCK +^A
Process 1 Process 2 --------- --------- LOCK ^A READ x LOCK ^A
for quit:$$UPD quit UPD() set x=^ACCT(acct) do EDITACCT lock ^ACCT(acct) if x=^ACCT(acct) set ^ACCT(acct)=y else write !,"Update conflicta??Please Reenter" lock QUIT $TEST
MUPIP INTEG Error Messages | |||
---|---|---|---|
NATURE |
MNEMONIC |
ERROR MESSAGE |
SECTION |
B T B I I |
BSIZTOOLARGE BUFFLUFAILED DBBADFREEBLKCTR DBBADKYNM DBBADNSUB |
ffff Block larger than specified maximum size. Error flushing buffers from rrrr for database file ffff. Free blocks counter in file header: nnnn appears incorrect, should be mmmm. Bad key name. Bad numeric subscript. |
O6 I7 I3 K1 K1 |
D I D D D |
DBBADPNTR DBBDBALLOC DBBFSTAT DBBNPNTR DBBPLMGT2K |
Bad pointer value in directory. Block doubly allocated. Block busy/free status unknown (local bitmap corrupted). Bit map block number as pointer. Blocks per local map is greater than 2K. |
K4 K3 M1 K4 I3 |
D D I I A |
DBBPLMLT512 DBBPLNOT512 DBBSIZMN DBBSIZMX DBBSIZZRO |
Blocks per local map is less than 512. Blocks per local map is not a multiple of 512. Block too small. Block larger than file block size. Block size equals zero. |
I3 I3 O1 O1 I3 |
T I I I A |
DBBTUWRNG DBCMPBAD DBCMPNZRO DBCOMPTOOLRG DBCREINCOMP |
The blocks-to-upgrade file-header field is incorrect. Expected nnnn, found mmmm. Compression count not maximal. First record of block has nonzero compression count. Record has too large compression count. Header indicates database file creation was interrupted before completion. |
H2 K6 O1 O2 I3 |
I T A D A |
DBDATAMX DBFGTBC DBFLCORRP DBFSTBC DBFSTHEAD |
Record too large. File size larger than block count would indicate. Header indicates database file is corrupt. File size smaller than block count would indicate. File smaller than database header. |
O2 I4 I8 I4 I3 |
I A D A I |
DBGTDBMAX DBHEADINV DBINCLVL DBINCRVER DBINVGBL |
Key larger than database maximum. Header size not valid for database. Block at incorrect level. Incorrect version of GT.M database. Invalid mixing of global names. |
K7 I3 O1 I2 K3 |
I I I I I |
DBKEYGTIND DBKEYMN DBKEYMX DBKEYORD DBKGTALLW |
Key greater than index key. Key too short. Key too long. Keys out of order. Key larger than maximum allowed length. |
K2 K1 K1 K2 K1 |
B D I B I |
DBLOCMBINC DBLRCINVSZ DBLTSIBL DBLVLINC DBMAXNRSUBS |
Local bit map incorrect. Last record of block has invalid size. Keys less than sibling's index key. Local bitmap block level incorrect. Maximum number of subscripts exceeded. |
M2 K5 K2 M1 K1 |
B B B B B |
DBMBMINCFRE DBMBPFLDIS DBMBPFLDLBM DBMBPFLINT DBMBPFRDLBM |
Master bit map incorrectly asserts this local map has free space. Master bit map shows this map full, in disagreement with both disk and INTEG result. Master bit map shows this map full, agreeing with disk local map. Master bit map shows this map full, agreeing with MUPIP INTEG. Master bit map shows this map has space, agreeing with disk local map. |
M1 M1 M1 M1 M1 |
B B B B T |
DBMBPFRINT DBMBPINCFL DBMBSIZMN DBMBSIZMX DBMBTNSIZMX |
Master bit map shows this map has space, agreeing with MUPIP INTEG. Master bit map incorrectly marks this local map full. Map block too small. Map block too large. Map block transaction number too large. |
M1 M1 M2 M2 I6 |
B D B A A |
DBMRKBUSY DBMRKFREE DBNONUMSUBS DBNOREGION DBNOTGDS |
Block incorrectly marked busy. Block incorrectly marked free. Key contains a numeric form of subscript in a global defined to collate all subscripts as strings. None of the database regions accessible. Unrecognized database file format. |
M1 M1 K1 I6 I3 |
A I D D D |
DBNOTMLTP DBNULCOL DBPTRMX DBPTRNOTPOS DBRBNLBMN |
Block size not a multiple of 512 bytes. NULL collation representation differs from the database file header setting. Block pointer larger than file maximum. Block pointer negative. Root block number is a local bit tmap number. |
K1 K1 K4 K4 K4 |
D D T D D |
DBRBNNEG DBRBNTOOLRG DBRDONLY DBREADBM DBRLEVLTONE |
Root block number negative. Root block number greater than last block number in file. Database file ffff read only. Read error on bit map. Root level less than one. |
K4 K4 I6 H7 O1 |
D I I S S |
DBRLEVTOOHI DBRSIZMN DBRSIZMX DBSPANCHUNKORD DBSPANGLOINCMP |
Root level higher than maximum. Physical record too small. Physical record too large. Chunk of nnnn blocks is out of order. Spanning node is missing. Block no nnnn of spanning node is missing. |
O1 O2 O2 O5 O5 |
D A A T T |
DBSTARCMP DBSVBNMIN DBSZGT64K DBTNLTCTN DBTNNEQ |
Last record of block has nonzero compression count. Start VBN smaller than possible. Block size is greater than 64K. Current tn and early tn are not equal. Cannot reset transaction number for this region. |
K5 I3 I4 I6 I4 |
T A T A A |
DBTNRESET DBTNTOOLG DBTTLBLK0 DBUNDACCMT FREEZE |
Transaction numbers greater than the current transaction were found. Total blocks equal zero. Block transaction number too large. Cannot determine access method; trying with BG. Database for region rrrr is already frozen, not INTEGing |
I6 I6 I6 I6 I6 |
A B I A |
MUSTANDALONE NOGTCMDB NULSUBSC REGFILENOTFOUND |
Could not get exclusive access to rrrr. INTEG does not support operation on GT.CM database region. Null subscripts are not allowed for database file: rrrr. Database file ffff corresponding to region rrrr cannot be found. |
I6 I5 K1 I6 |
IF YOU SUSPECT A VERSION MISMATCH PROBLEM, refer to section I2.
IF YOU SUSPECT A DISK HARDWARE PROBLEM, refer to section H7.
However, if the access method should be MM, use MUPIP SET ACCESS_METHOD=MM to correct the database.
These error messages are created by operator actions performed with DSE.
![]() | Caution |
---|---|
Using the DSE command CHANGE FILEHEADER CORRUPT=TRUE is very dangerous. If the DSE session EXITs before issuing a CHANGE FILEHEADER CORRUPT=FALSE, the database becomes entirely useless. |
salvage.m is a utility that removes all incorrectly marked busy blocks from the specified region. During execution it displays the DSE commands that it will execute and aborts execution when it encounters an error. It dumps the zwrite formatted content of blocks incorrectly marked busy to a file called <region>_db.zwr. Upon completion, it sets the abandoned_kills and kill_in_prog flags in the database fileheader to false. Click on to download salvage.m program. You can also download salvage.m from http://tinco.pair.com/bhaskar/gtm/doc/books/ao/UNIX_manual/downloadables/salvage.m.
Steps to run the salvage utility are as follows:
Perform an argumentless MUPIP RUNDOWN before running this utility.
Ensure that there are no INTEG errors other than the incorrectly marked busy block errors.
Run
$gtm_dist/mumps -r ^salvage
.Specify the region name. If no region is specified, the utility assumes DEFAULT.
If the utility reports a DSE error, fix that error and run the salvage utility again.
After completing repairs with the salvage utility, open the <REGION>_db.zwr file and examine its contents. If there is a need to recover the data from the incorrectly marked busy blocks, perform a MUPIP LOAD <REGION>_db.zwr to load that data back to the database.
The following example shows how to salvage a damaged spanning node in ^mypoem.
Integ of region DEFAULT Block:Offset Level %GTM-E-DBSPANGLOINCMP, 7:10 0 Spanning node is missing. Block no 3 of spanning node is missing Directory Path: 1:10, 2:10 Path: 4:31, 7:10 Spanning Node ^mypoem(#SPAN1) is suspect. %GTM-E-DBKEYGTIND, 7:10 0 Key greater than index key Directory Path: 1:10, 2:10 Path: 4:31, 7:10 Keys from ^mypoem(#SPAN48) to ^mypoem(#SPAN3*) are suspect. %GTM-E-DBSPANCHUNKORD, 3:10 0 Chunk of 1 blocks is out of order Directory Path: 1:10, 2:10 Path: 4:3D, 3:10 Spanning Node Chunk ^mypoem(#SPAN4) is suspect. Total error count from integ: 3 Type Blocks Records % Used Adjacent Directory 2 2 5.468 NA Index 1 4 13.476 1 Data 4 5 76.562 4 Free 93 NA NA NA Total 100 11 NA 5 [Spanning Nodes:2 ; Blocks:3] %GTM-E-INTEGERRS, Database integrity errors
Confirm whether you have determined the spanning range of the node:
Use DSE to find the spanned nodes:
DSE> find -key=^mypoem(#SPAN2) Key found in block 6. Directory path Path--blk:off 1:10, 2:10, Global tree path Path--blk:off 4:25, 6:10, DSE> find -key=^mypoem(#SPAN3) Key not found, would be in block 7. Directory path Path--blk:off 1:10, 2:10, Global tree path Path--blk:off 4:31, 7:10, DSE> find -key=^mypoem(#SPAN4) Key found in block 3. Directory path Path--blk:off 1:10, 2:10, Global tree path Path--blk:off 4:3D, 3:10, DSE> f -k=^mypoem(#SPAN5) Key not found, would be in block 3. Directory path Path--blk:off 1:10, 2:10, Global tree path Path--blk:off 4:3D, 3:10,
Dump all the blocks in ZWRITE format to see what can be salvaged.
DSE> open -file=mypoem.txt DSE> dump -block=6 -zwr 1 ZWR records written. DSE> dump -block=7 -zwr 1 ZWR records written. DSE> dump -block=3 -zwr 1 ZWR records written. DSE> close Closing output file: mypoem.txt $ cat mypoem.txt ; DSE EXTRACT ; ZWR $ze(^mypoem,0,480)="Half a league, half a league,Half a league onward,All in the valley of Death Rode the six hundred. Forward, the Light Brigade! Charge for the guns he said: Into the valley of Death Rode the six hundred. Forward, the Light Brigade! Was there a man dismayed? Not tho the soldiers knew Some one had blundered: Theirs not to make reply, Theirs not to reason why, Theirs but to do and die: Into the valley of Death Rode the six hundred. Cannon to right of them, Cannon to left of " $ze(^mypoem,22080,480)="them, Cannon in front of them Volleyed and thundered; Stormed at with shot and shell, Boldly they rode and well, Into the jaws of Death, Into the mouth of Hell Rode the six hundred. Flashed all their sabres bare, Flashed as they turned in air Sabring the gunners there, Charging an army while All the world wondered: Plunged in the battery-smoke Right thro the line they broke; Cossack and Russian Reeled from the sabre-stroke Shattered and sundered. Then they rode back, but no" $ze(^mypoem,960,468)="t Not the six hundred. Cannon to right of them, Cannon to left of them, Cannon behind them Volleyed and thundered; Stormed at with shot and shell, While horse and hero fell, They that had fought so well Came thro the jaws of Death, Back from the mouth of Hell, All that was left of them, Left of six hundred. When can their glory fade? O the wild charge they made! All the world wondered. Honour the charge they made! Honour the Light Brigade, Noble six hundred!"
Fix the starting position in the $ZEXTRACT statement:
$ze(^mypoem,480,480)="them, Cannon in front of them Volleyed and thundered; Stormed at with shot and shell, Boldly they rode and well, Into the jaws of Death, Into the mouth of Hell Rode the six hundred. Flashed all their sabres bare, Flashed as they turned in air Sabring the gunners there, Charging an army while All the world wondered: Plunged in the battery-smoke Right thro the line they broke; Cossack and Russian Reeled from the sabre-stroke Shattered and sundered. Then they rode back, but no"
GTM>kill ^mypoem GTM>write ^mypoem %GTM-E-GVUNDEF, Global variable undefined: ^mypoem
$ mupip load -format=zwr mypoem.txt ; DSE EXTRACT ; ZWR Beginning LOAD at record number: 3 LOAD TOTAL Key Cnt: 3 Max Subsc Len: 8 Max Data Len: 480 Last LOAD record number: 5 $ gtm GTM>w ^mypoem Half a league, half a league,Half a league onward,All in the valley of Death Rode the six hundred. Forward, the Light Brigade! Charge for the guns he said: Into the valley of Death Rode the six hundred. Forward, the Light Brigade! Was there a man dismayed? Not tho the soldiers knew Some one had blundered: Theirs not to make reply, Theirs not to reason why, Theirs but to do and die: Into the valley of Death Rode the six hundred. Cannon to right of them, Cannon to left of them, Cannon in front of them Volleyed and thundered; Stormed at with shot and shell, Boldly they rode and well, Into the jaws of Death, Into the mouth of Hell Rode the six hundred. Flashed all their sabres bare, Flashed as they turned in air Sabring the gunners there, Charging an army while All the world wondered: Plunged in the battery-smoke Right thro the line they broke; Cossack and Russian Reeled from the sabre-stroke Shattered and sundered. Then they rode back, but not Not the six hundred. Cannon to right of them, Cannon to left of them, Cannon behind them Volleyed and thundered; Stormed at with shot and shell, While horse and hero fell, They that had fought so well Came thro the jaws of Death, Back from the mouth of Hell, All that was left of them, Left of six hundred. When can their glory fade? O the wild charge they made! All the world wondered. Honour the charge they made! Honour the Light Brigade, Noble six hundred!
.
Most run-time errors are related to the application and its environment. However, some errors reflect the inability of a process to properly deal with a database. Some errors of this type are also, or only, generated by the GT.M utility programs.
For descriptions of individual errors, refer to the GT.M Message and Recovery Procedure Reference Manual.
IF YOU CANNOT REPRODUCE SUCH ERRORS WITH ANOTHER PROCESS PERFORMING THE SAME TASK, or with an appropriately directed MUPIP INTEG, they were most likely reported by a damaged process. In this case, refer to section P1.
The following table lists run-time errors, alphabetically by mnemonic, each with a section reference for further information.
Run-Time Error Messages Identifying Potential System Problems | ||
---|---|---|
ERROR MNEMONIC |
ERROR MESSAGE TEXT |
SECTION |
BADDVER BITMAPSBAD BTFAIL CCPINTQUE CRITRESET |
Incorrect database version vvv Database bitmaps are incorrect The database block table is corrupt Interlock failure accessing Cluster Control Program queue The critical section crash count for rrr region has been incremented |
I2 M1 R3 R7 I8 |
DBCCERR DBCRPT DBFILERR DBNOFILEP DBNOTGDS |
Interlock instruction failure in critical mechanism for region rrr Database is flagged corrupt Error with database file No database file has been successfully opened Unrecognized database file format |
R7 I8 I5 I5 I5 |
DBOPNERR DBRDERR FORCEDHALT GBLDIRACC GBLOFLOW |
Error opening database file Cannot read database file after opening Image HALTed by MUPIP STOP Global Directory access failed, cannot perform database functions Database segment is full |
I5 I5 R4 I5 R5 |
GVKILLFAIL GVORDERFAIL GVPUTFAIL GVQUERYFAIL GVRUNDOWN |
Global variable KILL failed. Failure code: cccc Global variable $ORDER or $NEXT function failed. Failure code: cccc Global variable put failed. Failure code: cccc Global variable $QUERY function failed. Failure code: cccc Error during global database rundown |
R2 R2 R2 R2 I5 |
GDINVALID GTMCHECK GVDATAFAIL GVDIRECT GVGETFAIL |
Unrecognized Global Directory format: fff Internal GT.M errora??report to FIS Global variable $DATA function failed. Failure code: cccc Global variable name could not be found in global directory Global variable retrieval failed. Failure code: cccc |
I5 R6 R2 I5 R2 |
GVZPREVFAIL MUFILRNDWNFL UNKNOWNFOREX TOTALBLKMAX WCFAIL |
Global variable $ZPREVIOUS function failed. Failure code: cccc File rundown failed Process halted by a forced exit from a source other than MUPIP Extension exceeds maximum total blocks, not extending The database cache is corrupt |
R2 I5 R4 R5 R3 |
Run-Time Database Restart Codes | |||
---|---|---|---|
FAIL CODE |
RUN INTEG |
DESCRIPTION |
SECTION |
* In the last retry may indicate a process problem | |||
A B C D E |
x x x x - |
Special case of code C. Key too large to be correct. Record unaligned: properly formatted record header did not appear where expected. Record too small to be correct. History overrun prevents validation of a block. |
O2 K1 O2 O2 R3 |
F G H I J |
- x x x x |
Not currently used. Cache record modified while in use by the transaction. Development of a new version of a block encountered a likely concurrency conflict. Level on a child does not show it to be a direct descendent of its parent. Block requested outside of file. |
- R3 R3 O2 O2 |
K L M N O |
- - x - - |
Cache control problem encountered or suspected. Conflicting update of a block took priority. Error during commit that the database logic does not handle. Not currently used. Before image was lost prior to its transfer to the journal buffer. |
R3 R3 P1 - R3 |
P Q R S T |
- x x - - |
Not currently used. Shared memory interlock failed. Critical section reset (probably by DSE). Attempt to increase the level beyond current maximum. Commit blocked by flush. |
- R7 R5 R8 R3 |
U V W X Y |
x - - x x |
Cache record unstable while in use by the transaction. Read-only process could not find room to work. Not currently used. Bitmap block header invalid. Record offset outside of block bounds. |
R3 R9 - M2 O2 |
Z a b c d |
x - - - - |
Block did not contain record predicted by the index. Predicted bitmap preempted by another update. History overrun prevents validation of a bitmap. Bitmap cache record modified while in use by the transaction. Not currently used. |
O2 R3 R3 R3 - |
e f g h i |
x - - - - |
Attempt to read a block outside the bounds of the database. Conflicting update took priority on a non-isolated global and a block split requires a TP_RESTART. The number of conflicting updates on non-isolated global nodes exceed an acceptable level and requires a TP_RESTART. Journal state or before image changed. Not currently used. |
R3 R3 R3 R3 - |
j k l m n |
- - - - - |
Backup or integ lost before image block. Cache control state mismatch. Phase two commit held off block acquisition. Inhibit KILLs held off commit. Trigger definition changed during trigger processing. |
R3 R3 P1 P1 P1 |
o p q r s |
- - - - - |
Online rollback requires a restart. Online rollback requires a restart. Tentative block removed by MUPIP REORG -TRUNCATE. Root block moved by MUPIP REORG. Instance freeze blocked commit. |
R3 R3 R3 R3 H3 |
y z |
x - |
Root block unreliable. Currently not used. |
K4 - |