return to PRS Technologies website

AFDEBUG


If you set the environment variable AFDEBUG before you initialize Informix, the engine will suspend processing-rather than crash-during many errors. This is useful because it allows you to run certain diagnostic commands like oncheck and onstat before bringing the engine down. Here is an example of how to do this when initializing Informix:

AFDEBUG=1; export AFDEBUG oninit

Note: Because of the improvements for assertion failure handling in 7.3x, setting AFDEBUG is not really necessary; Informix will continue running and capture errors anyway. In the rare cases when an assertion failure crashes Informix, however, AFDEBUG will still work to suspend Informix processing. This allows you to capture error information before bringing down the Informix engine.

Ron M. Flannery


You can set AFDEBUG=1, then start the instance. This will cause the engine to hang on a crash.Run another process in the background (or cron) which wakes up and looks for 'hung' instances (It will have an appropriate message in the log file).You can then take appropriate action.

Glenn Travis


Version 7.3 adds another event handler that traps all of those fatal crashes that the event alarm handler could not handle. The problem was that the event alarms were triggered by the thread that crashed, for certain kinds of crashes it could not trap itself. I beat them up about that for over a year and the result is the monitoring thread in V7.30+ that watches for another thread to go down. In addition 7.30 will usually not go down in these cases only the one affected oninit will crash and the engine will stay up (a side effect of the monitor thread is that it can clean things up and determine if it is safe to continue or if the engine needs to be brought down). Also, if you have any version before 7.21 there were many trapable crashes that were simply not caught.

Art S. Kagel


It is possible to set an environment variable AFDEBUG=1 which will cause the RDBMS engine to hang instead of crashing on an abnormal abort. The purpose of this is to allow Informix to dial in and examine the instance while it is still up. If you have not organised with Informix to do this, you may find the utility of this limited. There is also another debug facility called sqlidebug which dumps out information to disk files. I have never used these without instruction from an Informix SE.

Peter Tashkoff