develooper Front page | perl.perl5.porters | Postings from December 2016

[perl #129059] lexical subs - my sub using our sub segfaults

From:
James E Keenan via RT
Date:
December 31, 2016 03:07
Subject:
[perl #129059] lexical subs - my sub using our sub segfaults
Message ID:
rt-4.0.24-4494-1483153623-1441.129059-15-0@perl.org
On Tue, 23 Aug 2016 17:59:24 GMT, alh wrote:
> This is a bug report for perl from wolfsage@gmail.com,
> generated with the help of perlbug 1.39 running under perl 5.18.2.
> 
> 
> -----------------------------------------------------------------
> [Please describe your issue here]
> 
> $ cat uh.pl
> 
> use v5.24.0;
> use experimental qw(lexical_subs);
> 
> our sub speak { }
> 
> # Crashes with or without the package decl
> # package Cat {
>   my sub meow {
>     speak();
>   }
> #}
> 
> $ gdb --args ./perl -Ilib uh.pl
> 
> [...]
> (gdb) run
> Starting program: /home/mhorsfall/p5/perl/perl -Ilib uh.pl
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-
> gnu/libthread_db.so.1".
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x000000000048c4f5 in Perl_cv_undef_flags (cv=0x87ba40, flags=0) at
> pad.c:413
> 413                U32 inner_rc = SvREFCNT(innercv);
> (gdb) bt
> #0  0x000000000048c4f5 in Perl_cv_undef_flags (cv=0x87ba40, flags=0)
>     at pad.c:413
> #1  0x000000000048bf29 in Perl_cv_undef (cv=0x87ba40) at pad.c:302
> #2  0x000000000055563b in Perl_leave_scope (base=0) at scope.c:1194
> #3  0x000000000055e48e in Perl_pp_leave () at pp_ctl.c:2090
> #4  0x00000000005051a2 in Perl_runops_standard () at run.c:41
> #5  0x000000000044916f in S_run_body (oldscope=1) at perl.c:2525
> #6  0x0000000000448d2c in perl_run (my_perl=0x856010) at perl.c:2448
> #7  0x000000000041edc5 in main (argc=3, argv=0x7fffffffe138,
>     env=0x7fffffffe158) at perlmain.c:123
> (gdb) p innercv
> $1 = (CV * const) 0x0
> 

I got the segfaults (both commenting-in 'package' and not) running the program at blead -- but I got slightly less output than you did.  See attachments.

Thank you very much.



> [Please do not change anything below this line]
> -----------------------------------------------------------------
> ---
> Flags:
>     category=core
>     severity=low
> ---
> Site configuration information for perl 5.18.2:
> 
> Configured by Debian Project at Tue Mar  1 17:12:59 UTC 2016.
> 
> Summary of my perl5 (revision 5 version 18 subversion 2)
> configuration:
> 
> Platform:
>   osname=linux, osvers=3.13.0-79-generic,
> archname=x86_64-linux-gnu-thread-multi
>   uname='linux lgw01-37 3.13.0-79-generic #123-ubuntu smp fri feb 19
> 14:27:58 utc 2016 x86_64 x86_64 x86_64 gnulinux '
>   config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
> -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4
> -Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions
> -Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro
> -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr
> -Dprivlib=/usr/share/perl/5.18 -Darchlib=/usr/lib/perl/5.18
> -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
> -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
> -Dsitelib=/usr/local/share/perl/5.18.2
> -Dsitearch=/usr/local/lib/perl/5.18.2 -Dman1dir=/usr/share/man/man1
> -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1
> -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1
> -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh
> -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g
> -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.18.2 -des'
>   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 -DDEBIAN
> -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
>   optimize='-O2 -g',
>   cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector
> -fno-strict-aliasing -pipe -I/usr/local/include'
>   ccversion='', gccversion='4.8.2', 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=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
>   perllibs=-ldl -lm -lpthread -lc -lcrypt
>   libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.2
>   gnulibc_version='2.19'
> Dynamic Linking:
>   dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
>   cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-
> protector'
> 
> Locally applied patches:
>     DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS
> default for modules installed from CPAN.
>     DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove
> overly restrictive DB_File version check.
>     DEBPKG:debian/doc_info - Replace generic man(1) instructions with
> Debian-specific information.
>     DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak
> enc2xs to follow symlinks and ignore missing @INC directories.
>     DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove
> Errno version check due to upgrade problems with long-running
> processes.
>     DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778
> Note that libperl-dev package is required for embedded linking
>     DEBPKG:fixes/respect_umask - Respect umask during installation
>     DEBPKG:debian/writable_site_dirs - Set umask approproately for
> site install directories
>     DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of
> libperl.a to /usr/lib
>     DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or
> perllocal.pod for perl or vendor
>     DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables
> written to the makefile
>     DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to
> the binary targets.
>     DEBPKG:debian/instmodsh_doc - Debian policy doesn't install
> .packlist files for core or vendor.
>     DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH
> as per Debian policy.
>     DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to
> /etc/perl/Net as /usr may not be writable.
>     DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
>     DEBPKG:debian/module_build_man_extensions -
> http://bugs.debian.org/479460 Adjust Module::Build manual page
> extensions for the Debian Perl policy
>     DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the
> list of libraries wanted to what we actually need.
>     DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038]
> http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
>     DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp
> skip include directories in /usr/local
>     DEBPKG:debian/cpanplus_definstalldirs -
> http://bugs.debian.org/533707 Configure CPANPLUS to use the site
> directories by default.
>     DEBPKG:debian/cpanplus_config_path - Save local versions of
> CPANPLUS::Config::System into /etc/perl.
>     DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/702096
> Point users to Debian packages of deprecated core modules
>     DEBPKG:debian/squelch-locale-warnings -
> http://bugs.debian.org/508764 Squelch locale warnings in Debian
> package maintainer scripts
>     DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the
> upstream Git repository
>     DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List
> packaged patches for 5.18.2-2ubuntu1.1 in patchlevel.h
>     DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493
> [perl #96272] Skip a crashing test case in t/op/threads.t on
> GNU/kFreeBSD
>     DEBPKG:fixes/document_makemaker_ccflags -
> http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that
> CCFLAGS should include $Config{ccflags}
>     DEBPKG:debian/find_html2text - http://bugs.debian.org/640479
> Configure CPAN::Distribution with correct name of html2text
>     DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175
> Disable failing GNU/Hurd tests dist/threads/t/stack.t
>     DEBPKG:fixes/manpage_name_Test-Harness -
> http://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness:
> add NAME headings in modules with POD
>     DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195
> [rt.cpan.org #28632] Make EU::MM pass LD through to recursive
> Makefile.PL invocations
>     DEBPKG:debian/perl5db-x-terminal-emulator.patch -
> http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than
> xterm in perl5db.pl
>     DEBPKG:debian/cpan-missing-site-dirs -
> http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with
> nonexisting site dirs if a parent is writable
>     DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790]
> http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore'
> option not respected
>     DEBPKG:fixes/net_ftp_failed_command - [rt.cpan.org #37700]
> http://bugs.debian.org/491062 Net::FTP: cope gracefully with a failed
> command
>     DEBPKG:fixes/perlbug-patchlist - [3541c11]
> http://bugs.debian.org/710842 [perl #118433] Make perlbug look up the
> list of local patches at run time
>     DEBPKG:fixes/module_metadata_security_doc - [68cdd4b]
> CVE-2013-1437 documentation fix
>     DEBPKG:fixes/module_metadata_taint_fix - [bff978f]
> http://bugs.debian.org/722210 [rt.cpan.org #88576] untaint version, if
> needed, in Module::Metadata
>     DEBPKG:fixes/IPC-SysV-spelling - http://bugs.debian.org/730558
> [rt.cpan.org #86736] Fix spelling of IPC_CREAT in IPC-SysV
> documentation
>     DEBPKG:fixes/fix-undef-source -
>     DEBPKG:fixes/CVE-2013-7422.patch - [PATCH] [perl #119505] Segfault
> from bad backreference
>     DEBPKG:fixes/CVE-2014-4330.patch - [PATCH] don't recurse
> infinitely in Data::Dumper
>     DEBPKG:fixes/CVE-2016-2381.patch - [PATCH 1/2] remove duplicate
> environment variables from environ
> 
> ---
> @INC for perl 5.18.2:
>     /etc/perl
>     /usr/local/lib/perl/5.18.2
>     /usr/local/share/perl/5.18.2
>     /usr/lib/perl5
>     /usr/share/perl5
>     /usr/lib/perl/5.18
>     /usr/share/perl/5.18
>     /usr/local/lib/site_perl
>     .
> 
> ---
> Environment for perl 5.18.2:
>     HOME=/home/mhorsfall
>     LANG=en_US.UTF-8
>     LANGUAGE=en_US
>     LD_LIBRARY_PATH (unset)
>     LOGDIR (unset)
>     PATH=/home/mhorsfall/.plenv/libexec:/home/mhorsfall/.plenv/plugins/perl-
> build/bin:/home/mhorsfall/.plenv/shims:/home/mhorsfall/.plenv/bin:/home/mhorsfall/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
>     PERLDOC=-oman
>     PERL_BADLANG (unset)
>     SHELL=/bin/bash


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

---
via perlbug:  queue: perl5 status: new
https://rt.perl.org/Ticket/Display.html?id=129059



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About