On Tue, Apr 13, 1999, Derek Smith wrote:

> Unless I'm not undestanding you correctly, due to the fact that the process doesn't 
>core
> dump at all all I could do was include a truss of the session.  The truss output was 
>rather
> long so I've scanned through it and found the entries of one of the child processes
> segfaulting.  The output is below.  If you need the whole truss file reply to me 
>seperately
> with an e-mail address to send it directly to you.
> 
>[...]
> 10703:  open64("/usr/local/etc/apache-ssl/logs/ssl_scache.pag", O_RDONLY) = 5
> 10703:  open64("/usr/local/etc/apache-ssl/logs/ssl_scache.dir", O_RDONLY) = 6
> 10703:  fstat64(6, 0x08047A18)                          = 0
> 10703:  llseek(6, 0, SEEK_SET)                          = 0
> 10703:  read(6, "01\0\0\0\0\0\0\0\0\0\0\0".., 4096)     = 4096
> 10703:  llseek(5, 0, SEEK_SET)                          = 0
> 10703:  read(5, "\f\0E003 [03 K03E402D402".., 1024)     = 1024
> 10703:  close(6)                                        = 0
> 10703:  close(5)                                        = 0
> 10703:  fcntl(25, F_SETLKW, 0xDFDC6C9C)                 = 0
> 10703:      Incurred fault #6, FLTBOUNDS  %pc = 0xDFD5065C
> 10703:        siginfo: SIGSEGV SEGV_MAPERR addr=0x0000029C
> 10703:      Received signal #11, SIGSEGV [caught]
> 10703:        siginfo: SIGSEGV SEGV_MAPERR addr=0x0000029C
>[...]

Ok, I've found the piece of source who corresponds to this fcntl() call. It's
in ssl_engine_mutex.c:

|   :
| static struct flock unlock_it;
|   :
| BOOL ssl_mutex_file_release(void)
| {
|     int rc = -1;
| #ifndef WIN32
|     SSLModConfigRec *mc = myModConfig();
| 
| #ifdef SSL_USE_FCNTL
|     unlock_it.l_whence = SEEK_SET; /* from current point */
|     unlock_it.l_start  = 0;        /* -"- */
|     unlock_it.l_len    = 0;        /* until end of file */
|     unlock_it.l_type   = F_UNLCK;  /* unlock */
|     unlock_it.l_pid    = 0;        /* pid not actually interesting */
| 
|     rc = fcntl(mc->nMutexFD, F_SETLKW, &unlock_it);

The segfault occurs with the unlock_it variable. But I've no clue why.  At
least the code is correct AFAIK.  Please try to find out why this causes the
segfault on your platform. As a workaround you can try to force mod_ssl to use
SSL_USE_FLOCK when flock() is available.  Just patch the mod_ssl.h header for
this.
                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com
______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl)  www.engelschall.com/sw/mod_ssl/
Official Support Mailing List               [EMAIL PROTECTED]
Automated List Manager                       [EMAIL PROTECTED]

Reply via email to