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

Reply via email to