I hope this answer does not get too late (my backlog is inmense).
Are you running by chance Apache SSL? If this is the case, I went
through the same, but actually found the problem and reported it to
Ben Laurie. I said to him:
Hi Ben,
The following configuration SISEGVs in the child after correctly
servicing the request:
Apache SSL 1.0.3a
SSLeay 0.5.1
Linux 1.3.88 with libc 5.3.9 (everything is ELF)
The bug is in apache_ssl2.h. The definition for os_conn_close reads:
#define os_conn_close(conn) { SSL_CTX *ctx; int fd; \
fd=SSL_get_fd(conn->client.ssl); \
ctx=SSL_get_SSL_CTX(conn->client.ssl); \
SSL_free(conn->client.ssl); \
SSL_CTX_free(ctx); \
pclosef(conn->pool,fd); }
Freeing ctx is unnecessary. The ctx is already freed by SSL_free.
The second free attempt SIGSEGVs. It seems that ctx was simply a copy
of the pointer kept at client.ssl.
He told me it was a problem with the way contexts were dealt in later
versions of SSLeay.
All the best,
Julio