Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.14.0-642-g3ed94dc brakes AVAR/YAML-Syck-1.17.tar.gz #11724

Closed
p5pRT opened this issue Oct 31, 2011 · 19 comments
Closed

Bleadperl v5.14.0-642-g3ed94dc brakes AVAR/YAML-Syck-1.17.tar.gz #11724

p5pRT opened this issue Oct 31, 2011 · 19 comments

Comments

@p5pRT
Copy link

p5pRT commented Oct 31, 2011

Migrated from rt.perl.org#102606 (status was 'resolved')

Searchable as RT102606$

@p5pRT
Copy link
Author

p5pRT commented Oct 31, 2011

From @andk

git bisect


  3ed94dc is the first bad commit
  commit 3ed94dc
  Author​: Father Chrysostomos <sprout@​cpan.org>
  Date​: Thu Jun 16 06​:27​:50 2011 -0700
 
  [perl #81944] Non-lvalue subs do not copy return values
 
  return and leavesub see if they can cheat by not copying anything
  marked TEMP, since presumably nothing else is using it. That means
  the return values of delete() and shift() are not copied. Since @​_
  aliases to the caller’s variables, sometimes what is returned *is*
  used elsewhere and still marked TEMP. So cases like sub { return
  delete $_[0] } ->($x) end up returning $x unchanged, instead of
  copying it.
 
  As mentioned in the ticket, the solution is to copy only if the refer-
  ence count is 1.
 
  This also allows me to simplify the lvalue-returning code without
  spreading this bug further. (pp_leavesublv currently avoids calling
  sv_2mortal, in order not to set the TEMP flag.)

sample fail report


  http​://www.cpantesters.org/cpan/report/13085272

perl -V


  Summary of my perl5 (revision 5 version 15 subversion 0) configuration​:
  Commit id​: 3ed94dc
  Platform​:
  osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-ld
  uname='linux k83 2.6.32-5-amd64 #1 smp mon oct 3 03​:59​:20 utc 2011 x86_64 gnulinux '
  config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/v5.14.0-642-g3ed94dc/127e -Dmyhostname=k83 -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Uuseithreads -Duselongdouble -DDEBUGGING=-g'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=define
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.4.5', gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8
  alignbytes=16, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib /lib64 /usr/lib64
  libs=-lnsl -ldb -ldl -lm -lcrypt -lutil -lc
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
  libc=/lib/libc-2.11.2.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.11.2'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'

  Characteristics of this binary (from libperl)​:
  Compile-time options​: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
  PERL_PRESERVE_IVUV PERL_USE_DEVEL USE_64_BIT_ALL
  USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE
  USE_LOCALE_COLLATE USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC USE_LONG_DOUBLE USE_PERLIO
  USE_PERL_ATOF
  Built under linux
  Compiled at Oct 31 2011 21​:59​:00
  @​INC​:
  /home/src/perl/repoperls/installed-perls/perl/v5.14.0-642-g3ed94dc/127e/lib/site_perl/5.15.0/x86_64-linux-ld
  /home/src/perl/repoperls/installed-perls/perl/v5.14.0-642-g3ed94dc/127e/lib/site_perl/5.15.0
  /home/src/perl/repoperls/installed-perls/perl/v5.14.0-642-g3ed94dc/127e/lib/5.15.0/x86_64-linux-ld
  /home/src/perl/repoperls/installed-perls/perl/v5.14.0-642-g3ed94dc/127e/lib/5.15.0
  .

 
--
andreas

@p5pRT
Copy link
Author

p5pRT commented Oct 31, 2011

From @cpansprout

On Mon Oct 31 15​:09​:00 2011, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

git bisect
----------

3ed94dc is the first bad commit
commit 3ed94dc
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Jun 16 06​:27​:50 2011 -0700

[perl #81944] Non-lvalue subs do not copy return values

return and leavesub see if they can cheat by not copying anything
marked TEMP, since presumably nothing else is using it. That means
the return values of delete() and shift() are not copied. Since @​_
aliases to the caller’s variables, sometimes what is returned *is*
used elsewhere and still marked TEMP. So cases like sub { return
delete $_[0] } ->($x) end up returning $x unchanged, instead of
copying it.

As mentioned in the ticket, the solution is to copy only if the
refer-
ence count is 1.

This also allows me to simplify the lvalue-returning code without
spreading this bug further. (pp_leavesublv currently avoids calling
sv_2mortal, in order not to set the TEMP flag.)

sample fail report
------------------

http​://www.cpantesters.org/cpan/report/13085272

I wrote in
<http​://www.nntp.perl.org/group/perl.perl5.porters/;msgid=0F3CAEDE-97B1-44C4-B862-3C0D74DC65D7@​cpan.org>​:

In 5.14.0 and earlier, these two sub calls behave differently​:

$\="\n";
my $x;
print \$x;
print \sub { shift }->($x);
print \sub { \@​_; shift }->($x);

That gives me​:

SCALAR(0x826d50)
SCALAR(0x826cf0)
SCALAR(0x826d50)

That’s a bug. I fixed it. Subs are supposed to copy their return values.

YAML​::Syck is relying on that bug. The Load sub should have the
:lvalue attribute, but, unfortunately, Perl 5.14 and earlier have a
syntactic restriction, in that the last statement must be *parsable* as
an lvalue (like the lhs of =).

This area of Perl is *very* buggy, and I’m trying to fix it, which is
why I broke YAML​::Syck.

Here are several ways to fix YAML​::Syck​:

1) Apply :lvalue to :Load conditionally, based on Perl version
2) Apply :lvalue to :Load and :LoadYAML
3) Apply :lvalue to :Load and wrap the scalar LoadYAML call in ${\...}.

The first one consists of this line, *before* the Load sub​:

BEGIN { if ($] ge '5.015') { eval 'sub Load :lvalue' } }

For the second method, you have to apply the :lvalue attribute to the
XSUB after it is already defined, which you are supposed to be able to
do like this​:

sub LoadYAML :lvalue;

but that stopped working in 5.12 (fixed in 5.15). You can work around
that by using attributes.pm​:

use attributes __PACKAGE__, \&LoadYAML, 'lvalue';

or by specifying a custom attribute, along with a custom attribute
handler that does nothing​:

sub MODIFY_CODE_ATTRIBUTES{()} # parentheses to work around 5.8.1 bug
sub LoadYAML :lvalue :Whatever;

(Did I say it was buggy?)

For the third method, change​:

else \{
    YAML&#8203;::Syck&#8203;::LoadYAML\($\_\[0\]\);
\}

to

else \{
    $\{\\scalar YAML&#8203;::Syck&#8203;::LoadYAML\($\_\[0\]\)\};
\}

Make sure to include the ‘scalar’, as \ provides list context.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Oct 31, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Oct 31, 2011

From @cpansprout

I’ve just noticed the subject. Are you saying YAML​::Syck is now slower? :-)

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Nov 1, 2011

From @andk

On Mon, 31 Oct 2011 16​:05​:45 -0700, "Father Chrysostomos via RT" <perlbug-followup@​perl.org> said​:

  > I’ve just noticed the subject. Are you saying YAML​::Syck is now slower? :-)

Oops, no! :)

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Nov 2, 2011

From @cpansprout

I’m making this a 5.16 blocker, as it has 152 direct dependents, and 628
including recursive dependents.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Nov 2, 2011

From @tsee

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents, and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

--Steffen

PS​: Yes, I know everyone is now laughing at my naiveness.

@p5pRT
Copy link
Author

p5pRT commented Nov 2, 2011

From @cpansprout

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents, and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

Which of the five bug workarounds would you prefer?

(You don’t have to answer that.)

@p5pRT
Copy link
Author

p5pRT commented Nov 2, 2011

From @cpansprout

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents, and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Interestingly​:

$ perl5.8.1 Makefile.PL
Warning​: prerequisite ExtUtils​::MakeMaker 6.42 not found. We have 6.17.
Writing Makefile for YAML​::Syck
$ perl5.6.2 Makefile.PL
Warning​: prerequisite ExtUtils​::MakeMaker 6.42 not found. We have 6.17.
Writing Makefile for YAML​::Syck

But the tests passed anyway.

I tested it with blead (f364061), 5.14.2, 5.12.4, 5.10.1, 5.10.0, 5.8.9,
5.8.8, 5.8.1 and 5.6.2.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Nov 2, 2011

From @cpansprout

Inline Patch
diff -rup YAML-Syck-1.17-CbywAU-orig/Changes YAML-Syck-1.17-CbywAU/Changes
--- YAML-Syck-1.17-CbywAU-orig/Changes	2010-11-21 08:41:23.000000000 -0800
+++ YAML-Syck-1.17-CbywAU/Changes	2011-11-02 16:03:59.000000000 -0700
@@ -1,3 +1,9 @@
+[Changes for ....]
+
+* perl RT #102606 - Only lvalue subroutines are supposed to return
+  the argument to "return" without copying it. Stop relying on a
+  pre-5.15 bug.
+
 [Changes for 1.17 (YAML::Syck 0.40 ) - 2010-11-21]
 
 * Change a C99 comment to a C89 comment
diff -rup YAML-Syck-1.17-CbywAU-orig/lib/YAML/Syck.pm YAML-Syck-1.17-CbywAU/lib/YAML/Syck.pm
--- YAML-Syck-1.17-CbywAU-orig/lib/YAML/Syck.pm	2010-11-21 08:41:22.000000000 -0800
+++ YAML-Syck-1.17-CbywAU/lib/YAML/Syck.pm	2011-11-02 16:16:53.000000000 -0700
@@ -13,7 +13,7 @@ use 5.006;
 use Exporter;
 
 BEGIN {
-    $VERSION = '1.17';
+    $VERSION = '1.18';
     @EXPORT  = qw( Dump Load DumpFile LoadFile );
     @ISA     = qw( Exporter );
 
@@ -67,6 +67,10 @@ sub Dump {
         : YAML::Syck::DumpYAML($_[0]);
 }
 
+# We should be doing this always, but lvalue subs are too buggy prior
+# to 5.15.  For pre-5.15, we are actually relying on a leavesub bug.
+BEGIN { if ($] ge '5.015') { eval 'sub Load :lvalue' } }
+
 sub Load {
     if (wantarray) {
         my ($rv) = YAML::Syck::LoadYAML($_[0]);

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

From @cpansprout

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

From @cpansprout

Inline Patch
diff -rup YAML-Syck-1.17-CbywAU-orig/Changes YAML-Syck-1.17-CbywAU/Changes
--- YAML-Syck-1.17-CbywAU-orig/Changes	2010-11-21 08:41:23.000000000 -0800
+++ YAML-Syck-1.17-CbywAU/Changes	2011-11-02 16:03:59.000000000 -0700
@@ -1,3 +1,9 @@
+[Changes for ....]
+
+* perl RT #102606 - Only lvalue subroutines are supposed to return
+  the argument to "return" without copying it. Stop relying on a
+  pre-5.15 bug.
+
 [Changes for 1.17 (YAML::Syck 0.40 ) - 2010-11-21]
 
 * Change a C99 comment to a C89 comment
diff -rup YAML-Syck-1.17-CbywAU-orig/lib/YAML/Syck.pm YAML-Syck-1.17-CbywAU/lib/YAML/Syck.pm
--- YAML-Syck-1.17-CbywAU-orig/lib/YAML/Syck.pm	2010-11-21 08:41:22.000000000 -0800
+++ YAML-Syck-1.17-CbywAU/lib/YAML/Syck.pm	2011-11-02 17:55:39.000000000 -0700
@@ -13,7 +13,7 @@ use 5.006;
 use Exporter;
 
 BEGIN {
-    $VERSION = '1.17';
+    $VERSION = '1.18';
     @EXPORT  = qw( Dump Load DumpFile LoadFile );
     @ISA     = qw( Exporter );
 
@@ -73,7 +73,8 @@ sub Load {
         @{$rv};
     }
     else {
-        YAML::Syck::LoadYAML($_[0]);
+        @_ = $_[0];
+        goto &YAML::Syck::LoadYAML;
     }
 }
 

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

From @tsee

On 11/03/2011 01​:58 AM, Father Chrysostomos via RT wrote​:

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

Thanks, applied, tested, and released as a developer release. Feel free
to poke me to make a non-dev release in case I drop the ball (or rather
in case this gets lost in the depth of my todo mailbox).

Best regards,
Steffen

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

@tsee - Status changed from 'open' to 'resolved'

@p5pRT p5pRT closed this as completed Nov 3, 2011
@p5pRT
Copy link
Author

p5pRT commented Nov 6, 2011

From paul@city-fan.org

On Thu Nov 03 00​:09​:50 2011, smueller@​cpan.org wrote​:

On 11/03/2011 01​:58 AM, Father Chrysostomos via RT wrote​:

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me to the
committers on his github repository of YAML​::Syck. So I can apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

Thanks, applied, tested, and released as a developer release. Feel free
to poke me to make a non-dev release in case I drop the ball (or rather
in case this gets lost in the depth of my todo mailbox).

Best regards,
Steffen

This fix seems to cause t/leak.t to die with Perl < 5.10.0​:

$ make test TEST_FILES=t/leak.t TEST_VERBOSE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils​::Command​::MM" "-e"
"test_harness(1, 'inc', 'blib/lib', 'blib/arch')" t/leak.t
t/leak....1..11
ok 1 - No leaks - array
ok 2 - No leaks - hash
ok 3 - No leaks - code
ok 4 - Load failed (expected)
dubious
  Test returned status 0 (wstat 139, 0x8b)
DIED. FAILED tests 5-11
  Failed 7/11 tests, 36.36% okay
Failed Test Stat Wstat Total Fail Failed List of Failed


t/leak.t 0 139 11 14 127.27% 5-11
Failed 1/1 test scripts, 0.00% okay. 7/11 subtests failed, 36.36% okay.

@p5pRT
Copy link
Author

p5pRT commented Nov 6, 2011

From @cpansprout

On Sun Nov 06 05​:09​:47 2011, pghmcfc wrote​:

On Thu Nov 03 00​:09​:50 2011, smueller@​cpan.org wrote​:

On 11/03/2011 01​:58 AM, Father Chrysostomos via RT wrote​:

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct
dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me
to the
committers on his github repository of YAML​::Syck. So I can
apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

Thanks, applied, tested, and released as a developer release. Feel
free
to poke me to make a non-dev release in case I drop the ball (or
rather
in case this gets lost in the depth of my todo mailbox).

Best regards,
Steffen

This fix seems to cause t/leak.t to die with Perl < 5.10.0​:

$ make test TEST_FILES=t/leak.t TEST_VERBOSE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils​::Command​::MM" "-e"
"test_harness(1, 'inc', 'blib/lib', 'blib/arch')" t/leak.t
t/leak....1..11
ok 1 - No leaks - array
ok 2 - No leaks - hash
ok 3 - No leaks - code
ok 4 - Load failed (expected)
dubious
Test returned status 0 (wstat 139, 0x8b)
DIED. FAILED tests 5-11
Failed 7/11 tests, 36.36% okay
Failed Test Stat Wstat Total Fail Failed List of Failed


t/leak.t 0 139 11 14 127.27% 5-11
Failed 1/1 test scripts, 0.00% okay. 7/11 subtests failed, 36.36%
okay.

It crashes in 5.8.8, but not 5.8.9. I suspect an incompatibility
between Devel​::Leak and 5.8.8 is to blame, which YAML​::Syck now tickles.

Is it worth building a debugging 5.8.8 (which will not go smoothly) to
find the cause? Or should the tests be skipped on 5.8.8 and earlier?

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Nov 6, 2011

From @tsee

On 11/06/2011 08​:53 PM, Father Chrysostomos via RT wrote​:

On Sun Nov 06 05​:09​:47 2011, pghmcfc wrote​:

On Thu Nov 03 00​:09​:50 2011, smueller@​cpan.org wrote​:

On 11/03/2011 01​:58 AM, Father Chrysostomos via RT wrote​:

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct
dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me
to the
committers on his github repository of YAML​::Syck. So I can
apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

Thanks, applied, tested, and released as a developer release. Feel
free
to poke me to make a non-dev release in case I drop the ball (or
rather
in case this gets lost in the depth of my todo mailbox).

Best regards,
Steffen

This fix seems to cause t/leak.t to die with Perl< 5.10.0​:

$ make test TEST_FILES=t/leak.t TEST_VERBOSE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils​::Command​::MM" "-e"
"test_harness(1, 'inc', 'blib/lib', 'blib/arch')" t/leak.t
t/leak....1..11
ok 1 - No leaks - array
ok 2 - No leaks - hash
ok 3 - No leaks - code
ok 4 - Load failed (expected)
dubious
Test returned status 0 (wstat 139, 0x8b)
DIED. FAILED tests 5-11
Failed 7/11 tests, 36.36% okay
Failed Test Stat Wstat Total Fail Failed List of Failed

-------------------------------------------------------------------------------

t/leak.t 0 139 11 14 127.27% 5-11
Failed 1/1 test scripts, 0.00% okay. 7/11 subtests failed, 36.36%
okay.

It crashes in 5.8.8, but not 5.8.9. I suspect an incompatibility
between Devel​::Leak and 5.8.8 is to blame, which YAML​::Syck now tickles.

Is it worth building a debugging 5.8.8 (which will not go smoothly) to
find the cause? Or should the tests be skipped on 5.8.8 and earlier?

Should be skipped. YAML​::Syck is apparently long deprecated.

Will do that asap.

Best regards,
Steffen

@p5pRT
Copy link
Author

p5pRT commented Nov 8, 2011

From @tsee

On 11/06/2011 09​:45 PM, Steffen Mueller wrote​:

On 11/06/2011 08​:53 PM, Father Chrysostomos via RT wrote​:

It crashes in 5.8.8, but not 5.8.9. I suspect an incompatibility
between Devel​::Leak and 5.8.8 is to blame, which YAML​::Syck now tickles

Done, YAML​::Syck 1.19 without the t/leak.t for pre 5.8.9 perls released.

--Steffen

@p5pRT
Copy link
Author

p5pRT commented Nov 8, 2011

From paul@city-fan.org

On Sun Nov 06 11​:53​:39 2011, sprout wrote​:

On Sun Nov 06 05​:09​:47 2011, pghmcfc wrote​:

On Thu Nov 03 00​:09​:50 2011, smueller@​cpan.org wrote​:

On 11/03/2011 01​:58 AM, Father Chrysostomos via RT wrote​:

On Wed Nov 02 16​:25​:12 2011, sprout wrote​:

On Wed Nov 02 13​:26​:12 2011, smueller@​cpan.org wrote​:

On 11/02/2011 03​:30 AM, Father Chrysostomos via RT wrote​:

I’m making this a 5.16 blocker, as it has 152 direct
dependents,
and 628
including recursive dependents.

AEvar as made me primary maintainer of the module and added me
to the
committers on his github repository of YAML​::Syck. So I can
apply
patches and make releases.

Could somebody else please come up with a patch?

See attachment.

Please disregard that one.

Here’s a much better patch.

Thanks, applied, tested, and released as a developer release. Feel
free
to poke me to make a non-dev release in case I drop the ball (or
rather
in case this gets lost in the depth of my todo mailbox).

Best regards,
Steffen

This fix seems to cause t/leak.t to die with Perl < 5.10.0​:

$ make test TEST_FILES=t/leak.t TEST_VERBOSE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils​::Command​::MM" "-e"
"test_harness(1, 'inc', 'blib/lib', 'blib/arch')" t/leak.t
t/leak....1..11
ok 1 - No leaks - array
ok 2 - No leaks - hash
ok 3 - No leaks - code
ok 4 - Load failed (expected)
dubious
Test returned status 0 (wstat 139, 0x8b)
DIED. FAILED tests 5-11
Failed 7/11 tests, 36.36% okay
Failed Test Stat Wstat Total Fail Failed List of Failed


t/leak.t 0 139 11 14 127.27% 5-11
Failed 1/1 test scripts, 0.00% okay. 7/11 subtests failed, 36.36%
okay.

It crashes in 5.8.8, but not 5.8.9. I suspect an incompatibility
between Devel​::Leak and 5.8.8 is to blame, which YAML​::Syck now
tickles.

Possibly, but the leak.t test *did* work on Perls prior to 5.8.9 prior
to this change...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant