Jeff Trawick wrote:
> 
> jean-frederic clere <[EMAIL PROTECTED]> writes:
> 
> > Hi,
> >
> > I have detected that the variable log_hash of mod_log_config is not initialized
> > correctly. It causes a core on Solaris...
> 
> just curious, plz verify...

I have:
++++
$ mdb httpd core                                                                
Loading modules: [ ]                                                            
$C                                                                            
ffbefa38 find_entry+0xa8(0, d5fd0, 1, 10aa80, 0, ff199f58)                      
ffbefab8 apr_hash_set+0x30(0, d5fd0, 1, 10aa80, 81010100, ff00)                 
ffbefb20 mod_log_config.so`ap_register_log_handler+0x6c(e1340, d5fd0, 25768, 0, 
33ac0, 33b60)                                                                   
ffbefb88 http_pre_config+0x60(e1340, ff4a8, 1014c0, e1340, 1014c0, 0)           
ffbefbe8 ap_run_pre_config+0x80(e1340, ff4a8, 1014c0, d8840, 0, 0)              
ffbefc50 main+0x3c4(1, ffbefd54, ffbefd5c, d4400, 0, 0)                         
ffbefcf0 _start+0xb8(0, 0, 0, 0, 0, 0)                                          
+++

> 
> I guess http_pre_config() is calling ap_register_log_handler() before
> log_pre_config() is called, thus the core dump because
> ap_register_log_handler() references the hash allocated by
> log_pre_config()?

Yes, as above!

> 
> Could we instead create the hash in register_hooks() (just before we
> register the optional function) and dispense with the multiple places
> where the hash could be created?

Yes, If I have got it right register_hooks() is the very first routine called.
And the patch is more easy!

> 
> Thanks,
> 
> Jeff
> 
> --
> Jeff Trawick | [EMAIL PROTECTED] | PGP public key at web site:
>        http://www.geocities.com/SiliconValley/Park/9289/
>              Born in Roswell... married an alien...
+++ NEW PATCH +++
Index: mod_log_config.c                                                         
===================================================================             
RCS file: /home/cvs/apache/httpd-2.0/modules/loggers/mod_log_config.c,v         
retrieving revision 1.54                                                        
diff -u -r1.54 mod_log_config.c                                                 
--- mod_log_config.c  2001/04/18 21:06:07     1.54                              
+++ mod_log_config.c  2001/04/20 15:16:43                                       
@@ -1155,7 +1155,6 @@                                                           
 {                                                                              
     static APR_OPTIONAL_FN_TYPE(ap_register_log_handler) *log_pfn_register;    
                                                                                
-    log_hash = apr_hash_make(p);                                               
     log_pfn_register = APR_RETRIEVE_OPTIONAL_FN(ap_register_log_handler);      
                                                                                
     if (log_pfn_register) {                                                    
@@ -1190,6 +1189,7 @@                                                           
                                                                                
 static void register_hooks(apr_pool_t *p)                                      
 {                                                                              
+    log_hash = apr_hash_make(p);                                               
     ap_hook_pre_config(log_pre_config,NULL,NULL,APR_HOOK_REALLY_FIRST);        
     ap_hook_child_init(init_child,NULL,NULL,APR_HOOK_MIDDLE);                  
     ap_hook_open_logs(init_config_log,NULL,NULL,APR_HOOK_MIDDLE);              
+++ NEW PATCH +++

Reply via email to