httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From traw...@us.ibm.com
Subject need ap_initialize() before create_process()->...->lock_inter()- >semop()
Date Tue, 22 Feb 2000 20:52:56 GMT


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);




Mime
View raw message