Subject: | Test fails during build on RHE ES 2.1 |
Building Devel-LeakTrace-0.05 on Red Hat Enterprise ES v2.1, tests 8 and
11 fail.
Running test for module Devel::LeakTrace
Running Build for R/RC/RCLAMP/Devel-LeakTrace-0.05.tar.gz
Is already unwrapped into directory
/u/wtg/drolstad/.cpan/build/Devel-LeakTrace-0.05
Has already been processed within this session
Running Build test
t/00compile..........Too late to run INIT block at
/u/wtg/drolstad/.cpan/build/Devel-LeakTrace-0.05/blib/lib/Devel/LeakTrace.pm
line 15.
t/00compile..........ok 1/1leaked SV(0x814c4e8) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 42
leaked SV(0x814c500) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 32
leaked SV(0x82744c0) from à@) line 135
leaked SV(0x82744cc) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 32
leaked SV(0x82744d8) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 32
leaked SV(0x82744e4) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 32
leaked SV(0x82744f0) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 32
t/00compile..........ok
t/Devel-LeakTrace....NOK 8
# Failed test 'one SV'
# in t/Devel-LeakTrace.t at line 30.
t/Devel-LeakTrace....NOK 11
# Failed test 'and that's all'
# in t/Devel-LeakTrace.t at line 33.
# Looks like you failed 2 tests of 11.
t/Devel-LeakTrace....dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 8, 11
Failed 2/11 tests, 81.82% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/Devel-LeakTrace.t 2 512 11 2 18.18% 8 11
Failed 1/2 test scripts, 50.00% okay. 2/12 subtests failed, 83.33% okay.
./Build test -- NOT OK
Failed during this command:
RCLAMP/Devel-LeakTrace-0.05.tar.gz : make_test NO
Putting a diag( $_ ); statement just after the second output subroutine
in Devel-LeakTrace.t yields the clue.
bash-2.05$ ./Build test
t/00compile..........Too late to run INIT block at
/u/wtg/drolstad/.cpan/build/D
evel-LeakTrace-0.05/blib/lib/Devel/LeakTrace.pm line 15.
t/00compile..........ok 1/1leaked SV(0x814c48c) from
/usr/local/lib/perl5/5.8.4/
warnings/register.pm line 42
leaked SV(0x814c4a4) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274414) from à@) line 135
leaked SV(0x8274420) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x827442c) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274438) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274444) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
t/00compile..........ok
t/Devel-LeakTrace....ok 6/11#
# leaked RV(0x812ef70) from -e line 3
# leaked AV(0x812f048) from -e line 3
# leaked SV(0x812ee80) from -e line 3 <---** THE PROBLEM IS HERE **
t/Devel-LeakTrace....NOK 8
# Failed test 'one SV'
# in t/Devel-LeakTrace.t at line 32.
t/Devel-LeakTrace....NOK 11
# Failed test 'and that's all'
# in t/Devel-LeakTrace.t at line 35.
# Looks like you failed 2 tests of 11.
t/Devel-LeakTrace....dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 8, 11
Failed 2/11 tests, 81.82% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/Devel-LeakTrace.t 2 512 11 2 18.18% 8 11
Failed 1/2 test scripts, 50.00% okay. 2/12 subtests failed, 83.33% okay.
bash-2.05$
The pattern in Test 8 of Devel-LeakTrace.t specifies "line 2" rather
than "line 3" as you can see:
ok( s/^leaked SV\(.*?\) from -e line 2$//m, 'one SV');
To make the tests more platform independent, the tests could be restated
to be more general. The last 5 lines of Devel-LeakTrace.t would now
like this:
ok( $_, 'leak a reference loop $foo[1] = \@foo' );
ok( s/^leaked SV\(.*?\) from -e line \d$//m, 'one SV');
ok( s/^leaked AV\(.*?\) from -e line \d$//m, 'one AV');
ok( s/^leaked RV\(.*?\) from -e line \d$//m, 'one RV');
ok( m/^\n*$/, "and that's all" );
The same logic should be applied the similar test lines that occur
earlier in Devel-LeakTrace.t .
The test now runs to completion.
bash-2.05$ ./Build test
t/00compile..........Too late to run INIT block at
/u/wtg/drolstad/.cpan/build/D
evel-LeakTrace-0.05/blib/lib/Devel/LeakTrace.pm line 15.
t/00compile..........ok 1/1leaked SV(0x814c48c) from
/usr/local/lib/perl5/5.8.4/
warnings/register.pm line 42
leaked SV(0x814c4a4) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274414) from à@) line 135
leaked SV(0x8274420) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x827442c) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274438) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
leaked SV(0x8274444) from
/usr/local/lib/perl5/5.8.4/warnings/register.pm line 3
2
t/00compile..........ok
t/Devel-LeakTrace....ok
All tests successful.
Files=2, Tests=12, 0 wallclock secs ( 0.41 cusr + 0.11 csys = 0.52 CPU)
bash-2.05$
The following version of glib is installed:
glib-1.2.10-5
glibc-kernheaders-2.4-7.16
glibc-2.2.4-32.20
glibc-devel-2.2.4-32.20
glibc-common-2.2.4-32.20