You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by "Ralf S. Engelschall" <rs...@engelschall.com> on 1998/06/11 11:50:01 UTC

OK, DSO problems found! (FYI)

[Personal mail to Doug related to mod_perl/DSO, but perhaps some others have
suggestions at least how to to the ap_init_modules() correctly (i.e. only the
stuff of the added module should be done, not all) and perhaps someone knows
why TypeConfig has to be before LoadModule directives (after it it is
ignored)]

Ok, Doug, I've now found the DSO problems:

It's an error in Apache's mod_so.c (the bootstrapping module for DSO), the
content handlers are not initialized there. I'll try to fix it for Apache
1.3.1 but there is no direct solution. I've to change the API of Apache and
this means I need some votes from the others.  A patch is coming. As a ugly
workaround you just can do the following in the meantime:

:> cvs diff mod_so.c 
Index: mod_so.c
===================================================================
RCS file: /e/apache/REPOS/apache-1.3/src/modules/standard/mod_so.c,v
retrieving revision 1.25
diff -u -r1.25 mod_so.c
--- mod_so.c    1998/05/06 15:18:02     1.25
+++ mod_so.c    1998/06/11 09:41:16
@@ -271,6 +271,7 @@
     if (modp->create_dir_config)
       ((void**)cmd->server->lookup_defaults)[modp->module_index] =
        (*modp->create_dir_config)(cmd->pool, NULL);
+    ap_init_modules(cmd->pool, cmd->server);
 
     return NULL;
 }

With this and a "TypeConfig /dev/null" _before_ the LoadModule
directives (still don't know why this is needed) I already get this:

will write error_log to: /tmp/mod_perl_error_log
letting apache warm up...\c
Server is not starting !?
Use of uninitialized value at
/v/dsk/3/f/e/apache/SRC/modperl/t//docs/startup.pl line 44.
PerlSetEnv is broken
done
/sw/pkg/websrv/bin/perl t/TEST 0
modules/actions.....ok
modules/cgi.........ok
modules/constants...ok
modules/embperl.....skipping test on this platform
modules/eperl.......ok
modules/httpdconf...ok
modules/include.....ok
modules/perlrun.....ok
modules/psections...ok
modules/sandwich....ok
modules/src.........ok
modules/ssi.........FAILED before any test output arrived
modules/stage.......ok
modules/status......ok
modules/symbol......ok
internal/api........ok
internal/auth.......ok
internal/error......ok
internal/headers....ok
internal/hooks......ok
internal/http-get...ok
internal/http-post..ok
internal/proxy......ok
internal/redirect...ok
internal/rwrite.....ok
internal/stacked....ok
internal/taint......ok
internal/tie........ok
Failed Test  Status Wstat Total Fail  Failed  List of failed
-------------------------------------------------------------------------------
modules/ssi.t                ??   ??       %  ??
httpd terminated
httpd terminated
*** Error code 2

In other words, we have still four problems to solve:

1. I've to fix mod_so for Apache 1.3.1 (a patch for 1.3.0 will
   be available for the 1.3.0 users, of course)
   => I'll prepare the patch

2. We've to find the reason why the TypeConfig has to be
   _before_ a LoadModule directive.
   => I've no clue

3. You've to find the problem in startup.pl with PerlSetEnv
   => I've no clue

4. We have to disable/skip the SSI check when 
   USE_APACI=1 USE_DSO=1 PERL_SSI=1 is used because under this situation
   mod_perl.config.sh has to disable PERL_SSI=1 because of bad cross-module
   calls from mod_include to mod_perl which cannot be done under DSO situations.
   => Should be trivial

                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com