dougm 01/09/28 10:27:46 Modified: src/modules/perl mod_perl.c modperl_env.c t/response/TestApache cgihandler.pm Log: current implementation of tie %ENV to $r->subprocess_env is not threadsafe, so back it out for now Revision Changes Path 1.81 +8 -0 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -r1.80 -r1.81 --- mod_perl.c 2001/09/28 17:15:07 1.80 +++ mod_perl.c 2001/09/28 17:27:45 1.81 @@ -527,13 +527,21 @@ h_stdout = modperl_io_tie_stdout(aTHX_ r); h_stdin = modperl_io_tie_stdin(aTHX_ r); +#if 0 + /* current implementation of tie %ENV to $r->subprocess_env + * is not threadsafe + */ modperl_env_request_tie(aTHX_ r); +#endif + retval = modperl_response_handler_run(r, FALSE); modperl_io_handle_untie(aTHX_ h_stdout); modperl_io_handle_untie(aTHX_ h_stdin); +#if 0 modperl_env_request_untie(aTHX_ r); +#endif modperl_perl_global_restore(aTHX_ &rcfg->perl_globals); 1.11 +6 -0 modperl-2.0/src/modules/perl/modperl_env.c Index: modperl_env.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_env.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- modperl_env.c 2001/09/28 17:15:08 1.10 +++ modperl_env.c 2001/09/28 17:27:45 1.11 @@ -133,6 +133,12 @@ } #endif +/* + * XXX: PL_vtbl_* are global (not per-interpreter) + * so this method of tie-ing is not thread-safe + * overridding svt_get is only useful with 5.7.2+ and requires + * a smarter lookup than the current modperl_env_request_get + */ void modperl_env_request_tie(pTHX_ request_rec *r) { EnvMgObj = (char *)r; 1.6 +4 -1 modperl-2.0/t/response/TestApache/cgihandler.pm Index: cgihandler.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestApache/cgihandler.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- cgihandler.pm 2001/08/01 17:03:19 1.5 +++ cgihandler.pm 2001/09/28 17:27:46 1.6 @@ -24,7 +24,10 @@ else { print "1..3\n"; print "ok 1\n", "ok ", "$ENV{FOO}\n"; - my $foo = $r->subprocess_env->get('FOO'); +#XXX: current implementation of tie %ENV to $r->subprocess_env +# is not threadsafe +# my $foo = $r->subprocess_env->get('FOO'); + my $foo = $ENV{FOO}; $foo++; print "ok $foo\n"; }