Bug#538610: perl: Archive::Tar / Can't call method "value" on an undefined value at .../RawInflate.pm line 64.

Niko Tyni ntyni at debian.org
Mon Jul 27 08:43:24 UTC 2009


retitle 538610 libio-compress-base-perl breaks the older libio-compress-zlib-perl inside perl
reassign 538610 libio-compress-base-perl 2.012-1
thanks

On Sun, Jul 26, 2009 at 12:48:42AM +0200, Vincent Lefevre wrote:
> On 2009-07-26 00:26:51 +0200, Vincent Lefevre wrote:
> > Archive::Tar now fails on all tar archives (compressed or not), with
> > the following error:
> > 
> > Can't call method "value" on an undefined value at /usr/lib/perl/5.10/IO/Uncompress/RawInflate.pm line 64.
> 
> After a strace comparison with another machine for which I do not have
> this problem, the bug occurs only when the libcompress-raw-zlib-perl
> package is *not* installed. Said otherwise,
> /usr/lib/perl5/Compress/Raw/Zlib.pm (from libcompress-raw-zlib-perl)
> is OK, but /usr/lib/perl/5.10.0/Compress/Raw/Zlib.pm (from perl)
> yields the error.

This also happens on lenny.

It's an incompatibility between libio-compress-zlib-perl and
libio-compress-base-perl versions. Perl 5.10.0 has version 2.008 of
them both bundled, but upgrading libio-compress-base-perl alone breaks
earlier versions of libio-compress-zlib-perl.

Can't call method "value" on an undefined value at /usr/lib/perl/5.10/IO/Uncompress/RawInflate.pm line 64.
 at /usr/lib/perl/5.10/IO/Uncompress/RawInflate.pm line 64
    IO::Uncompress::RawInflate::mkUncomp('IO::Uncompress::Gunzip=GLOB(0x1290578)', 'IO::Compress::Base::Parameters=HASH(0x1290710)') called at /usr/share/perl5/IO/Uncompress/Base.pm line 471
    IO::Uncompress::Base::_create('IO::Uncompress::Gunzip=GLOB(0x1290578)', undef, 0, 't.tar', 'Transparent', 1, 'Append', 0, 'AutoClose', ...) called at /usr/lib/perl/5.10/IO/Uncompress/Gunzip.pm line 39
    IO::Uncompress::Gunzip::new('IO::Uncompress::Gunzip', 't.tar', 'Transparent', 1, 'Append', 0, 'AutoClose', 1, 'MultiStream', ...) called at /usr/lib/perl/5.10/Compress/Zlib.pm line 142
    Compress::Zlib::gzopen('t.tar', 'rb') called at /usr/share/perl/5.10/IO/Zlib.pm line 438
    IO::Zlib::OPEN('IO::Zlib=HASH(0x1287ba0)', 't.tar', 'rb') called at /usr/share/perl/5.10/IO/Zlib.pm line 563
    IO::Zlib::AUTOLOAD('IO::Zlib=GLOB(0x1287e28)', 't.tar', 'rb') called at /usr/share/perl/5.10/Archive/Tar.pm line 224
    Archive::Tar::_get_handle('Archive::Tar=HASH(0x10add70)', 't.tar', 0, 'rb') called at /usr/share/perl/5.10/Archive/Tar.pm line 186
    Archive::Tar::read('Archive::Tar=HASH(0x10add70)', 't.tar') called at atar.pl line 7

I see the calling conventions of mkUncomp() in IO::Uncompress::Base
have changed with 2.011:

-    my $status = $obj->mkUncomp($class, $got);
+    my $status = $obj->mkUncomp($got);

Obviously, this breaks if the $obj class (in this case IO::Uncompress::RawInflate)
isn't changed too.

Reassigning to libio-compress-base-perl, which is the party that did a backward
incompatible change.

I can't see a simple solution for fixing this in lenny, but I understand
the libio-compress-*-perl packages are being merged into one.  That should
solve the issue for squeeze.

Cheers,
-- 
Niko Tyni   ntyni at debian.org






More information about the Perl-maintainers mailing list