Skip Menu |

This queue is for tickets about the Sys-Statistics-Linux CPAN distribution.

Report information
The Basics
Id: 39514
Status: resolved
Priority: 0/
Queue: Sys-Statistics-Linux

People
Owner: Nobody in particular
Requestors: toddr [...] cpanel.net
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.38
Fixed in: (no value)



Subject: test t/090-diskusage hanging on $lxs->get
Hi, I've added some diag messages to 090-diskusage.t and am getting the following output before hang. Something is hanging for $lxs->get. I'm also including my perl information for further debug, but quick summary is that I'm running on linux AMD 64 with NAS mount points. output: prove -bvm t/090-diskusage.t t/090-diskusage.... 1..5 # Start # got new # Just set ammended section: diag "Start"; my $lxs = Sys::Statistics::Linux->new; diag "got new"; $lxs->set(diskusage => 1); diag "Just set"; my $stats = $lxs->get; diag "Got stats"; perl info: $ perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.9-42.0.3.elsmp, archname=x86_64-linux- thread-multi-ld uname='linux computer1 2.6.9-42.0.3.elsmp #1 smp mon sep 25 17:24:31 edt 2006 x86_64 x86_64 x86_64 gnulinux ' config_args='' hint=previous, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=define usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS - fno-strict-aliasing -pipe -Wdeclaration-after-statement - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno- strict-aliasing -pipe -Wdeclaration-after-statement - I/usr/local/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno- strict-aliasing -pipe -Wdeclaration-after-statement - I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccversion='', gccversion='3.4.6 20060404 (Red Hat 3.4.6-3)', 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='gcc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=/lib/libc-2.3.4.so, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='2.3.4' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LONG_DOUBLE USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Oct 18 2007 19:34:15 %ENV: PERL5_CPANPLUS_IS_RUNNING="2117" PERL5_CPAN_IS_RUNNING="2117" PERLDB_OPTS="RemotePort=172.28.144.159:9000" @INC: /opt/perl588/lib/5.8.8/x86_64-linux-thread-multi-ld /opt/perl588/lib/5.8.8 /opt/perl588/site/lib/x86_64-linux-thread-multi-ld /opt/perl588/site/lib /opt/perl588/site/lib .
From: todd.e.rinaldo [...] jpmorgan.com
$ uname -a Linux computer1 2.6.9-42.0.3.ELsmp #1 SMP Mon Sep 25 17:24:31 EDT 2006 x86_64 x86_64 x86_64 GNU/Linux
Hi Rinaldo, Show quoted text
> diag "Start"; > my $lxs = Sys::Statistics::Linux->new; > diag "got new"; > $lxs->set(diskusage => 1); > diag "Just set"; > my $stats = $lxs->get; > diag "Got stats";
internal DiskUsage.pm just calling the linux command "df -k". If $lxs->get() hangs, then "df -k" hangs as well. This is not a DiskUsage.pm problem but rather a OS problem. If you want to intercept this issue you maybe need to work with alarm(). Here a little example: ------------------------------------------------------------ use strict; use warnings; use Sys::Statistics::Linux; use Data::Dumper; my $timeout = 3; my $lxs = Sys::Statistics::Linux->new(); my $stat = (); eval { local $SIG{ALRM} = sub { die "df -k runs on a timeout" }; alarm($timeout); $lxs->set(diskusage => 1); $stat = $lxs->get(); alarm(0); }; die $@ if $@; print Dumper($stat); ------------------------------------------------------------ Cheers, Jonny
From: todd.e.rinaldo [...] jpmorgan.com
Johnny, Thanks for the info. Looks like some unnoticed hurricane damage to some filers here in Houston. Thanks, Todd