So, here is a patch to fix the issue with the GNU build attached. An
essential part of NLM dump (unfixed) shows the problem:

   DATA:00012BA0 = config_log_module
   DATA:00012C20 = asis_module
   DATA:00012CA0 = imap_module
   DATA:00012DA0 = setenvif_module
---
   DATA:00013DF0 = ap_server_post_read_config
   DATA:00013E20 = ap_server_config_defines
   DATA:00013E60 = ap_coredump_dir
   DATA:00015E60 = ap_lock_fname
   DATA:00015E80 = ap_bind_address
   DATA:00015F60 = ap_server_pre_read_config
Data Size:               00013220 (     78368)

All records with offset outside of data size boundary are causing this:

   SERVER-5.00-1554: Invalid public record offset in load file.
   Module APACHEC.NLM NOT loaded

I'm using the ApacheCore.imp as export file when building apachec.nlm
and suppose it's correct bahaviour...

Pavel

P.S.: An enhancement of the nlmconv utility is much accurate than "fix",
that's what I exactly meant.

Pavel Novy wrote:

 > Tested those new changes on build with the GNU tools and it seems that
 > there is a problem with new ApacheCore.imp file. It's not a new one - a
 > nlmconv utility used here for NLM linking is not able to allocate a
 > physical space for uninitialized variables, so if any of such symbols is
 > exported (nlmconv doesn't produce any warning), it's not possible to
 > load a NLM module, then. The core module (apachec.nlm) is affected and
 > the only way to fix this is to change those uninitialized variables to
 > initialized (yes, we also could ask for fix in the nlmconv utility, but
 > it's much harder). I will take a look which variable(s) is(are) causing
 > this and will let you know.
 >
 > Pavel


--- original/src/main/http_main.c       Fri Dec 28 06:12:03 2001
+++ modified/src/main/http_main.c       Thu Jan  3 05:25:20 2002
@@ -247,9 +247,9 @@
 API_VAR_EXPORT int ap_excess_requests_per_child=0;
 API_VAR_EXPORT char *ap_pid_fname=NULL;
 API_VAR_EXPORT char *ap_scoreboard_fname=NULL;
-API_VAR_EXPORT char *ap_lock_fname;
+API_VAR_EXPORT char *ap_lock_fname=NULL;
 API_VAR_EXPORT char *ap_server_argv0=NULL;
-API_VAR_EXPORT struct in_addr ap_bind_address;
+API_VAR_EXPORT struct in_addr ap_bind_address={};
 API_VAR_EXPORT int ap_daemons_to_start=0;
 API_VAR_EXPORT int ap_daemons_min_free=0;
 API_VAR_EXPORT int ap_daemons_max_free=0;
@@ -309,11 +309,11 @@
 
 API_VAR_EXPORT char ap_server_root[MAX_STRING_LEN]="";
 API_VAR_EXPORT char ap_server_confname[MAX_STRING_LEN]="";
-API_VAR_EXPORT char ap_coredump_dir[MAX_STRING_LEN];
+API_VAR_EXPORT char ap_coredump_dir[MAX_STRING_LEN]="";
 
-API_VAR_EXPORT array_header *ap_server_pre_read_config;
-API_VAR_EXPORT array_header *ap_server_post_read_config;
-API_VAR_EXPORT array_header *ap_server_config_defines;
+API_VAR_EXPORT array_header *ap_server_pre_read_config=NULL;
+API_VAR_EXPORT array_header *ap_server_post_read_config=NULL;
+API_VAR_EXPORT array_header *ap_server_config_defines=NULL;
 
 /* *Non*-shared http_main globals... */
 

Reply via email to