develooper Front page | perl.perl5.porters | Postings from May 2013

[perl #118191] perl debugger doesn't evaluate user input when it should (reopening)

Linda Walsh
May 26, 2013 20:11
[perl #118191] perl debugger doesn't evaluate user input when it should (reopening)
Message ID:
# New Ticket Created by  Linda Walsh 
# Please include the string:  [perl #118191]
# in the subject line of all future correspondence about this issue. 
# <URL: >

This is a bug report for perl from,
generated with the help of perlbug 1.39 running under perl 5.16.2.

[Please describe your issue here]

Since the previous bug was rejected and the bug database prohibits
my reopening them, I am forced to refile the bug, as it is a bug 
as noted by other people.

I was trying to call a function in my program in the debugger.

I note that it is documented to evaluate user functions in user space
if they do not conflict with commands.

I tried to call 'P' to print out the value of a hash.

(Might not be a bad addition to the debugger).

Instead of executing my sub, P, I get

Undefined subroutine &DB::cmd_P called at /usr/lib/perl5/5.16.2/ line 3819.
DB::cmd_wrapper(undef, undef, 4) called at /usr/lib/perl5/5.16.2/ line 2366
DB::DB called at /home/law/bin/ line 4
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.

--- not only does it not call the user's routine, but it kills
the debugger.

The patch for this particular routine is simple:

--- 2013-05-26 11:53:41.000000000 -0700
+++ 2013-05-26 11:56:02.681839813 -0700
@@ -2362,7 +2362,7 @@

# All of these commands were remapped in perl 5.8.0;
# we send them off to the secondary dispatcher (see below).
- $cmd =~ /^([aAbBeEhilLMoOPvwW]\b|[<>\{]{1,2})\s*(.*)/so && do {
+ $cmd =~ /^([aAbBeEhilLMoOvwW]\b|[<>\{]{1,2})\s*(.*)/so && do {
&cmd_wrapper( $1, $2, $line );
next CMD;

That said, it seems like there are several other potential problems.

I don't know if all of those single char commands are still present.'

For those that are not, they should be removed, as they are a debugger-crash
waiting to happen.

Alternatively, we could remove all of them -- on the basis that since some
are already 'gone', and I'm guessing there have been no complaints... that
no one is using any of these.

Comments? Individual deletion of all unconnected letters, or the whole set?

At the very least, I'd hope you could fix 'P', as it's a known bad case and
you even have a patch for it! ;-)

please note, that 'p' (lower case), doesn't have the same
functionality as 'P' upper case.  For one, 'P' upper case wouldn't
crash the debugger.

'P' AFAYK isn't a valid debugger command -- YOU ARE RIGHT.

In the case of it not being a valid command -- it is supposed
to evaluate the expression in the User's space.

I included P (sorry, didn't realize you might not know it is in
CPAN) with a "use P;" from the debugger line -- which works.

But I couldn't use it as it is trapped by the semi-bogus trap
in the code which I even submitted a patch to fix... and you
claim that isn't a bug... 

Please don't close out bugs unilaterally and w/o giving me a chance
to respond -- or make it so I can re-open them when I respond to them.

[Please do not change anything below this line]
This perlbug was built using Perl 5.16.2 - Fri Feb 15 01:17:37 UTC 2013
It is being executed now by  Perl 5.16.2 - Fri Feb 15 01:12:05 UTC 2013.

Site configuration information for perl 5.16.2:

Configured by abuild at Fri Feb 15 01:12:05 UTC 2013.

Summary of my perl5 (revision 5 version 16 subversion 2) configuration:
    osname=linux, osvers=3.4.6-2.10-default, archname=x86_64-linux-thread-multi
    uname='linux build34 3.4.6-2.10-default #1 smp thu jul 26 09:36:26 utc 2012 (641c197) x86_64 x86_64 x86_64 gnulinux '
    config_args='-ds -e -Dprefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open -Duseshrplib=true -Doptimize=-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe -Accflags=-DPERL_USE_SAFE_PUTENV -Dotherlibdirs=/usr/lib/perl5/site_perl'
    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
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector'
    ccversion='', gccversion='4.7.2 20130108 [gcc-4_7-branch revision 195012]', 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 =' -L/usr/local/lib64 -fstack-protector'
    libpth=/lib64 /usr/lib64 /usr/local/lib64
    libs=-lm -ldl -lcrypt -lpthread
    perllibs=-lm -ldl -lcrypt -lpthread
    libc=/lib64/, so=so, useshrplib=true,
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib64 -fstack-protector'

Locally applied patches:

@INC for perl 5.16.2:

Environment for perl 5.16.2:
    LANGUAGE (unset)
    LOGDIR (unset)
    PERL5OPT=-CSA -I/home/law/bin/lib
    PERL_BADLANG (unset)
    SHELL=/bin/bash Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About