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

Perl debugger does not stop at breakpoint #17644

Open
KES777 opened this issue Mar 13, 2020 · 1 comment
Open

Perl debugger does not stop at breakpoint #17644

KES777 opened this issue Mar 13, 2020 · 1 comment

Comments

@KES777
Copy link
Contributor

KES777 commented Mar 13, 2020

This is a bug report for perl from [email protected],
generated with the help of perlbug 1.40 running under perl 5.24.1.


-----------------------------------------------------------------
[Please describe your issue here]

Hi.  Here  I  put breakpoint and expect that debugger will stop script
execution. But it is stopped at some different not expected place:


    69:
   x70: $DB::single = 1   if $table->search( $cond )->count > 1;
    71:
  1>72:     1;
   x73:     1;
    74:
    75:     ## If requested   then update found row by provided $data
   x76:     if( $update ) { $row->update( $data ); }
    77:
    78:
   x79:     return $row;
    80: }
    81:
    82:

    30: # FIXME - this is not really necessary, and is in
    31: # fact going to slow things down a bit
    32: # However it is the right thing to do in order to get
    33: # various install bases to highlight their brokenness
    34: # Remove at some unknown point in the future
  >>35: sub DESTROY { &DBIx::Class::_Util::detected_reinvoked_destructor }
    36:
    37: sub mk_classdata {
   x38:   shift->mk_classaccessor(@_);
    39: }

As    you    can    see    we    are    stopped    at   line   35   of
/home/nazar/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/DBIx/Class.pm
file.  If  we analyze caller's stack frames we will found that DESTROY
is          called          from          line          72          of
/home/nazar/work/projects/tucha/monkeyman/app/maitre_d/../..//lib/S.pm
file.

As you can see the line 72 is just `1;` expression.


If I rewrite my breakpoint condition as:

    68:     };
    69:
   x70:     if( $table->search( $cond )->count > 1 ) {
  >>71:       $DB::single =  1; 1;
    72:     }
    73:
    74:     ## If requested   then update found row by provided $data
   x75:     if( $update ) { $row->update( $data ) }
    76:
    77:
   x78:     return $row;
    79: }

    Then script execution is stopped at expected place.


In  the  past  I  already reported that debugger does not stop on `if`
statements,  but  it  seems  that debugger does not stop and on return
statements.

Expected: at first example, script execution should be stopped on line 72


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=core
    severity=medium
---
Site configuration information for perl 5.24.1:

Configured by kes at Mon May  7 20:59:03 EEST 2018.

Summary of my perl5 (revision 5 version 24 subversion 1) configuration:
   
  Platform:
    osname=linux, osvers=4.13.0-26-generic, archname=x86_64-linux
    uname='linux work 4.13.0-26-generic #29~16.04.2-ubuntu smp tue jan 9 22:00:44 utc 2018 x86_64 x86_64 x86_64 gnulinux '
    config_args='-de -Dprefix=/home/kes/perl5/perlbrew/perls/perl-5.24.1 -Aeval:scriptdir=/home/kes/perl5/perlbrew/perls/perl-5.24.1/bin'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion='', gccversion='5.4.0 20160609', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3
    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-strong -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64
    libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    libc=libc-2.23.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.23'
  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-strong'

Locally applied patches:
    Devel::PatchPerl 1.38

---
@INC for perl 5.24.1:
    /home/kes/perl5/perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1/x86_64-linux
    /home/kes/perl5/perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.1
    /home/kes/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1/x86_64-linux
    /home/kes/perl5/perlbrew/perls/perl-5.24.1/lib/5.24.1

---
Environment for perl 5.24.1:
    HOME=/home/kes
    LANG=en_US.UTF-8
    LANGUAGE=en
    LC_ADDRESS=uk_UA.UTF-8
    LC_IDENTIFICATION=uk_UA.UTF-8
    LC_MEASUREMENT=uk_UA.UTF-8
    LC_MESSAGES=en_US.UTF-8
    LC_MONETARY=uk_UA.UTF-8
    LC_NAME=uk_UA.UTF-8
    LC_NUMERIC=uk_UA.UTF-8
    LC_PAPER=uk_UA.UTF-8
    LC_TELEPHONE=uk_UA.UTF-8
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/home/kes/perl5/perlbrew/bin:/home/kes/perl5/perlbrew/perls/perl-5.24.1/bin:/home/kes/bin:/home/kes/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    PERLBREW=command perlbrew
    PERLBREW_HOME=/home/kes/.perlbrew
    PERLBREW_MANPATH=/home/kes/perl5/perlbrew/perls/perl-5.24.1/man
    PERLBREW_PATH=/home/kes/perl5/perlbrew/bin:/home/kes/perl5/perlbrew/perls/perl-5.24.1/bin
    PERLBREW_PERL=perl-5.24.1
    PERLBREW_ROOT=/home/kes/perl5/perlbrew
    PERLBREW_SHELLRC_VERSION=0.86
    PERLBREW_VERSION=0.86
    PERL_BADLANG (unset)
    SHELL=/bin/bash


@tonycoz
Copy link
Contributor

tonycoz commented Mar 18, 2020

Do you have a complete self-contained test program that demonstrates the problem? I wasn't able to produce a simple reproducer based on what you've supplied.

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

3 participants