perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gerald Richter" <rich...@ecos.de>
Subject Endless loop in perl_sections (was: cvs commit: modperl/src/modules/perl perl_config.c)
Date Tue, 12 Dec 2000 05:42:35 GMT
Hi,

after upgrading form mod_perl-1.24 to 1.24_01 (it's the same for the current
CVS version) I get an endless loop inside my Perl sections.

A MOD_PERL_TRACE looks like:

"last line of my startup.pl" at /opt/symphony/etc/httpd/startup.pl line 68,
<DATA> chunk 1.
bootstrapping <Perl> sections: arg=/opt/symphony/etc/httpd/startup.pl,
keys=69
loading perl module 'Apache'...ok
loading perl module 'Tie::IxHash'...ok
perl_section: </Files>
perl_section: <Directory /CVS(/|$)>
Deny from all (OK) Limit=no
Order allow,deny (OK) Limit=no
perl_section: <Directory /_vti_(/|$)>
Deny from all (OK) Limit=no
Order allow,deny (OK) Limit=no
perl_section: </Directory>
.PerlSetEnv' directive is TAKE2, (0 elements)
SVt_PV: $SSLSessionCache = dbm:/opt/symphony/log/ssl_scache'
handle_command (SSLSessionCache dbm:/opt/symphony/log/ssl_scache): OK
SVt_PV: $PerlRequire = /opt/symphony/etc/httpd/startup.pl'
handle_command (PerlRequire /opt/symphony/etc/httpd/startup.pl):
PerlRequire: arg=/opt/symphony/etc/httpd/startup.pl'
attempting to require /opt/symphony/etc/httpd/startup.pl'
bootstrapping <Perl> sections: arg=/opt/symphony/etc/httpd/startup.pl,
keys=69
loading perl module 'Apache'...ok
loading perl module 'Tie::IxHash'...ok
perl_section: </Files>
perl_section: <Directory /CVS(/|$)>
....

The first line is a warn that my startup.pl outputs. As you see the
PerlRequire is done again (for the same file) which calls the bootstrapping
<Perl> sections. This continues until the server runs output of memory...

After looking a little bit around, I found that the reason for that
behaviour is the following change. If I revert this change (at least in the
PerlRequire part), everything works as before. Because I am not sure what
was the reason for this change, I cannot suggest a fix, other then reverting
it.

Gerald

----- Original Message -----
From: <dougm@locus.apache.org>
To: <modperl-cvs@apache.org>
Sent: Thursday, September 28, 2000 4:53 AM
Subject: cvs commit: modperl/src/modules/perl perl_config.c


> dougm       00/09/27 20:53:02
>
>   Modified:    src/modules/perl perl_config.c
>   Log:
>   fix %Apache::ReadConfig:: processing for PerlRequire'd files
>
>   Revision  Changes    Path
>   1.107     +16 -18    modperl/src/modules/perl/perl_config.c
>
>   Index: perl_config.c
>   ===================================================================
>   RCS file: /home/cvs/modperl/src/modules/perl/perl_config.c,v
>   retrieving revision 1.106
>   retrieving revision 1.107
>   diff -u -r1.106 -r1.107
>   --- perl_config.c 2000/09/27 23:51:34 1.106
>   +++ perl_config.c 2000/09/28 03:53:01 1.107
>   @@ -600,21 +600,20 @@
>    dTHRCTX;
>    return SvPV(ERRSV,n_a);
>        }
>   - }
>   - else {
>   -     return NULL;
>   +#ifdef PERL_SECTIONS
>   +            else {
>   +                if (CAN_SELF_BOOT_SECTIONS) {
>   +                    perl_section_self_boot(parms, dummy, arg);
>   +                }
>   +     }
>   +#endif
>    }
>        }
>   -
>   -    if (cls->PerlModule) {
>   +    else {
>   +        /* Delay processing it until Perl starts */
>            *(char **)push_array(cls->PerlModule) = pstrdup(parms->pool,
arg);
>        }
>
>   -#ifdef PERL_SECTIONS
>   -    if(CAN_SELF_BOOT_SECTIONS)
>   - perl_section_self_boot(parms, dummy, arg);
>   -#endif
>   -
>        return NULL;
>    }
>
>   @@ -633,20 +632,19 @@
>    dTHRCTX;
>    return SvPV(ERRSV,n_a);
>        }
>   +#ifdef PERL_SECTIONS
>        else {
>   - return NULL;
>   +                if (CAN_SELF_BOOT_SECTIONS) {
>   +                    perl_section_self_boot(parms, dummy, arg);
>   +                }
>        }
>   +#endif
>    }
>        }
>   -
>   -    if (cls->PerlRequire) {
>   +    else {
>   +        /* Delay processing it until Perl starts */
>            *(char **)push_array(cls->PerlRequire) = pstrdup(parms->pool,
arg);
>        }
>   -
>   -#ifdef PERL_SECTIONS
>   -    if(CAN_SELF_BOOT_SECTIONS)
>   - perl_section_self_boot(parms, dummy, arg);
>   -#endif
>
>        return NULL;
>    }
>
>
>



-------------------------------------------------------------
Gerald Richter    ecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting

Post:       Tulpenstrasse 5         D-55276 Dienheim b. Mainz
E-Mail:     richter@ecos.de         Voice:    +49 6133 925151
WWW:        http://www.ecos.de      Fax:      +49 6133 925152
-------------------------------------------------------------







Mime
View raw message