On 05/14/2015 11:24 AM, Niko Tyni wrote:
On Sun, May 10, 2015 at 01:47:19PM +0100, Steve Hay wrote:
On 28 April 2015 at 07:51, <jkal...@apache.org> wrote:
Author: jkaluza
Date: Tue Apr 28 06:51:12 2015
New Revision: 1676417
URL: http://svn.apache.org/r1676417
Log:
Initialize interp->refcnt to 1 in modperl_interp_select.
I cannot understand why, but since this patch was applied I find that
t\modules\proxy.t fails every time when I run the full "nmake test",
but it always succeeds when I run it in isolation so I'm at a loss to
find out what is going wrong. All other tests (apart from those known
Win32-specific failures documented in README) still pass. Reverting
the patch "fixes" the proxy.t problem, but probably isn't the right
solution.
It's caused by Perl_croak/modperl_croak.
Lets take modperl_run_filter as an example. When following code-path is
executed ...
modperl_croak(aTHX_ MODPERL_FILTER_ERROR,
"a filter calling $f->read "
"must return OK and not DECLINED");
... the MP_INTERP_PUTBACK is not reached for some reason (I presume it's
because of Perl_croak, but I don't understand why it stops the execution
of the rest of modperl_run_filter method).
Because of that, the interp->refcnt is not decreased, and the interp is
not freed.
I has been able to "fix" it by attached patch, but I would like to
discuss more generic way how to fix that problem...
Any ideas?
Regards,
Jan Kaluza
As a data point, this also seems to happen with 2.0.9-RC1 on Debian
kfreebsd-amd64.
https://buildd.debian.org/status/fetch.php?pkg=libapache2-mod-perl2&arch=kfreebsd-amd64&ver=2.0.9~rc1-1&stamp=1431587841
request has failed (the response code was: 502)
see t/logs/error_log for more details
t/modules/proxy.t .......................
# connecting to http://localhost:8538/TestModules__proxy
1..1
# Running under perl version 5.020002 for gnukfreebsd
# Current time local: Thu May 14 07:15:21 2015
# Current time GMT: Thu May 14 07:15:21 2015
# Using Test.pm version 1.26
# Using Apache/Test.pm version 1.39
Dubious, test returned 2 (wstat 512, 0x200)
Failed 1/1 subtests
I haven't been able to test yet whether it's reproducible there.
Index: src/modules/perl/modperl_filter.c
===================================================================
--- src/modules/perl/modperl_filter.c (revision 1679170)
+++ src/modules/perl/modperl_filter.c (working copy)
@@ -535,6 +535,7 @@
* pass the bucket brigade through after it called
* $f->read(), since it causes a pre-fetch of the
* bb */
+ interp->refcnt--;
modperl_croak(aTHX_ MODPERL_FILTER_ERROR,
"a filter calling $f->read "
"must return OK and not DECLINED");
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org