There are currently quite a few reports about DBD::CSV not able to
install, as 50_chopblanks is failing

I finally found a combination in which I can reproduce the failure, but
it seems brittle and unstable. We needz help :)

How does it look:

FAIL:

DBD-CSV-0.36 630 > make test
Skip blib/lib/Bundle/DBD/CSV.pm (unchanged)
Skip blib/lib/DBD/CSV.pm (unchanged)
PERL_DL_NONLAZY=1 /pro/bin/perl5.14.1 "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/00_meta.t .........
skipped: Author tests not required for installation
t/00_pod.t .......... ok t/00_pod_cov.t ...... ok
t/10_base.t ......... 2/? # Showing relevant versions
# Using DBI            version 1.622
# Using DBD::File      version 0.40
# Using SQL::Statement version 1.401
# Using Text::CSV_XS   version 0.94
# DBD::CSV                 0.36 using Text::CSV_XS (0.94)
#   DBD::File              0.40 using IO::File (1.15)
#     DBI::DBD::SqlEngine  0.03 using SQL::Statement 1.401
# DBI                      1.622
# OS                       linux (2.6.37.6-0.5-desktop)
# Perl                     5.014001 (x86_64-linux-ld)
t/10_base.t ......... ok
t/11_dsnlist.t ...... ok
t/20_createdrop.t ... ok
t/30_insertfetch.t .. ok
t/31_delete.t ....... ok
t/32_update.t ....... ok
t/40_numrows.t ...... ok
t/41_nulls.t ........ ok
t/42_bindparam.t .... ok
t/43_blobs.t ........ ok
t/44_listfields.t ... ok
t/48_utf8.t ......... ok
t/50_chopblanks.t ... 1/?
#   Failed test 'fetch'
#   at t/50_chopblanks.t line 41.

#   Failed test 'content'
#   at t/50_chopblanks.t line 42.
#     Structures begin differing at:
#          $got = undef
#     $expected = ARRAY(0x162ff08)

#   Failed test 'fetch'
#   at t/50_chopblanks.t line 41.

#   Failed test 'content'
#   at t/50_chopblanks.t line 42.
#     Structures begin differing at:
#          $got = undef
#     $expected = ARRAY(0x1628560)
# Looks like you failed 4 tests of 65.
t/50_chopblanks.t ... Dubious, test returned 4 (wstat 1024, 0x400)
Failed 4/65 subtests
t/51_commit.t ....... ok
t/60_misc.t ......... ok
t/70_csv.t .......... ok
t/71_csv-ext.t ...... ok
t/72_csv-schema.t ... ok
t/73_csv-case.t ..... ok
t/80_rt.t ........... ok
t/85_error.t ........ ok

Test Summary Report
-------------------
t/50_chopblanks.t (Wstat: 1024 Tests: 65 Failed: 4)
  Failed tests:  29-30, 47-48
  Non-zero exit status: 4
t/73_csv-case.t   (Wstat: 0 Tests: 44 Failed: 0)
  TODO passed:   30, 32, 34, 36, 38, 40, 42
Files=24, Tests=723,  4 wallclock secs ( 0.12 usr  0.04 sys +  3.57
cusr  0.41 csys =  4.14 CPU) Result: FAIL
Failed 1/24 test programs. 4/723 subtests failed.

Then change like below and behold:

PASS:

DBD-CSV-0.36 633 > make test
PERL_DL_NONLAZY=1 /pro/bin/perl5.14.1 "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/00_meta.t .........
skipped: Author tests not required for installation
t/00_pod.t .......... ok t/00_pod_cov.t ...... ok
t/10_base.t ......... 1/? # Showing relevant versions
# Using DBI            version 1.622
# Using DBD::File      version 0.40
# Using SQL::Statement version 1.401
# Using Text::CSV_XS   version 0.94
# DBD::CSV                 0.36 using Text::CSV_XS (0.94)
#   DBD::File              0.40 using IO::File (1.15)
#     DBI::DBD::SqlEngine  0.03 using SQL::Statement 1.401
# DBI                      1.622
# OS                       linux (2.6.37.6-0.5-desktop)
# Perl                     5.014001 (x86_64-linux-ld)
t/10_base.t ......... ok
t/11_dsnlist.t ...... ok
t/20_createdrop.t ... ok
t/30_insertfetch.t .. ok
t/31_delete.t ....... ok
t/32_update.t ....... ok
t/40_numrows.t ...... ok
t/41_nulls.t ........ ok
t/42_bindparam.t .... ok
t/43_blobs.t ........ ok
t/44_listfields.t ... ok
t/48_utf8.t ......... ok
t/50_chopblanks.t ... ok
t/51_commit.t ....... ok
t/60_misc.t ......... ok
t/70_csv.t .......... ok
t/71_csv-ext.t ...... ok
t/72_csv-schema.t ... ok
t/73_csv-case.t ..... ok
t/80_rt.t ........... ok
t/85_error.t ........ ok
All tests successful.

Test Summary Report
-------------------
t/73_csv-case.t   (Wstat: 0 Tests: 44 Failed: 0)
  TODO passed:   30, 32, 34, 36, 38, 40, 42
Files=24, Tests=723,  4 wallclock secs ( 0.13 usr  0.04 sys +  3.57
cusr  0.40 csys =  4.14 CPU) Result: PASS

--8<--- SqlEngine.pm.diff
---
lib/perl5/site_perl/5.14.1/x86_64-linux-ld/DBI/DBD/SqlEngine.pm.org
2012-12-05 15:53:34.000000000 +0100 +++
lib/perl5/site_perl/5.14.1/x86_64-linux-ld/DBI/DBD/SqlEngine.pm
2012-12-05 15:53:40.000000000 +0100 @@ -795,6 +795,7 @@ sub execute
local $SIG{__WARN__} = sub { push @err, @_ }; $result =
$stmt->execute( $sth, $params ); };
+    my $dummy = \[];
     unless ( defined $result )
     {
         $sth->set_err( $DBI::stderr, $@ || $stmt->{errstr} || $err[0]
); -->8---

These cause FAIL (as in it still FAILS, so no change):

     my $dummy = $result;
     my $dummy = 1;
     my $dummy = [];
     my $dummy = {};

These cause PASS:

     my $dummy = { bonkers => 1 };
     my $dummy = [ 1, 2 ];
     my $dummy = \[];
     my $dummy = \{};

As Tim nicely put it: this smells like the canary in the coalmines

I am currently trying to get all the prereqs installed on perl-5.17.6
compiled with clang -fsanitize=address, but I cannot install a lot of
the prereq's including DBI. I will post a separate message about that

-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.17   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/        http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/

Reply via email to