Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.21.4-409-gef7999f breaks UNIFIEDSW/Finance-BankVal-UK-0.4.tar.gz #14183

Closed
p5pRT opened this issue Oct 26, 2014 · 7 comments
Closed

Comments

@p5pRT
Copy link

p5pRT commented Oct 26, 2014

Migrated from rt.perl.org#123057 (status was 'resolved')

Searchable as RT123057$

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2014

From @andk

git bisect


commit ef7999f
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Sun Oct 12 00​:20​:26 2014 -0700

  Optimise my(@​array)=split

sample report


http​://www.cpantesters.org/cpan/report/c1f00f88-59b7-11e4-a867-5590bb36d621

perl -V


Summary of my perl5 (revision 5 version 21 subversion 5) configuration​:
  Commit id​: 47d3b73
  Platform​:
  osname=linux, osvers=3.16-2-amd64, archname=x86_64-linux-thread-multi
  uname='linux k83 3.16-2-amd64 #1 smp debian 3.16.3-2 (2014-09-20) x86_64 gnulinux '
  config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-perls/perl/v5.21.4-483-g47d3b73/9980 -Dmyhostname=k83 -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Duseithreads -Uuselongdouble -DDEBUGGING=-g'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion='', gccversion='4.9.1', gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3
  ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
  libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
  libc=libc-2.19.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.19'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:
  Compile-time options​: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
  PERL_DONT_CREATE_GVSV
  PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
  PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
  PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
  PERL_USE_DEVEL USE_64_BIT_ALL USE_64_BIT_INT
  USE_ITHREADS USE_LARGE_FILES USE_LOCALE
  USE_LOCALE_COLLATE USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_PERLIO
  USE_PERL_ATOF USE_REENTRANT_API
  Built under linux
  Compiled at Oct 17 2014 00​:04​:21
  %ENV​:
  PERL5LIB=""
  PERL5OPT=""
  PERL5_CPANPLUS_IS_RUNNING="3790"
  PERL5_CPAN_IS_RUNNING="3790"
  PERL_MM_USE_DEFAULT="1"
  @​INC​:
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.21.4-483-g47d3b73/9980/lib/site_perl/5.21.5/x86_64-linux-thread-multi
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.21.4-483-g47d3b73/9980/lib/site_perl/5.21.5
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.21.4-483-g47d3b73/9980/lib/5.21.5/x86_64-linux-thread-multi
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.21.4-483-g47d3b73/9980/lib/5.21.5
  .
--
andreas

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2014

From @jkeenan

On Sun Oct 26 00​:47​:00 2014, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

git bisect
----------
commit ef7999f
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Sun Oct 12 00​:20​:26 2014 -0700

Optimise my(@​array)=split

sample report
-------------
http​://www.cpantesters.org/cpan/report/c1f00f88-59b7-11e4-a867-
5590bb36d621

Confirmed. ef7999f causes a compilation failure in a situation where 5.20.1 does not.

I have translated the code in the CPAN distribution which suffered the failure into a patch to t/op/chop.t. blead will experience a syntax error and compilation failure when you try to run that test file.

#####
$ cd t;./perl harness -v op/chop.t;cd -
Can't modify split in chomp at op/chop.t line 271, near "))"
Execution of op/chop.t aborted due to compilation errors.
Dubious, test returned 255 (wstat 65280, 0xff00)
No subtests run

Test Summary Report


op/chop.t (Wstat​: 65280 Tests​: 0 Failed​: 0)
  Non-zero exit status​: 255
  Parse errors​: No plan found in TAP output
Files=1, Tests=0, 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU)
Result​: FAIL
/home/jkeenan/gitwork/perl
#####

Thank you very much.
Jim Keenan

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2014

From @jkeenan

123057-Test-file-fails-to-compile.patch
From fa71c6b4167d3f81335fb9677c8b7169ccf87d88 Mon Sep 17 00:00:00 2001
From: James E Keenan <jkeenan@cpan.org>
Date: Sun, 26 Oct 2014 10:14:40 -0400
Subject: [PATCH] Test file fails to compile.

For: RT #123057
---
 t/op/chop.t | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/t/op/chop.t b/t/op/chop.t
index 3cf8735..884145c 100644
--- a/t/op/chop.t
+++ b/t/op/chop.t
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl'; require './charset_tools.pl';
 }
 
-plan tests => 143;
+plan tests => 144;
 
 $_ = 'abc';
 $c = foo();
@@ -263,3 +263,13 @@ foreach my $start (@chars) {
         is($result, "\x{fffffffffffffffe}", "chop even higher 'unicode' - result");
     }
 }
+
+{
+    my $expected = 99999;
+    my $input = "UserID\talpha $expected\n";
+    my $uid = '';
+    chomp(my @line = split (/ |\t/,$input));
+    $uid = $line[-1];
+    is($uid, $expected,
+        "RT #123057: chomp works as expected on split");
+}
-- 
1.9.1

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2014

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2014

From @cpansprout

On Sun Oct 26 07​:24​:32 2014, jkeenan wrote​:

Confirmed. ef7999f causes a compilation failure in a situation where
5.20.1 does not.

I have translated the code in the CPAN distribution which suffered the
failure into a patch to t/op/chop.t. blead will experience a syntax
error and compilation failure when you try to run that test file.

Thank you for the test case. You’ve saved me time. It turns out this is an old bug in the optimisation, which I have ended up extending to more cases​:

$ perl5.8.7 -e '(@​a = split//,$_)=1' # fine
$ perl5.8.7 -e '(@​a = split//,$x)=1'
Can't modify split in list assignment at -e line 1, at EOF
Execution of -e aborted due to compilation errors.

Judging by the source code, it probably goes back to perl 3.0.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Oct 27, 2014

From @jkeenan

On Sun Oct 26 08​:13​:14 2014, sprout wrote​:

On Sun Oct 26 07​:24​:32 2014, jkeenan wrote​:

Confirmed. ef7999f causes a compilation failure in a situation where
5.20.1 does not.

I have translated the code in the CPAN distribution which suffered
the
failure into a patch to t/op/chop.t. blead will experience a syntax
error and compilation failure when you try to run that test file.

Thank you for the test case. You’ve saved me time. It turns out this
is an old bug in the optimisation, which I have ended up extending to
more cases​:

$ perl5.8.7 -e '(@​a = split//,$_)=1' # fine
$ perl5.8.7 -e '(@​a = split//,$x)=1'
Can't modify split in list assignment at -e line 1, at EOF
Execution of -e aborted due to compilation errors.

Judging by the source code, it probably goes back to perl 3.0.

As of commit e4e9592, this appears to be resolved.

#####
$ /home/jkeenan/gitwork/perl/perl -v |head -2 | tail -1
This is perl 5, version 21, subversion 6 (v5.21.6 (v5.21.5-117-ge4e9592)) built for x86_64-linux

$ /home/jkeenan/gitwork/perl/perl -I/home/jkeenan/gitwork/perl/lib -Iblib/lib t/Finance-BankVal-UK.t
\C is deprecated in regex; marked by <-- HERE in m/(\C <-- HERE )/ at /home/jkeenan/perl5/lib/perl5/URI/Escape.pm line 205.
1..7
ok 1 - use Finance​::BankVal​::UK;
ok 2 - format validation
ok 3 - sort code validation
ok 4 - account validation
ok 5 - user id validation
ok 6 - PIN validation
ok 7 - PIN validation
#####
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Oct 27, 2014

@jkeenan - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant