You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2004/05/10 21:47:59 UTC

DO NOT REPLY [Bug 20462] - Potential fix in ssl_engine_init.c-->stopping or restarting Apache 2.0.46 under Windows causes a crash if a module logs in its cleanup routines

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=20462>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=20462

Potential fix in ssl_engine_init.c-->stopping or restarting Apache 2.0.46 under Windows causes a crash if a module logs in its cleanup routines

zvieger@textfactory.co.at changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WORKSFORME



------- Additional Comments From zvieger@textfactory.co.at  2004-05-10 19:47 -------
Those lines (ssl_callback_DelSessionCacheEntry) are meant as guard - but the 
condition never comes true when Apache is terminated with SSL-Childs still 
connected.



    if (!(s = (server_rec *)SSL_CTX_get_app_data(ctx))) {
        return; /* on server shutdown Apache is already gone */
    }

It runs into logging to an invalid filehandle. Dirty fix in apr_file_write.

    if (thefile->filehand == INVALID_HANDLE_VALUE)
	{
		return APR_SUCCESS;
	}

The problem is actually a race condition in libeay32::doall_util_fn
    a=lh->b[i]

left side ! NULL and right side NULL in while loop - uups

I lack the literacy to fix it prooperly


See stack trace (W2K/SP4/Intel8.0 with VC71 integration 2.0.49:

 	libapr.dll!apr_thread_mutex_lock(apr_thread_mutex_t * 
mutex=0x00468e28)  Zeile 83 + 0x11	C
 	libapr.dll!apr_file_write(apr_file_t * thefile=0x00468db0, const void * 
buf=0x0006b91c, unsigned int * nbytes=0x0006b8f4)  Zeile 279	C
 	libapr.dll!apr_file_puts(const char * str=0x0006b91c, apr_file_t * 
thefile=0x00468db0)  Zeile 403 + 0x1c	C
 	libhttpd.dll!log_error_core(const char * const file=0x6fd2673c, int 
line=0x00000062, int level=0x00000004, int status=0x000afc86, const server_rec 
* s=0x004c1640, const request_rec * r=0x00000000, apr_pool_t * pool=0x00000000, 
const char * const fmt=0x6fd267d0, char * args=0x0006fcc4)  Zeile 534	C
 	libhttpd.dll!ap_log_error(const char * const file=0x6fd2673c, int 
line=0x00000062, int level=0x00000004, int status=0x000afc86, const server_rec 
* s=0x004c1640, const char * const fmt=0x6fd267d0)  Zeile 552 + 0x42	C
 	mod_ssl.so!ssl_mutex_on(server_rec * s=0x004c1640)  Zeile 98 + 0x2
	C
 	mod_ssl.so!ssl_scache_dbm_remove(server_rec * s=0x004c1640, unsigned 
char * id=0x005259c0, int idlen=0x00000020)  Zeile 273 + 0xc	C
 	mod_ssl.so!ssl_scache_remove(server_rec * s=0x004c1640, unsigned char * 
id=0x005259c0, int idlen=0x00000020)  Zeile 120 + 0x1c	C
 	mod_ssl.so!ssl_callback_DelSessionCacheEntry(ssl_ctx_st * 
ctx=0x004fd198, ssl_session_st * session=0x00525978)  Zeile 1708 + 0x1c	C
 	ssleay32.dll!timeout(ssl_session_st * s=0x00525978, timeout_param_st * 
p=0x0006fda8)  Zeile 663 + 0x1c	C
 	ssleay32.dll!timeout_LHASH_DOALL_ARG(const void * arg1=0x00525978, void 
* arg2=0x0006fda8)  Zeile 668 + 0x3e	C
>	libeay32.dll!doall_util_fn(lhash_st * lh=0x004fd338, int 
use_arg=0x00000001, void (const void *, const void *)* func=0x00000000, void 
(const void *, void *, const void *, void *)* func_arg=0x00b9d046, void * 
arg=0x0006fda8)  Zeile 287 + 0x17	C
 	libeay32.dll!lh_doall_arg(lhash_st * lh=0x004fd338, void (const void *, 
void *, const void *, void *)* func=0x00b9d046, void * arg=0x0006fda8)  Zeile 
302 + 0x2c	C
 	ssleay32.dll!SSL_CTX_flush_sessions(ssl_ctx_st * s=0x004fd198, long 
t=0x00000000)  Zeile 682 + 0x1d	C
 	ssleay32.dll!SSL_CTX_free(ssl_ctx_st * a=0x004fd198)  Zeile 1435 + 0x16
	C
 	mod_ssl.so!ssl_init_ctx_cleanup(modssl_ctx_t * mctx=0x004c2e48)  Zeile 
1171 + 0x19	C
 	mod_ssl.so!ssl_init_ctx_cleanup_server(modssl_ctx_t * mctx=0x004c2e48)  
Zeile 1187 + 0xc	C
 	mod_ssl.so!ssl_init_ModuleKill(void * data=0x0043c180)  Zeile 1226 + 0xf
	C
 	libapr.dll!run_cleanups(cleanup_t * * cref=0x0043a2f8)  Zeile 1957 + 
0x12	C
 	libapr.dll!apr_pool_destroy(apr_pool_t * pool=0x0043a2e8)  Zeile 734 + 
0xf	C
 	libapr.dll!apr_pool_destroy(apr_pool_t * pool=0x004382b8)  Zeile 727
	C
 	Apache.exe!destroy_and_exit_process(process_rec * process=0x00438348, 
int process_exit_value=0x00000000)  Zeile 209	C
 	Apache.exe!main(int argc=0x00000005, const char * const * 
argv=0x00437d00)  Zeile 624 + 0x19	C
 	Apache.exe!mainCRTStartup()  Zeile 398 + 0x11	C

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org