Re: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed
- From: steve.hay@xxxxxxxxxxxx (Steve Hay)
- Date: Thu, 21 Jun 2007 17:44:22 +0100
Tim Bunce wrote:
On Wed, Jun 20, 2007 at 08:47:53AM +0100, Steve Hay wrote:Tim Bunce wrote:file: $CPAN/authors/id/T/TI/TIMB/DBI-1.57.tar.gzt/86gofer_fail.t now fails with my build of bleadperl (patchlevel 31376) with VC++ 6.0 on Win32 (perl -V below). This script was passing OK in DBI-1.56 with the same perl.
size: 490304 bytes
md5: fca667f59dff24058a8e0e8f09e2aad9
=head2 Changes in DBI 1.57 (svn rev 9639), 13th June 2007
Fixed t/86gofer_fail tests to be less likely to fail falsely.
C:\Temp\DBI-1.57>perl -Mblib t\86gofer_fail.t
ok 21 - negative percentage should fail non-randomly
Testing random delay
ok 22
Unexpected failure: DBD::Gofer::db do failed: Assertion !((sv)->sv_flags & 0x00010000) failed: file "..\pad.c", line 1505 at C:\Temp\DBI-1.57\blib\lib/DBI/Gofer/Execute.pm line 624. at t\86gofer_fail.t line 129.
Execute.pm line 624 is returning a closure, but it doesn't seem
particularly magical.
Not sure when I'll be able to dig deeper. CC'd to perl5-porters in the
hope they can help narrow it down.
With the attached patch I now have all tests successful.
I remember lots of discussion a while ago about constructions like "my $x = 1 if $y;". I don't remember what the conclusion of it all was, except that it's probably best avoided. Is that right?
-- diff -ruN DBI-1.57.orig/lib/DBI/Gofer/Execute.pm DBI-1.57/lib/DBI/Gofer/Execute.pm
--- DBI-1.57.orig/lib/DBI/Gofer/Execute.pm 2007-06-07 17:46:12.000000000 +0100
+++ DBI-1.57/lib/DBI/Gofer/Execute.pm 2007-06-21 17:36:24.722390400 +0100
@@ -596,8 +596,9 @@
sub _mk_rand_callback {
my ($self, $method, $fail_percent, $delay_percent, $delay_duration) = @_;
- $fail_percent ||= 0; my $fail_modrate = int(1/(-$fail_percent )*100) if $fail_percent;
- $delay_percent ||= 0; my $delay_modrate = int(1/(-$delay_percent)*100) if $delay_percent;
+ my ($fail_modrate, $delay_modrate);
+ $fail_percent ||= 0; $fail_modrate = int(1/(-$fail_percent )*100) if $fail_percent;
+ $delay_percent ||= 0; $delay_modrate = int(1/(-$delay_percent)*100) if $delay_percent;
# note that $method may be "*"
return sub {
my ($h) = @_;
- Follow-Ups:
- Re: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed
- From: Tim Bunce
- Re: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed
- References:
- ANNOUNCE: DBI 1.57
- From: Tim Bunce
- Re: ANNOUNCE: DBI 1.57
- From: Steve Hay
- perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed (was: ANNOUNCE: DBI 1.57)
- From: Tim Bunce
- ANNOUNCE: DBI 1.57
- Prev by Date: Re: problem installing dbi 1.57
- Next by Date: Re: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed
- Previous by thread: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed (was: ANNOUNCE: DBI 1.57)
- Next by thread: Re: perl pad.c Assertion !((sv)->sv_flags & 0x00010000) failed
- Index(es):
Relevant Pages
|