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

BEGIN{} + -w + named Safe causes segfault in 5.004_04, 5.005_03 #354

Closed
p5pRT opened this issue Aug 7, 1999 · 2 comments

Comments

@p5pRT
Copy link
Collaborator

@p5pRT p5pRT commented Aug 7, 1999

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

Searchable as RT1188$

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Aug 7, 1999

From dhd@plcom.on.ca

Apparently this problem has been fixed in the developmental 5.005 versions
(a nice person on #perl tried it with 5.005_60) - so I'm just submitting
this as a reminder that it should probably go into the maintenance releases.

The testcase for this is​:

perl -MSafe -we 'BEGIN{$q=Safe->new("Death");$q->reval("\$foo=42")}'

The important parts are the BEGIN{} block, the named Safe (without a
namespace, it won't fail), and the -w switch.

As you can tell from this gdb backtrace, it causes endless recursion in
Perl_gv_check()​:

[dhd@​willow]~ $ gdb debugperl
GNU gdb 4.18
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) run -MSafe -we 'BEGIN{$q=Safe->new("Death");$q->reval("\$foo=42")}'
Starting program​: /usr/bin/debugperl -MSafe -we 'BEGIN{$q=Safe->new("Death");$q->reval("\$foo=42")}'
warning​: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.

Program received signal SIGSEGV, Segmentation fault.
Perl_gv_check (stash=0x8111048) at gv.c​:869
869 gv.c​: No such file or directory.
(gdb) bt
#0 Perl_gv_check (stash=0x8111048) at gv.c​:869
#1 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#2 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#3 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#4 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#5 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#6 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#7 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#8 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#9 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#10 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#11 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#12 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#13 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#14 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#15 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#16 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#17 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#18 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#19 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#20 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#21 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
#22 0x8060e87 in Perl_gv_check (stash=0x8111048) at gv.c​:875
---Type <return> to continue, or q <return> to quit---q
Quit

I've reproduced this on Red Hat Linux 5.0 with Perl 5.004_05, Red Hat 5.2
with Perl 5.004_05, Red Hat 5.2 with Perl 5.005_03, and Debian GNU/Linux
unstable with Perl 5.005_03.

Cheers

Perl Info


Site configuration information for perl 5.00503:

Configured by darren at Wed Jul  7 13:45:33 PDT 1999.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=linux, osvers=2.0.36, archname=i386-linux
    uname='linux broca 2.0.36 #2 sun nov 29 02:38:59 pst 1998 i686 unknown '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='cc', optimize='-O2', gccversion=egcs-2.91.66 Debian GNU/Linux (egcs-1.1.2 release)
    cppflags='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    ccflags ='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    stdchar='char', d_stdstdio=undef, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.00503:
    /usr/lib/perl5/5.005/i386-linux
    /usr/lib/perl5/5.005
    /usr/local/lib/site_perl/i386-linux
    /usr/local/lib/site_perl
    /usr/lib/perl5
    .


Environment for perl 5.00503:
    HOME=/home/dhd
    LANG=C
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/bin/X11:/usr/bin:/bin
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT p5pRT closed this Nov 28, 2003
@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Nov 28, 2003

From The RT System itself

fixed in bleadperl DEVEL7093

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.