On 6 November 2013 00:48, Jeff Trawick <traw...@gmail.com> wrote:
> Back to the httpd24threading branch:
>
> * modperl_interp_pool_select() has this notion of phase, which must either
> be startup or request context.
> * It thinks it is startup only if the pool passed in is s->process->pconf.
> * Sometimes it is passed s->process->pool (parent of pconf), such as from
> perl_parse_require_line().
> * perl_parse_require_line() can sometimes be called from request context.
> * When perl_parse_require_line() calls modperl_interp_pool_select(), request
> context can never be identified because perl_parse_require_line() never
> passes in r->pool (which I guess would be cmd->pool).
> * etc.
>
> This would seem to be the way to get the right pool to
> modperl_interp_pool_select().
>
> Index: src/modules/perl/modperl_util.c
> ===================================================================
> --- src/modules/perl/modperl_util.c     (revision 1539040)
> +++ src/modules/perl/modperl_util.c     (working copy)
> @@ -989,7 +989,7 @@
>      int count;
>      void *key;
>      auth_callback *ab;
> -    MP_dINTERP_POOLa(cmd->server->process->pool, cmd->server);
> +    MP_dINTERP_POOLa(cmd->pool, cmd->server);
>
>      if (global_authz_providers == NULL) {
>          MP_INTERP_PUTBACK(interp, aTHX);
>
> That still doesn't bring happiness (no interpreter returned, resulting in a
> crash trying to dereference interp).
>

I'm getting the same crash-on-startup behaviour now myself after a
fresh rebuild of everything (now using httpd-2.4.6 and perl-5.19.5). I
will look back over the changes made on the threading branch and/or my
merges of them into the httpd24 branch. Hopefully the answer lies
there somewhere. I'll be very grateful for any help I can get with
this though -- I didn't do the original work on either of those
branches...

(Not sure how you break into things in your debugger, btw. I find the
easiest way is to start up devenv.exe with "devenv /useenv httpd.exe"
and then set the command-line arguments in the httpd project to those
that "t\TEST -start-httpd" would use, namely something like "-d
C:/Dev/Temp/modperl-httpd24threading/t -f
C:/Dev/Temp/modperl-httpd24threading/t/conf/httpd.conf -D APACHE2 -D
PERL_USEITHREADS -D ONE_PROCESS". Then you can just hit F5 etc to set
it running.)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to