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.13.9-540-g0a0b6c9 breaks IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz #11140

Closed
p5pRT opened this issue Feb 19, 2011 · 11 comments
Closed

Comments

@p5pRT
Copy link

p5pRT commented Feb 19, 2011

Migrated from rt.perl.org#84444 (status was 'rejected')

Searchable as RT84444$

@p5pRT
Copy link
Author

p5pRT commented Feb 19, 2011

From @andk

git bisect​:


  0a0b6c9 is the first bad commit
  commit 0a0b6c9
  Author​: Leon Timmermans <fawaka@​gmail.com>
  Date​: Thu Feb 17 18​:04​:00 2011 -0800
 
  [perl #84358] Removing AutoLoader from DynaLoader

example fail report​:


  Not yet available on cpantesters...

  PERL_DL_NONLAZY=1 /home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9/bin/perl "-MExtUtils​::Command​::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
  t/bignum.t .. skipped​: (no reason given)
  t/format.t .. 1/10 Can't locate object method "new_public_key" via package "Crypt​::OpenSSL​::RSA" at t/format.t line 33.
  t/format.t .. Dubious, test returned 255 (wstat 65280, 0xff00)
  Failed 6/10 subtests
  t/rsa.t ..... Can't locate object method "import_random_seed" via package "Crypt​::OpenSSL​::RSA" at t/rsa.t line 62.
  t/rsa.t ..... Dubious, test returned 255 (wstat 65280, 0xff00)
  Failed 63/63 subtests

  Test Summary Report
  -------------------
  t/format.t (Wstat​: 65280 Tests​: 4 Failed​: 0)
  Non-zero exit status​: 255
  Parse errors​: Bad plan. You planned 10 tests but ran 4.
  t/rsa.t (Wstat​: 65280 Tests​: 0 Failed​: 0)
  Non-zero exit status​: 255
  Parse errors​: Bad plan. You planned 63 tests but ran 0.
  Files=3, Tests=4, 1 wallclock secs ( 0.02 usr 0.02 sys + 0.11 cusr 0.03 csys = 0.18 CPU)
  Result​: FAIL

perl -V​:


  Summary of my perl5 (revision 5 version 13 subversion 9) configuration​:
  Commit id​: 0a0b6c9
  Platform​:
  osname=linux, osvers=2.6.32-5-xen-amd64, archname=x86_64-linux
  uname='linux k81 2.6.32-5-xen-amd64 #1 smp wed jan 12 05​:46​:49 utc 2011 x86_64 gnulinux '
  config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9 -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Uuseithreads -Uuselongdouble'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2',
  cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.4.5', 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 /usr/lib /lib64 /usr/lib64
  libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
  libc=/lib/libc-2.11.2.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.11.2'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'

  Characteristics of this binary (from libperl)​:
  Compile-time options​: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP PERL_USE_DEVEL
  USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES
  USE_PERLIO USE_PERL_ATOF
  Built under linux
  Compiled at Feb 19 2011 18​:46​:36
  @​INC​:
  /home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9/lib/site_perl/5.13.9/x86_64-linux
  /home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9/lib/site_perl/5.13.9
  /home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9/lib/5.13.9/x86_64-linux
  /home/src/perl/repoperls/installed-perls/perl/v5.13.9-540-g0a0b6c9/lib/5.13.9
  .

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Feb 19, 2011

From @nwc10

On Sat, Feb 19, 2011 at 10​:05​:38AM -0800, Andreas J. Koenig via RT wrote​:

# <URL​: http​://rt.perl.org/rt3/Ticket/Display.html?id=84444 >

git bisect​:
-----------
0a0b6c9 is the first bad commit
commit 0a0b6c9
Author​: Leon Timmermans <fawaka@​gmail.com>
Date​: Thu Feb 17 18​:04​:00 2011 -0800

[perl #84358] Removing AutoLoader from DynaLoader

This is going to be a judgment call. The module in question relies on the
undocumented behaviour that DynaLoader ISA AutoLoader.

Arguably the module is buggy and needs fixing with explicit inheritance.
It's question of how many make this assumption, and how strongly we feel
about whose "fault" it is.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Feb 19, 2011

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

@p5pRT
Copy link
Author

p5pRT commented Feb 19, 2011

From @nwc10

On Sat, Feb 19, 2011 at 06​:20​:43PM +0000, Nicholas Clark wrote​:

This is going to be a judgment call. The module in question relies on the
undocumented behaviour that DynaLoader ISA AutoLoader.

Arguably the module is buggy and needs fixing with explicit inheritance.
It's question of how many make this assumption, and how strongly we feel
about whose "fault" it is.

And how much notice they need to change it.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Feb 19, 2011

From @Leont

On Sat, Feb 19, 2011 at 7​:20 PM, Nicholas Clark <nick@​ccl4.org> wrote​:

This is going to be a judgment call. The module in question relies on the
undocumented behaviour that DynaLoader ISA AutoLoader.

Arguably the module is buggy and needs fixing with explicit inheritance.
It's question of how many make this assumption, and how strongly we feel
about whose "fault" it is.

I think cleanest short-term solution would be simply reinserting this
line into DynaLoader

  *AUTOLOAD = \&AutoLoader​::AUTOLOAD;

It won't make DynaLoader derived classes autoloaded, but it will make
AUTOLOAD available to any derived class that assumes DynaLoader isa
AutoLoader.

Leon

@p5pRT
Copy link
Author

p5pRT commented Feb 20, 2011

From vadim.konovalov@alcatel-lucent.com

From​: Nicholas Clark [mailto​:nick@​flirble.org] On Behalf Of Nicholas Clark
On Sat, Feb 19, 2011 at 06​:20​:43PM +0000, Nicholas Clark wrote​:

This is going to be a judgment call. The module in question
relies on the
undocumented behaviour that DynaLoader ISA AutoLoader.

as a humble perl user, I very much prefer to have as little AutoLoader/AutoSplit as possible.

I very much like 0a0b6c9 commit
(http​://perl5.git.perl.org/perl.git/commitdiff/0a0b6c96e6042658aa123b3990724be593a2bb63)

Arguably the module is buggy and needs fixing with explicit
inheritance.
It's question of how many make this assumption, and how
strongly we feel
about whose "fault" it is.

And how much notice they need to change it.

Best regards,
Vadim.

@p5pRT
Copy link
Author

p5pRT commented Feb 20, 2011

From @cpansprout

On Sat Feb 19 12​:48​:25 2011, LeonT wrote​:

On Sat, Feb 19, 2011 at 7​:20 PM, Nicholas Clark <nick@​ccl4.org> wrote​:

This is going to be a judgment call. The module in question relies
on the
undocumented behaviour that DynaLoader ISA AutoLoader.

Arguably the module is buggy and needs fixing with explicit inheritance.
It's question of how many make this assumption, and how strongly we feel
about whose "fault" it is.

I think cleanest short-term solution would be simply reinserting this
line into DynaLoader

*AUTOLOAD = \&AutoLoader​::AUTOLOAD;

It won't make DynaLoader derived classes autoloaded, but it will make
AUTOLOAD available to any derived class that assumes DynaLoader isa
AutoLoader.

I don’t understand. Apart from moving subroutines back below the
__END__, this practically reverts your patch.

What’s the different between DynaLoader-derived classes’ being
autoloaded and DynaLoader-derived classes’ being able to inherit
AUTOLOAD from DynaLoader?

(I, for one, think this new ‘bug’ [not autoloading] is perfectly fine
and not controversial, but if others disagree, we could always revert
your patch.)

@p5pRT
Copy link
Author

p5pRT commented Feb 20, 2011

From @Leont

On Sun, Feb 20, 2011 at 10​:15 PM, Father Chrysostomos via RT
<perlbug-followup@​perl.org> wrote​:

I don’t understand. Apart from moving subroutines back below the
__END__, this practically reverts your patch.

What’s the different between DynaLoader-derived classes’ being
autoloaded and DynaLoader-derived classes’ being able to inherit
AUTOLOAD from DynaLoader?

I wasn't thinking when I posted that. You're completely right. This is
wrong. It works under the assumption that nothing else has loader
AutoLoader, which is not a reasonable assumption.

(I, for one, think this new ‘bug’ [not autoloading] is perfectly fine
and not controversial, but if others disagree, we could always revert
your patch.)

I agree. The behavior of AutoLoader is perfectly well described and
any code relying on this is violating that.

Leon

@p5pRT
Copy link
Author

p5pRT commented Feb 24, 2011

From Mark.Martinec@ijs.si

I just came across this bug report, after spending time on fixing it first :)

The problem is an inappropriate use of AutoLoader, contrary to its
documentation. In a file RSA.pm it stands​:

  require AutoLoader;

whereas it should be​:

  use AutoLoader 'AUTOLOAD';

This is the only change needed for this module to get it working
under perl 5.13.10.

man AutoLoader​:

  Subroutine Stubs
  In order for object method lookup and/or prototype checking to operate
  correctly even when methods have not yet been defined it is necessary
  to "forward declare" each subroutine (as in "sub NAME;"). See
  "SYNOPSIS" in perlsub. Such forward declaration creates "subroutine
  stubs", which are place holders with no code.

  The AutoSplit and AutoLoader modules automate the creation of forward
  declarations. The AutoSplit module creates an 'index' file containing
  forward declarations of all the AutoSplit subroutines. When the
  AutoLoader module is 'use'd it loads these declarations into its
  callers package.

  Because of this mechanism it is important that AutoLoader is always
  "use"d and not "require"d.

  Using AutoLoader's AUTOLOAD Subroutine
  In order to use AutoLoader's AUTOLOAD subroutine you must explicitly
  import it​:

  use AutoLoader 'AUTOLOAD';

Mark

@p5pRT
Copy link
Author

p5pRT commented Apr 19, 2011

From @cpansprout

Since this is a problem with the CPAN module, I’m marking it as rejected.

There is a CPAN RT ticket at
<https://rt.cpan.org/Ticket/Display.html?id=65947>.

@p5pRT
Copy link
Author

p5pRT commented Apr 19, 2011

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

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

No branches or pull requests

1 participant