Package: munin-node
Version: 2.0.6-1
Severity: normal
Tags: patch

Dear Maintainer,

after upgrading from squeeze[0] to wheezy I noticed the iostat_ios graphs
are empty.

The error messages in node-log were helpful:

2012/09/23-16:05:10 [12979] Error output from iostat_ios:
2012/09/23-16:05:10 [12979]     Byte order is not compatible at 
/usr/lib/perl/5.14/Storable.pm line 379, at /etc/munin/plugins/iostat_ios line 
216
2012/09/23-16:05:10 [12979] Service 'iostat_ios' exited with status 25/0.

Problem: The storable format went through an obviously incompatible
change between squeeze (Perl 5.10) and wheezy (Perl 5.14), at least on
i386 (not on amd64, though).

How to repeat:

On i386, for both squeeze and wheezy, run

$ perl -e 'use Storable qw(store); store ({}, "$^V.storable")'

then

$ perl -e 'use Storable qw(retrieve); print "$^V\n"; foreach (@ARGV) { print 
"$_\n"; eval { retrieve ($_) } or print "FAIL: $@" }' *.storable

Output for squeeze:

    v5.10.1
    v5.10.1.storable
    v5.14.2.storable
    FAIL: Byte order is not compatible at ../../lib/Storable.pm (autosplit into 
../../lib/auto/Storable/_retrieve.al) line 380, at -e line 1

Output for wheezy:

    v5.14.2
    v5.10.1.storable
    FAIL: Byte order is not compatible at /usr/lib/perl/5.14/Storable.pm line 
379, at -e line 1
    v5.14.2.storable


How to fix:

At first, handle "retrieve" failures gracefully:

 sub get_state {
     my ($R);
     return(undef) unless ( -r STATEFILE);
-    $R = retrieve( STATEFILE );
+    eval { $R = retrieve( STATEFILE ); };
     return($R);
 }

And second, please do never use "store" unless you really know what
you're doing and you're willing to suffer from a lot of pain, like
here. Use "nstore" instead. If that plugin would have used nstore in
the first place, the entire upgrade would have been smoothless.

Cheers,
    Christoph

[0] More precisely, the upgrade was from a 2.0.6 backport but I doubt
    this makes a difference.

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 3.4.11 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages munin-node depends on:
ii  adduser             3.113+nmu3
ii  gawk                1:4.0.1+dfsg-2
ii  libnet-server-perl  2.006-1
ii  lsb-base            4.1+Debian7
ii  munin-common        2.0.6-1
ii  munin-plugins-core  2.0.6-1
ii  perl                5.14.2-13
ii  procps              1:3.3.3-2

Versions of packages munin-node recommends:
ii  libnet-snmp-perl     6.0.1-2
ii  munin-plugins-extra  2.0.6-1

Versions of packages munin-node suggests:
ii  ethtool                           1:3.4.2-1
ii  hdparm                            9.39-1+b1
pn  libcache-cache-perl               <none>
pn  libcrypt-ssleay-perl              <none>
pn  libdbd-mysql-perl                 <none>
pn  libdbd-pg-perl                    <none>
pn  liblwp-useragent-determined-perl  <none>
pn  libnet-irc-perl                   <none>
pn  libtext-csv-xs-perl               <none>
ii  libwww-perl                       6.04-1
pn  libxml-simple-perl                <none>
ii  lm-sensors                        1:3.3.2-2
pn  logtail                           <none>
pn  munin                             <none>
pn  munin-plugins-java                <none>
pn  mysql-client                      <none>
ii  net-tools                         1.60-24.2
ii  python                            2.7.3~rc2-1
pn  ruby                              <none>
ii  smartmontools                     5.41+svn3365-1

-- no debconf information

Attachment: signature.asc
Description: Digital signature

Reply via email to