Philippe M. Chiasson wrote: [...]
After a long promised investigation session, I believe I have pinned it down. It seems to have been introduced by change r160562 when the anon_cnt initialization code was moved around as a result. Didn't have enough time tonight to dig down as to _why_ this is breaking though...
Not entirely sure why this breaks specifically on Darwin and all, but the following patch seems to make the problem dissapear. Does it fix the problem you are seeing too ?
Index: src/modules/perl/modperl_handler.c =================================================================== --- src/modules/perl/modperl_handler.c (revision 170139) +++ src/modules/perl/modperl_handler.c (working copy) @@ -89,9 +89,6 @@ modperl_modglobal_lookup(aTHX_ "ANONSUB"); MP_TRACE_h(MP_FUNC, "init $PL_modglobal{ANONSUB} = []"); MP_MODGLOBAL_STORE_HV(gkey); - - /* init the counter to 0 */ - modperl_global_anon_cnt_init(p); }
/* allocate and populate the anon handler sub-struct */ Index: src/modules/perl/mod_perl.c =================================================================== --- src/modules/perl/mod_perl.c (revision 170139) +++ src/modules/perl/mod_perl.c (working copy) @@ -532,6 +532,9 @@ modperl_global_init_server_rec(pconf, s);
modperl_tls_create_request_rec(pconf); + + /* init the counter to 0 */ + modperl_global_anon_cnt_init(pconf); }
/*
Philippe is talking about http://svn.apache.org/viewcvs.cgi?rev=160562&view=rev
http://svn.apache.org/viewcvs.cgi/perl/modperl/trunk/src/modules/perl/mod_perl.c?rev=160562&view=diff&r1=160562&r2=160561&p1=perl/modperl/trunk/src/modules/perl/mod_perl.c&p2=/perl/modperl/trunk/src/modules/perl/mod_perl.c
But it can't be reverted , since it was a fix for a bug in vhosts+anonsub+ithreads. I couldn't add a test reproducing the problem, as it wasn't suitable for the test suite (would have affected other tests). So it needs to stay that way and figured out what needs to be fixed elsewhere.
Philippe, your patch can't be applied either, since it has exactly the same effect as reverting r160562, since you moved modperl_global_anon_cnt_init() to modperl_init_globals() which is called only for the top-level server:
void *modperl_config_srv_create(apr_pool_t *p, server_rec *s) { modperl_config_srv_t *scfg = modperl_config_srv_new(p);
if (!s->is_virtual) {
/* give a chance to MOD_PERL_TRACE env var to set * PerlTrace. This place is the earliest point in mod_perl * configuration parsing, when we have the server object */ modperl_trace_level_set_apache(s, NULL);
/* Must store the global server record as early as possible, * because if mod_perl happens to be started from within a * vhost (e.g., PerlLoadModule) the base server record won't * be available to vhost and things will blow up */ modperl_init_globals(s, p); }
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com