My last install was on 3.10.02 and all was well with the set of Perl modules had then, which included Text::CSV_XS-0.85. As I prepared to build 3.10.06, I upgraded my Perl modules as some additions were required in any case. After the cpan upgrades, 'make test' was failing for both my 3.10.02 and 3.10.06 build trees. t/Labels.t would just exit after running the first sub-test (use).
After a couple of days, I have tracked this down to a change in Text/CSV_XS.pm: *** Text-CSV_XS-0.85/blib/lib/Text/CSV_XS.pm 2011-09-07 12:34:16.000000000 +0100 --- .cpan/build/Text-CSV_XS-0.97-cJDgOc/blib/lib/Text/CSV_XS.pm 2013-03-30 14:58:47.000000000 +0000 *************** ... (in the subroutine 'parse') ... *************** *** 492,498 **** my $fflags = []; $self->{_STRING} = \$str; if (defined $str && $self->Parse ($str, $fields, $fflags)) { - $self->{_ERROR_INPUT} = undef; $self->{_FIELDS} = $fields; $self->{_FFLAGS} = $fflags; $self->{_STATUS} = 1; I further tracked this down to the most recent change (0.96 -> 0.97 around March 30th, 2013). The changelog says: diff Text-CSV_XS-0.96/ChangeLog .cpan/build/Text-CSV_XS-0.97-cJDgOc/ChangeLog 0a1,5 > 0.97 - 2013-03-30, H.Merijn Brand > * Regain the speed from 0.91 (buffer back to 1k) > * Minor cleanup in XS code > * Add diag_verbose attribute > I guess this qualifies as a minor cleanup if you assume people won't call error_input on no error condition. The error from t/Labels.t is a segmentation fault when calling $csv->error_input() in Labels/Label.pm. sub _get_text_fields { my $format_string = shift; my $csv = Text::CSV_XS->new({allow_whitespace => 1}); my $status = $csv->parse($format_string); my @sorted_fields = map {{ 'code' => $_, desc => $_ }} map { $_ eq 'callnumber' ? 'itemcallnumber' : $_ } # see bug 5653 $csv->fields(); my $error = $csv->error_input(); warn sprintf('Text field sort failed with this error: %s', $error) if $error; return \@sorted_fields; } I think there is an error here in _get_text_fields where it calls $csv->error_input() when there was no error. In the past, it would get an undef, but the the more recent CSV_XS.pm module, the attribute is not defined at all and it seg faults. I think error_input() should only be called if $status != 1. Comments? I think this is a Koha bug. Revertion to Text::CSV_XS-0.96 resolves the problem until we fix Koha. Regards, -Doug- _______________________________________________ Koha mailing list http://koha-community.org Koha@lists.katipo.co.nz http://lists.katipo.co.nz/mailman/listinfo/koha