Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/perl5Public

Perl debugger: Argument "package SQL::Translator;\n" isn't numeric in numeric ne (!=) at #23151

Closed
Assignees
tonycoz
@KES777

Description

@KES777

Description
I am checking breakpoints in my debugger like this:

# Returns TRUE if we can set trap for $file:linesub DB::can_break {my( $file, $line ) =  @_;($file, $line) =  split ':', $fileunless defined $line;$file =  DB::file( $file );return   unless defined $file;no strict 'refs';return $line >= 0  &&  $line <= $#{ $::{"_<$file"} }&& ${ $::{"_<$file"} }[ $line ] != 0;     # <<< LINE 562# http://perldoc.perl.org/perldebguts.html#Debugger-Internals# Values in this array are magical in numeric context:# they compare equal to zero only if the line is not breakable.}

And I god this error message during debugging SQL::Translator:

(eval 481)[/home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/Class/Method/Modifiers.pm:148]Argument "package SQL::Translator;\n" isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 35.

It looks like values are not always magical in numeric context.

Steps to Reproduce
Too complex =(

Expected behavior
As documented the values at the array should be magical

Details

In my debugger I am checking the line is breakable or not via${ $::{"_<$file"} }[ $line ] != 0; If yes I print 'x', if not I do not print 'x'. Here you can see that lines 40-43, 45-50 are not magical for some reason:

(eval 504)[/home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/Sub/Quote.pm:3]x26:return$invoker->new(@_);x27:       }elsif ($INC{"Moose.pm"}andmy$meta = Class::MOP::get_metaclass_by_name($class)) {x28:return$meta->new_object(    29:$class->can("BUILDARGS") ?$class->BUILDARGS(@_)    30:                       :$class->Moo::Object::BUILDARGS(@_)    31:         );    32:       }    33:     }    34:my$args =scalar@_ == 1    35:       ? CORE::ref$_[0]eq'HASH'  >>36:         ? { %{$_[0] } }    37:         : Carp::croak("Single parameters to new() must be a HASH ref"    38:             ." data =>".$_[0])    39:       :@_ % 2Argument"        ? Carp::croak("The new() methodfor$class expec..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    40:         ? Carp::croak("The new() methodfor$class expects a hash referenceor a"Argument"            ." key/value list. You passed an odd number..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    41:             . " key/value list. You passed an odd number of arguments")Argument "        : {@_}\n" isn't numeric in numericne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    42:         : {@_}Argument"    ;\n" isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    43:     ;   x44:     my $new = bless({}, $class);;Argument "(exists $args->{"add_comments"} and ($new->{"add_comment..." isn't numeric in numericne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    45: (exists$args->{"add_comments"}and ($new->{"add_comments"} =$args->{"add_comments"})),Argument"(exists$args->{"add_drop_table"} and ($new->{"add_drop_..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    46: (exists$args->{"add_drop_table"} and ($new->{"add_drop_table"} =$args->{"add_drop_table"})),Argument"(exists$args->{"escape_char"}and ($new->{"escape_char"..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    47: (exists$args->{"escape_char"} and ($new->{"escape_char"} =$args->{"escape_char"})),Argument"(exists$args->{"numeric_types"}and ($new->{"numeric_ty..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    48: (exists $args->{"numeric_types"} and ($new->{"numeric_types"} = $args->{"numeric_types"})),Argument "(exists $args->{"sizeless_types"} and ($new->{"sizeless_..." isn't numeric in numericne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    49: (exists$args->{"sizeless_types"}and ($new->{"sizeless_types"} =$args->{"sizeless_types"})),Argument"(exists$args->{"type_map"} and ($new->{"type_map"} =$a..." isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    50: (exists $args->{"type_map"} and ($new->{"type_map"} = $args->{"type_map"})),   x51: (exists $args->{"unquoted_defaults"} and ($new->{"unquoted_defaults"} = $args->{"unquoted_defaults"})),Argument "    return $new;\n" isn't numeric in numericne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    52:return$new;Argument"  }\n" isn't numeric in numeric ne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    53:   }    54:   $$_UNQUOTED = \&new;Argument "}\n" isn't numeric in numericne (!=) at /home/kes/work/projects/github-forks/sql-translator/local/lib/perl5/DB/Utils.pm line 562, <STDIN> line 32.    55: }    56: 1;

Probably this is due internals ofSub/Quote.pm:3.

Another strange case with Sub/Quote

TL;DR; This does not belongs directly the case reported at this issue. But it could be interesting to know it because perl internal variables behaves strange forSub::Quote module.

  1. Sometimes I got the next errorFile '(eval 712)[local/lib/perl5/Sub/Quote.pm:3]' is not compiled yet. It is seldom, but if I got it, it is 100% reproducible.
# Returns TRUE if $filename was compiled/evaled# The file is evaled if it looks like (eval 34)# But this may be changed by #file:line. See ??? for infosub DB::file {my $filename =  shift // DB::state( 'file' );$filename =~ s/^_<//;# NOTICE differences:# https://stackoverflow.com/q/56273829/4632019# https://stackoverflow.com/q/56270222/4632019# https://stackoverflow.com/q/56260910/4632019# https://stackoverflow.com/q/56273425/4632019no strict 'refs';unless( exists ${ 'main::' }{ "_<$filename" } ) {DB::warn "File '$filename' is not compiled yet";  # <<<Error comes from herereturn;}return ${ $::{"_<$filename"} }}

I do not expect that second error message when I step over the line, because it happens only in the certain cases. And if I do not trigger that case I canstep over that line of code at debugger.

How this code looks like:

    Code:        19: # NOTICE: If I run the next code in debugger and then run "n" it fails with the error:        20: # File '(eval 712)[local/lib/perl5/Sub/Quote.pm:3]' is not compiled yet        21: # Can't use an undefined value as an ARRAY reference at local/lib/perl5/DB/Hooks.pm line 546        22: # Beware: the leeding space is important. Without it the code works well.        23: # DBG> A::FormData::process { Email => {} }        24: # DBG>n      >>25: db_clear();        26:       x27: $got    =  A::FormData::process { Email => {} };       x28: $expect =  eval data_section 'main', 'email';        29:       x30: like $got, $expect, "Email";        31:        32: # <<       x33: D::db->txn_rollback;       x34: done_testing();        35:        36:        37: __DATA__        DBG> A::FormData::process { Email => {} }    {      Email => {        comment => undef,        company_id => 14,        email => mt1@example.com,        id => 6,        type => undef,      },    }        DBG>n    File '(eval 712)[local/lib/perl5/Sub/Quote.pm:3]' is not compiled yet    File '(eval 712)[local/lib/perl5/Sub/Quote.pm:3]' is not compiled yet

So here above the erroris not compiled yet happens only if I run A::FormData::process { Email => {} }. If I do not run that code, then everything works fine.A::FormData::process do interaction with many tables in database viaDBIx::Class. So it is not clear what happens there inside. Probably there occurs second call toSub/Quote.pm which makes conflict later.

Perl configuration
Summary of my perl5 (revision 5 version 41 subversion 2) configuration:     Platform:    osname=linux    osvers=6.5.0-1027-oem    archname=x86_64-linux    uname='linux work 6.5.0-1027-oem #28-ubuntu smp preempt_dynamic thu jul 25 13:32:46 utc 2024 x86_64 x86_64 x86_64 gnulinux '    config_args='-de -Dprefix=/home/kes/perl5/perlbrew/perls/perl-5.41.2 -Dusedevel -Aeval:scriptdir=/home/kes/perl5/perlbrew/perls/perl-5.41.2/bin'    hint=recommended    useposix=true    d_sigaction=define    useithreads=undef    usemultiplicity=undef    use64bitint=define    use64bitall=define    uselongdouble=undef    usemymalloc=n    default_inc_excludes_dot=define  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='13.1.0'    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/x86_64-linux-gnu /usr/lib /usr/lib64    libs=-lpthread -ldl -lm -lcrypt -lutil -lc    perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc    libc=/lib/x86_64-linux-gnu/libc.so.6    so=so    useshrplib=false    libperl=libperl.a    gnulibc_version='2.35'  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'Characteristics of this binary (from libperl):   Compile-time options:    HAS_LONG_DOUBLE    HAS_STRTOLD    HAS_TIMES    PERLIO_LAYERS    PERL_COPY_ON_WRITE    PERL_DONT_CREATE_GVSV    PERL_HASH_FUNC_SIPHASH13    PERL_HASH_USE_SBOX32    PERL_MALLOC_WRAP    PERL_OP_PARENT    PERL_PRESERVE_IVUV    PERL_USE_DEVEL    PERL_USE_SAFE_PUTENV    USE_64_BIT_ALL    USE_64_BIT_INT    USE_LARGE_FILES    USE_LOCALE    USE_LOCALE_COLLATE    USE_LOCALE_CTYPE    USE_LOCALE_NUMERIC    USE_LOCALE_TIME    USE_PERLIO    USE_PERL_ATOF  Built under linux  Compiled at Aug 17 2024 19:35:18  %ENV:    PERLBREW="command perlbrew"    PERLBREW_HOME="/home/kes/.perlbrew"    PERLBREW_MANPATH="/home/kes/perl5/perlbrew/perls/perl-5.41.2/man"    PERLBREW_PATH="/home/kes/perl5/perlbrew/bin:/home/kes/perl5/perlbrew/perls/perl-5.41.2/bin"    PERLBREW_PERL="perl-5.41.2"    PERLBREW_ROOT="/home/kes/perl5/perlbrew"    PERLBREW_SHELLRC_VERSION="0.98"    PERLBREW_VERSION="0.98"  @INC:    /home/kes/perl5/perlbrew/perls/perl-5.41.2/lib/site_perl/5.41.2/x86_64-linux    /home/kes/perl5/perlbrew/perls/perl-5.41.2/lib/site_perl/5.41.2    /home/kes/perl5/perlbrew/perls/perl-5.41.2/lib/5.41.2/x86_64-linux    /home/kes/perl5/perlbrew/perls/perl-5.41.2/lib/5.41.2

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


    [8]ページ先頭

    ©2009-2025 Movatter.jp