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.19.5-40-g2e73d70 breaks DFH/App-JobLog-1.031.tar.gz #13373

Closed
p5pRT opened this issue Oct 26, 2013 · 12 comments
Closed

Bleadperl v5.19.5-40-g2e73d70 breaks DFH/App-JobLog-1.031.tar.gz #13373

p5pRT opened this issue Oct 26, 2013 · 12 comments

Comments

@p5pRT
Copy link

p5pRT commented Oct 26, 2013

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

Searchable as RT120374$

@p5pRT
Copy link
Author

p5pRT commented Oct 26, 2013

From @andk

git bisect


commit 2e73d70
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Oct 24 14​:45​:34 2013 -0700

  Propagate lvalue context to && and ||

diagnostics


http​://www.cpantesters.org/cpan/report/a6669ff4-3e22-11e3-8065-20e7f24aa4a3

perl -V


Summary of my perl5 (revision 5 version 19 subversion 6) configuration​:
  Commit id​: 2e73d70
  Platform​:
  osname=linux, osvers=3.10-3-amd64, archname=x86_64-linux-thread-multi
  uname='linux k83 3.10-3-amd64 #1 smp debian 3.10.11-1 (2013-09-10) x86_64 gnulinux '
  config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-g2e73d70/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
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.8.1', 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='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
  libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
  libc=, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.17'
  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'

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_PERLIO USE_PERL_ATOF
  USE_REENTRANT_API
  Built under linux
  Compiled at Oct 25 2013 02​:58​:40
  @​INC​:
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-g2e73d70/9980/lib/site_perl/5.19.6/x86_64-linux-thread-multi
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-g2e73d70/9980/lib/site_perl/5.19.6
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-g2e73d70/9980/lib/5.19.6/x86_64-linux-thread-multi
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-g2e73d70/9980/lib/5.19.6
  .

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Dec 25, 2013

From @jkeenan

On Sat Oct 26 06​:05​:20 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

git bisect
----------
commit 2e73d70
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Oct 24 14​:45​:34 2013 -0700

Propagate lvalue context to && and ||

diagnostics
-----------
http​://www.cpantesters.org/cpan/report/a6669ff4-3e22-11e3-8065-
20e7f24aa4a3

perl -V
-------
Summary of my perl5 (revision 5 version 19 subversion 6)
configuration​:
Commit id​: 2e73d70
Platform​:
osname=linux, osvers=3.10-3-amd64, archname=x86_64-linux-thread-
multi
uname='linux k83 3.10-3-amd64 #1 smp debian 3.10.11-1 (2013-09-10)
x86_64 gnulinux '
config_args='-Dprefix=/home/sand/src/perl/repoperls/installed-
perls/perl/v5.19.5-40-g2e73d70/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
useperlio=define, d_sfio=undef, uselargefiles=define,
usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler​:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
-fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.8.1', 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='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries​:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib
/usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
-lgdbm_compat
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.17'
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'

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_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Built under linux
Compiled at Oct 25 2013 02​:58​:40
@​INC​:
/home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-
g2e73d70/9980/lib/site_perl/5.19.6/x86_64-linux-thread-multi
/home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-
g2e73d70/9980/lib/site_perl/5.19.6
/home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-
g2e73d70/9980/lib/5.19.6/x86_64-linux-thread-multi
/home/sand/src/perl/repoperls/installed-perls/perl/v5.19.5-40-
g2e73d70/9980/lib/5.19.6
.

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-JobLog v1.031 as having a very strong record of PASSes on Perl 5.18 and 5.19.

So I wonder whether this ticket is still valid.

Comments?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Dec 25, 2013

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

@p5pRT
Copy link
Author

p5pRT commented Dec 25, 2013

From @andk

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-JobLog v1.031 as having a very strong record of PASSes on Perl 5.18 and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Or configure your access to the other url at prefs.cpantesters.org

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Dec 26, 2013

From @jkeenan

On Wed Dec 25 15​:22​:25 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-
JobLog v1.031 as having a very strong record of PASSes on Perl 5.18
and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try
the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Thanks for that lead. And that confirms that this is a recent failure. I just tested the module against an installed Perl 5.18.1 and it passed (albeit with a load of those "when is experimental" warnings).

jimk

@p5pRT
Copy link
Author

p5pRT commented Dec 26, 2013

From @jkeenan

On Wed Dec 25 17​:38​:21 2013, jkeenan wrote​:

On Wed Dec 25 15​:22​:25 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de
wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-
JobLog v1.031 as having a very strong record of PASSes on Perl 5.18
and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try
the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Thanks for that lead. And that confirms that this is a recent
failure. I just tested the module against an installed Perl 5.18.1
and it passed (albeit with a load of those "when is experimental"
warnings).

jimk

Have notified distro maintainer via https://rt.cpan.org/Ticket/Display.html?id=91660

@p5pRT
Copy link
Author

p5pRT commented Feb 6, 2014

From @tonycoz

On Wed Dec 25 15​:22​:25 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-
JobLog v1.031 as having a very strong record of PASSes on Perl 5.18
and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try
the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Or configure your access to the other url at prefs.cpantesters.org

This turns out to be caused by a change in perl, previously​:

$ perl -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {};

with blead​:

$ ./perl -Ilib -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {
  'modifier' => undef
  };

bisected to​:

commit 2e73d70
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Oct 24 14​:45​:34 2013 -0700

  Propagate lvalue context to && and ||
 
  I did this for the last statement in an lvalue sub (and the argument
  to ‘return’ in an lvalue sub) in commit 2ec7f6f.
 
  It turns out that it needs to apply in other lvaluish contexts, too​:
 
  $ ./perl -Ilib -le 'for($a||$b){$_++} print $b'
  1
  $ ./perl -Ilib -le 'for(pos $a || pos $b){$_++} print pos $b'
  Modification of a read-only value attempted at -e line 1.
 
  If I can assign to $b through this construct, then why not pos?

The author in this case is I think doing the obvious thing to avoid lvalue context from modifying the hash, but this breaks that.

Tony

@p5pRT
Copy link
Author

p5pRT commented Feb 6, 2014

From @demerphq

On 6 February 2014 12​:28, Tony Cook via RT <perlbug-followup@​perl.org> wrote​:

On Wed Dec 25 15​:22​:25 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-
JobLog v1.031 as having a very strong record of PASSes on Perl 5.18
and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try
the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Or configure your access to the other url at prefs.cpantesters.org

This turns out to be caused by a change in perl, previously​:

$ perl -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {};

with blead​:

$ ./perl -Ilib -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {
'modifier' => undef
};

bisected to​:

commit 2e73d70
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Oct 24 14​:45​:34 2013 -0700

Propagate lvalue context to && and ||

I did this for the last statement in an lvalue sub \(and the argument
to 'return' in an lvalue sub\) in commit 2ec7f6f2428\.

It turns out that it needs to apply in other lvaluish contexts\, too&#8203;:

$ \./perl \-Ilib \-le 'for\($a||$b\)\{$\_\+\+\} print $b'
1
$ \./perl \-Ilib \-le 'for\(pos $a || pos $b\)\{$\_\+\+\} print pos $b'
Modification of a read\-only value attempted at \-e line 1\.

If I can assign to $b through this construct\, then why not pos?

The author in this case is I think doing the obvious thing to avoid lvalue context from modifying the hash, but this breaks that.

Personally I consider this a pretty serious regression. Lots of code
uses this idiom to avoid autovivification.

Yves

--
perl -Mre=debug -e "/just|another|perl|hacker/"

@p5pRT
Copy link
Author

p5pRT commented Feb 6, 2014

From @rgarcia

On 6 February 2014 06​:08, demerphq <demerphq@​gmail.com> wrote​:

On 6 February 2014 12​:28, Tony Cook via RT <perlbug-followup@​perl.org> wrote​:

On Wed Dec 25 15​:22​:25 2013, andreas.koenig.7os6VVqR@​franz.ak.mind.de wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

At http​://www.cpantesters.org/distro/A/App-JobLog.html, I see App-
JobLog v1.031 as having a very strong record of PASSes on Perl 5.18
and 5.19.

So I wonder whether this ticket is still valid.

Comments?

I think the URL you chose filters bleadperl releases out. Please try
the
matrix​:

http​://matrix.cpantesters.org/?dist=App-JobLog%201.031

Or configure your access to the other url at prefs.cpantesters.org

This turns out to be caused by a change in perl, previously​:

$ perl -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {};

with blead​:

$ ./perl -Ilib -MData​::Dumper -e 'my %h; for ($h{modifier} || "") { 1 } print Dumper(\%h)'
$VAR1 = {
'modifier' => undef
};

bisected to​:

commit 2e73d70
Author​: Father Chrysostomos <sprout@​cpan.org>
Date​: Thu Oct 24 14​:45​:34 2013 -0700

Propagate lvalue context to && and ||

I did this for the last statement in an lvalue sub \(and the argument
to 'return' in an lvalue sub\) in commit 2ec7f6f2428\.

It turns out that it needs to apply in other lvaluish contexts\, too&#8203;:

$ \./perl \-Ilib \-le 'for\($a||$b\)\{$\_\+\+\} print $b'
1
$ \./perl \-Ilib \-le 'for\(pos $a || pos $b\)\{$\_\+\+\} print pos $b'
Modification of a read\-only value attempted at \-e line 1\.

If I can assign to $b through this construct\, then why not pos?

The author in this case is I think doing the obvious thing to avoid lvalue context from modifying the hash, but this breaks that.

Personally I consider this a pretty serious regression. Lots of code
uses this idiom to avoid autovivification.

Totally agreed. Moreover that means that upgrading perl could make an
existing program start leaking memory by autovifiying never-used keys.

@p5pRT
Copy link
Author

p5pRT commented Feb 7, 2014

From perl5-porters@perl.org

Tony Cook wrote​:

The author in this case is I think doing the obvious thing to avoid
lvalue context from modifying the hash, but this breaks that.

I have a fix in my head that will make this work the way it used to
without reintroducing the bug that 2e73d70 fixed.

I just have not had a chance to do it yet. It will involve propagat-
ing lvalue context only to ops that do not autovivify (but still to
all op types if the lvalue type is OP_LEAVESUBLV).

@p5pRT
Copy link
Author

p5pRT commented Feb 9, 2014

From @cpansprout

Fixed in 375879a.

--

Father Chrysostomos

@p5pRT
Copy link
Author

p5pRT commented Feb 9, 2014

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

@p5pRT p5pRT closed this as completed Feb 9, 2014
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