Mailing-List: contact new-httpd-help@apache.org; run by ezmlm Delivered-To: mailing list new-httpd@apache.org Received: (qmail 37499 invoked from network); 22 Feb 2000 20:52:48 -0000 Received: from e23.nc.us.ibm.com (32.97.136.229) by locus.apache.org with SMTP; 22 Feb 2000 20:52:48 -0000 Received: from southrelay02.raleigh.ibm.com (southrelay02.raleigh.ibm.com [9.37.3.209]) by e23.nc.us.ibm.com (8.9.3/8.9.3) with ESMTP id PAA14988 for ; Tue, 22 Feb 2000 15:37:17 -0600 From: trawick@us.ibm.com Received: from d54mta05.raleigh.ibm.com (d54mta05.raleigh.ibm.com [9.67.228.37]) by southrelay02.raleigh.ibm.com (8.8.8m2/NCO v2.06) with SMTP id PAA39760 for ; Tue, 22 Feb 2000 15:53:02 -0500 Received: by d54mta05.raleigh.ibm.com(Lotus SMTP MTA v4.6.5 (863.2 5-20-1999)) id 8525688D.0072B6D2 ; Tue, 22 Feb 2000 15:52:59 -0500 X-Lotus-FromDomain: IBMUS To: new-httpd@apache.org Message-ID: <8525688D.0072B5DC.00@d54mta05.raleigh.ibm.com> Date: Tue, 22 Feb 2000 15:52:56 -0500 Subject: need ap_initialize() before create_process()->...->lock_inter()- >semop() Mime-Version: 1.0 Content-type: text/plain; charset=us-ascii Content-Disposition: inline I think this is ancient news (is there a working archive somewhere?), but I can't verify without opening my mouth... 2.0 pre-forked hangs at startup. Basically, ap_initialize() needs to get called before create_process(), since create_process() passes op_on structure to semop() to get a lock, but op_on isn't initialized until ap_initialize() calls setup_lock(). Here is a slight rearrangement to main() which calls ap_initialize() earlier... *** src/main/http_main-old.c Tue Feb 22 14:56:50 2000 --- src/main/http_main.c Tue Feb 22 14:58:13 2000 *************** *** 290,310 **** int configtestonly = 0; const char *confname = SERVER_CONFIG_FILE; const char *def_server_root = HTTPD_ROOT; ! process_rec *process = create_process(argc, (const char **)argv); server_rec *server_conf; ! ap_context_t *pglobal = process->pool; ! ap_context_t *pconf = process->pconf; ap_context_t *plog; /* Pool of log streams, reset _after_ each read of conf */ ap_context_t *ptemp; /* Pool for temporary config stuff, reset often */ ap_context_t *pcommands; /* Pool for -C and -c switches */ ap_server_argv0 = process->short_name; ap_util_uri_init(); g_pHookPool=pglobal; - - ap_initialize(); ap_setup_prelinked_modules(process); --- 290,312 ---- int configtestonly = 0; const char *confname = SERVER_CONFIG_FILE; const char *def_server_root = HTTPD_ROOT; ! process_rec *process; server_rec *server_conf; ! ap_context_t *pglobal; ! ap_context_t *pconf; ap_context_t *plog; /* Pool of log streams, reset _after_ each read of conf */ ap_context_t *ptemp; /* Pool for temporary config stuff, reset often */ ap_context_t *pcommands; /* Pool for -C and -c switches */ + ap_initialize(); + process = create_process(argc, (const char **)argv); + pglobal = process->pool; + pconf = process->pconf; ap_server_argv0 = process->short_name; ap_util_uri_init(); g_pHookPool=pglobal; ap_setup_prelinked_modules(process);