25594 error
Posted in 1999
I have been receiving the following error in a 4gl program that prints
shipping extract labels in a grocery warehouse.
-25594 Shared Memory client failed to alert OnLine server for
service.
Memory corruption usually causes this problem, or the operating
system
cannot perform a semaphore operation. Report the problem to the
OnLine
database administrator. The DBA might need to restart
INFORMIX-OnLine
Dynamic Server or perform a reboot of the entire system.
The error is trapped within the 4gl program but never shows itself in
the online log. It causes the program to hang as if it is stuck in a
loop. It's description leads me to believe that it would cause the
engine to panic and shutdown if it occurred. Not only does it not
affect the engine, but, we just restart the 4gl process and it runs to
completion without a bounce of the engine. We are running 7.24.UC5 with
the x8 patch on AIX 4.3.2 on a 12 way IBM S70. I used onmode -I 25594
to try to capture the error and cause an assert failure, but the engine
never flinched when the error occurred. Proof to me that the engine is
never seeing the error. The software vendor made the following
recommendations :
1) The problem is most likely caused by the communication between
Informix
and Unix. The RESIDENT variable in the onconfig_prd is set to
"0" while the
KAIOON variable is set to "1". The result is asynchronous I/O
between Unix
and Informix. If the correct patches and drivers are not
installed to support
asynchronous I/O then the setting for KAIOON should be set to
"0" to match
the RESIDENT variable. Otherwise it is possible for the memory
swap to
cause an overwrite of the address space, resulting in the
returned error code
from Informix. It is felt that this would be the best course of
action.
2) Another possible solution is to change the SHMADD variable in the
$INFORMIXDIR/etc/onconfig_prd file. The setting could be
increased from
33KB to 45KB. This would probably be the second best course of
action.
3) The application code is not the root cause of the shared memory
failure
error returned from Informix, however, it may be possible to
prevent the error
from occurring through programming. The error could possibly be
prevented by
adding code in the program which will set the read of the tables
by Informix to
'cursor stability'. This change would have a negative impact on
the speed of the
label printing program and would not be recommended.
The RESIDENT option is not supported on AIX and KAIO is setup and
running on the box. As for the SHMADD idea, this machine not only never
adds to the virtual portion, it barely touches what it has allocated to
begin with (in dire need of tuning i know). And the last option really
isn't an option as this machine runs like a dog already. Does anyone
have any other ideas on this?