[Date Prev][Date Next] [Chronological] [Thread] [Top]

Need signal handler for SIGSEGV (ITS#370)



Full_Name: Steve McCarthy
Version: 1.2.6
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (207.66.210.194)


We have been using OpenLDAP for a while, and have found ways of making it
crash.

There are signal handlers to catch all kinds of signals, good and bad, which
ensure
for an orderly shutdown in case of trouble.

But if you get a SEGV, slapd dies hard and fast, and any deferred writes to the
database do not happen, which can leave the underlying database in an
inconsistent 
state.  

We have also seen that after a SIGSEGV, many times slapd will run for a short
while 
before getting another segmentation violation, and we are then forced to do a
manual rebuild of the data from the database.

It appears that we can do an orderly shutdown for slapd by adding one line to 
servers/slapd/main.c:
(void) SIGNAL( SIGSEGV, slap_set_shutdown );

Thanks, 
Steve McCarthy