Kbase P18871: System error 1124 - what is happening internally?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/10/2008 |
|
Status: Unverified
GOAL:
System error 1124 - what is happening internally?
FIX:
Progress implemented distinct error messages many years ago to eliminate
confusion as to the cause of an 1124 error. To do this, we added
additional error messages that would be output around the 1124 to
narrow down the actual cause of the problem.
Following is a summary of the messages generated as part of checking
dbkeys during normal processing:
Function: bkread - reading a block from disk
check is done after read (bkaddr before)
Before the read is done, a bkaddr call is made which will cause a
check of the buffer before the read is made.
After reading the Database file the dbkey is checked and if invalid a
series of three messages are generated. The first says we are
retrying the operation then after ten tries, the second and third
messages appear. If these messages are generated it means the block
returned by the OS appears to be corrupt. This does NOT prove that
the data on disk is corrupt - the OS might have returned the wrong
data.
read wrong dbkey at offset <offset>%l in file <file>%s %r found
<dbkey>%D, expected <dbkey>%D, retrying. (1152)
Corrupt block detected when reading from database. (4229)
wrong dbkey in block. Found <dbkey>%D, should be <dbkey2>%D (1124)
When reading BI files a single message is generated immediately.
Again this means the block returned by the OS appears to be corrupt
it may or may not be the case that the actual file on disk is damaged.
wrong BI blk, read <dbkey>%D from <dbkey>%D (1119)
Function: bkwrite - write a block to disk
check is done before and after write
When writing to Database files a check is made before the write and
after
the write. The same error messages are generated so there is no way
to tell if a buffer was corrupted by the write operation itself but
this is very unlikely. If these messages were generated then the
buffer was corrupt either as part of some other processing (after it
was read) or while it was being written.
Corrupt block detected when attempting to write a block. (4230)
bkwrite: bktbl dbk <dbk>%D not equal to bkbuf dbk <dbk>%D.(645)
When writing to BI files a check is made before the write and after
the write. The same error messages are generated so there is no way
to tell if a buffer was corrupted by the write operation itself but
this is very unlikely.
Corrupt block detected when attempting to write a block. (4230)
wrong BI blk, write <dbkey>%D into <dbkey>%D (1120)
Function: bmMarkModified - buffer manager mark block as changed
check is done first
Whenever a Database block is modified in the buffer pool the block is
marked as modified by the buffer manager and a check is made that the
block has a valid dbkey. The first message indicates that an error
occurred modifying the block, the second provides the specific
details. If this sequence of messages is generated something happened
in memory that caused the block to become corrupt. Here are the
messages:
Corrupt block detected when attempting to modify a block.
wrong dbkey in block. Found <dbkey>%D, should be <dbkey2>%D (1124)
Function: bmReleaseBuffer - decrement use count to release buffer
check is done before release
When a buffer is released by the buffer manager a check is done just
before it is released to verify that the block contains a valid dbkey.
If this check fails it means the block was corrupted sometime after
it was read in. It is very rare that this would fail since most
likely bmMarkModified would have already checked things.
Corrupt block detected when attempting to release a buffer.(4232)
wrong dbkey in block. Found <dbkey>%D, should be <dbkey2>%D (1124)
Note that 4232 is not generated in V9 releases up through V9.1A - this
is bug: 20000321-002.