PANIC-crashes with INFORMIX-ONLINE
Posted in 1997
Topics: High Availability & Replication, Storage & Space Management, Stored Procedures & SPL, Error Codes & Troubleshooting, Server Administration, Data Types & Schema Design, Triggers, Constraints & Referential Integrity, Logging & Checkpoints
I'm posting this in behalf of one of our partners. Please reply to
me (matthias.apitz@softcon.de) and Schneider@HRZ.Uni-Dortmund.De.
Thx in advance.
matthias
--
We observed several PANIC-crashes with INFORMIX-ONLINE
Version 7.12C1X2 on SNI's Reliant UNIX 5.43.
The error messages and the restart protocol (in online.log)
were like this:
21:32:42 Checkpoint Completed: duration was 0 seconds.
21:38:51 Pool = 0x2267e010, Pool name = 12, Blkhdr = 0x22682bdc
21:38:51 Block magic is 24, expecting 24
21:38:51 Possible memory block trailer corruption
21:38:51 mtshpool.c, line 2549, thread 36, proc id 16201,
Condition Failed (CHECK_ALLOC_BLOCK), In (mt_shm_free)
Thread(36, sqlexec, 0, 3).
21:38:51 PANIC: Attempting to bring system down
Thu Feb 6 21:39:23 1997
21:39:23 DR: DRAUTO is 0 (Off)
21:39:24 INFORMIX-OnLine Initialized -- Shared Memory Initialized.
21:39:24 Physical Recovery Started.
21:39:24 Physical Recovery Complete: 0 Pages Restored.
21:39:24 Logical Recovery Started.
21:39:27 Logical Recovery Complete. 0 Committed, 0 Rolled Back, 0 Open, 0 Bad Locks
21:39:27 Dataskip is now OFF for all dbspaces
21:39:27 On-Line Mode
21:39:27 Checkpoint Completed: duration was 0 seconds.
Up to now in all cases the both values "Black magic"
and "expecting" were absolutely identical (here = 24).
The following script served as a "reliable crash-trigger":
select d02bnr, d02bg from d02ben where d02bnr < 19960000 ;
I started the script in the dbaccess-dialog-environment
and the command "isql - crashtest" in a ksh,
both with the same result.
To produce a crash, I had to start this select-command twice.
The first run is ok. But starting it again immediately after
finishing the first run - to display the first hits again -
results in a crash.
The script behaved this way on two different databases
(in different dbspaces) with absolutely different data
(but the same table-structure).
I varied the script and the data and found, that with a reduced
comparing limit (199600) the very same script runs absolutely save.
But increasing to 1996000 results in a crash as well. The variable
d02bnr is defined as varchar(12,0), but it is filled only with pure
numbers (fixed-length strings with leading zeros). SQL does an
"implicit type conversion" to compare the string with the integer.
When I used a string instead, INFORMIX didn't crash.
This was save:
select d02bnr, d02bg from d02ben where d02bnr < "19960000" ;
I created a new table - a twin in the same dbspace with identical
structure but slightly different names for key-variables and indexes.
The table was filled with the same data, but INFORMIX didn't crash -
under no circumstances.
I played the game with
INFORMIX-ONLINE V7.12.UC1X2,
Reliant UNIX 5.43 B0045,
RM600 3/640 R4000 (SNI-mips-machine).
Any ideas?
Feb 7 1997
Schneider@HRZ.Uni-Dortmund.De