You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by to...@apache.org on 2012/03/12 14:27:30 UTC
svn commit: r1299669 - in /perl/modperl/trunk: Changes
src/modules/perl/modperl_error.c xs/APR/Pool/APR__Pool.h
xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Author: torsten
Date: Mon Mar 12 13:27:30 2012
New Revision: 1299669
URL: http://svn.apache.org/viewvc?rev=1299669&view=rev
Log:
Do not stringify $@ upon exception propagation.
Modified:
perl/modperl/trunk/Changes
perl/modperl/trunk/src/modules/perl/modperl_error.c
perl/modperl/trunk/xs/APR/Pool/APR__Pool.h
perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Modified: perl/modperl/trunk/Changes
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/Changes?rev=1299669&r1=1299668&r2=1299669&view=diff
==============================================================================
--- perl/modperl/trunk/Changes (original)
+++ perl/modperl/trunk/Changes Mon Mar 12 13:27:30 2012
@@ -12,6 +12,8 @@ Also refer to the Apache::Test changes l
=item 2.0.6-dev
+Do not stringify $@ upon exception propagation. [Torsten Foertsch]
+
Fix a race condition in our tipool management.
See http://www.gossamer-threads.com/lists/modperl/dev/104026
Patch submitted by: SalusaSecondus <sa...@nationstates.net>
Modified: perl/modperl/trunk/src/modules/perl/modperl_error.c
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/src/modules/perl/modperl_error.c?rev=1299669&r1=1299668&r2=1299669&view=diff
==============================================================================
--- perl/modperl/trunk/src/modules/perl/modperl_error.c (original)
+++ perl/modperl/trunk/src/modules/perl/modperl_error.c Mon Mar 12 13:27:30 2012
@@ -78,7 +78,7 @@ void modperl_croak(pTHX_ apr_status_t rc
}
if (SvTRUE(ERRSV)) {
- Perl_croak(aTHX_ "%s", SvPV_nolen(ERRSV));
+ Perl_croak(aTHX_ Nullch);
}
stash = gv_stashpvn("APR::Error", 10, FALSE);
Modified: perl/modperl/trunk/xs/APR/Pool/APR__Pool.h
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/APR/Pool/APR__Pool.h?rev=1299669&r1=1299668&r2=1299669&view=diff
==============================================================================
--- perl/modperl/trunk/xs/APR/Pool/APR__Pool.h (original)
+++ perl/modperl/trunk/xs/APR/Pool/APR__Pool.h Mon Mar 12 13:27:30 2012
@@ -312,7 +312,7 @@ static apr_status_t mpxs_cleanup_run(voi
#endif
if (SvTRUE(ERRSV)) {
- Perl_croak(aTHX_ SvPV_nolen(ERRSV));
+ Perl_croak(aTHX_ Nullch);
}
/* the return value is ignored by apr_pool_destroy anyway */
Modified: perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h?rev=1299669&r1=1299668&r2=1299669&view=diff
==============================================================================
--- perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h (original)
+++ perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h Mon Mar 12 13:27:30 2012
@@ -80,7 +80,7 @@ static apr_status_t mpxs_cleanup_run(voi
}
if (SvTRUE(ERRSV)) {
- Perl_croak(aTHX_ SvPV_nolen(ERRSV));
+ Perl_croak(aTHX_ Nullch);
}
/* the return value is ignored by apr_pool_destroy anyway */
Re: svn commit: r1299669 - in /perl/modperl/trunk: Changes src/modules/perl/modperl_error.c xs/APR/Pool/APR__Pool.h xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Posted by Torsten Förtsch <to...@gmx.net>.
On Monday, 12 March 2012 11:03:52 Fred Moyer wrote:
> I'm not clear on the end user implications of this - how will the
> error be presented now?
The only difference _should_ be like this. Suppose this code:
my $p=APR::Pool->new;
$p->cleanup_register(sub {die \"huhu"});
eval {undef $p};
Now, before the patch $@ would be a simple scalar string containing something
like "SCALAR(0x6375c8)" that is the stringified representation of \"huhu".
That is before the change C<'' eq ref $@> is true.
After the change $@ will contain the reference itself. Thus, C<print $@> will
still print the same string as before except for the trailing " at ... line
...\n" perhaps. But C<print ${$@}> will now print "huhu" and C<'SCALAR' eq ref
$@> is true.
Of course you can also throw other references, hashes, arrays or objects.
In general, I'd see it as a bug to be limited to exception strings only
because an arbitrary XS layer in the call hierarchy unconditionally
stringifies all exceptions.
However, on a second thought, I doubt that we have tests in our test suite
that actually check what happens if a PerlCleanupHandler or a pool cleanup
handler throw an exception. That may be worth some effort to investigate and
implement such tests.
Torsten Förtsch
--
Need professional modperl support? Hire me! (http://foertsch.name)
Like fantasy? http://kabatinte.net
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org
Re: svn commit: r1299669 - in /perl/modperl/trunk: Changes
src/modules/perl/modperl_error.c xs/APR/Pool/APR__Pool.h xs/Apache2/ServerUtil/Apache2__ServerUtil.h
Posted by Fred Moyer <fr...@redhotpenguin.com>.
I'm not clear on the end user implications of this - how will the
error be presented now?
On Mon, Mar 12, 2012 at 6:27 AM, <to...@apache.org> wrote:
> Author: torsten
> Date: Mon Mar 12 13:27:30 2012
> New Revision: 1299669
>
> URL: http://svn.apache.org/viewvc?rev=1299669&view=rev
> Log:
> Do not stringify $@ upon exception propagation.
>
> Modified:
> perl/modperl/trunk/Changes
> perl/modperl/trunk/src/modules/perl/modperl_error.c
> perl/modperl/trunk/xs/APR/Pool/APR__Pool.h
> perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
>
> Modified: perl/modperl/trunk/Changes
> URL: http://svn.apache.org/viewvc/perl/modperl/trunk/Changes?rev=1299669&r1=1299668&r2=1299669&view=diff
> ==============================================================================
> --- perl/modperl/trunk/Changes (original)
> +++ perl/modperl/trunk/Changes Mon Mar 12 13:27:30 2012
> @@ -12,6 +12,8 @@ Also refer to the Apache::Test changes l
>
> =item 2.0.6-dev
>
> +Do not stringify $@ upon exception propagation. [Torsten Foertsch]
> +
> Fix a race condition in our tipool management.
> See http://www.gossamer-threads.com/lists/modperl/dev/104026
> Patch submitted by: SalusaSecondus <sa...@nationstates.net>
>
> Modified: perl/modperl/trunk/src/modules/perl/modperl_error.c
> URL: http://svn.apache.org/viewvc/perl/modperl/trunk/src/modules/perl/modperl_error.c?rev=1299669&r1=1299668&r2=1299669&view=diff
> ==============================================================================
> --- perl/modperl/trunk/src/modules/perl/modperl_error.c (original)
> +++ perl/modperl/trunk/src/modules/perl/modperl_error.c Mon Mar 12 13:27:30 2012
> @@ -78,7 +78,7 @@ void modperl_croak(pTHX_ apr_status_t rc
> }
>
> if (SvTRUE(ERRSV)) {
> - Perl_croak(aTHX_ "%s", SvPV_nolen(ERRSV));
> + Perl_croak(aTHX_ Nullch);
> }
>
> stash = gv_stashpvn("APR::Error", 10, FALSE);
>
> Modified: perl/modperl/trunk/xs/APR/Pool/APR__Pool.h
> URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/APR/Pool/APR__Pool.h?rev=1299669&r1=1299668&r2=1299669&view=diff
> ==============================================================================
> --- perl/modperl/trunk/xs/APR/Pool/APR__Pool.h (original)
> +++ perl/modperl/trunk/xs/APR/Pool/APR__Pool.h Mon Mar 12 13:27:30 2012
> @@ -312,7 +312,7 @@ static apr_status_t mpxs_cleanup_run(voi
> #endif
>
> if (SvTRUE(ERRSV)) {
> - Perl_croak(aTHX_ SvPV_nolen(ERRSV));
> + Perl_croak(aTHX_ Nullch);
> }
>
> /* the return value is ignored by apr_pool_destroy anyway */
>
> Modified: perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
> URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h?rev=1299669&r1=1299668&r2=1299669&view=diff
> ==============================================================================
> --- perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h (original)
> +++ perl/modperl/trunk/xs/Apache2/ServerUtil/Apache2__ServerUtil.h Mon Mar 12 13:27:30 2012
> @@ -80,7 +80,7 @@ static apr_status_t mpxs_cleanup_run(voi
> }
>
> if (SvTRUE(ERRSV)) {
> - Perl_croak(aTHX_ SvPV_nolen(ERRSV));
> + Perl_croak(aTHX_ Nullch);
> }
>
> /* the return value is ignored by apr_pool_destroy anyway */
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org