rse 98/04/15 23:44:46
Modified: . INSTALL src README.DSO Log: Make sure the user is notified about the possible side-effects LoadModule can have because of the different execution order of modules. Revision Changes Path 1.12 +3 -1 apache-1.3/INSTALL Index: INSTALL =================================================================== RCS file: /export/home/cvs/apache-1.3/INSTALL,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- INSTALL 1998/04/15 06:51:27 1.11 +++ INSTALL 1998/04/16 06:44:44 1.12 @@ -94,7 +94,9 @@ installed from which Apache can guess the options. For more in-depth information about DSO support in Apache 1.3 please - read the file src/README.DSO. + read the file src/README.DSO carefully. Especially the section + entitled "Advantages & Disadvantages" because using the DSO mechanism + can have strange side-effects if you are not carefully. BE WARNED! 3. Configuring the source tree --------------------------- 1.4 +21 -0 apache-1.3/src/README.DSO Index: README.DSO =================================================================== RCS file: /export/home/cvs/apache-1.3/src/README.DSO,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- README.DSO 1998/04/14 10:51:39 1.3 +++ README.DSO 1998/04/16 06:44:45 1.4 @@ -264,6 +264,27 @@ complicated assembler tricks for relative addressing which are not necessarily as fast as absolute addressing. + - As of Apache 1.3 the in-core list of active modules is not priorized. + Instead it is just the list of statically linked modules in reverse order + as found in the src/Configuration* file (the list is constructed by + adding modules to the top, i.e. later in the config means earlier in the + list and thus results in higher priority). But DSO-based modules are + added to this in-core list of modules under run-time _after_ the + statically linked modules were already added. They are added again in + reverse order, i.e. each `LoadModule' command inserts the module again at + the top of the list. But because the list is not priorized the two parts + (statically linked modules and run-time loaded modules) are _NEVER_ + merged. They are just connected together but not sorted as a whole. + + In other words: When a module is compiled as a DSO it automatically + results in a higher priority than any statically compiled modules. This + can have strange side-effects because of different execution order. As a + consequence the rule of thumb is this: Either compile all modules + statically or all modules as DSO (--enable-shared=max) when you want to + avoid side-effects. And only compile just a subset of modules as DSO when + you are sure the different execution order has no side-effects for your + configuration. BE WARNED! + - Because DSO modules cannot be linked against other DSO-based libraries (ld -lfoo) you cannot use the DSO mechanism for all types of modules. Or in other words, modules compiled as DSO files are restricted to only use