Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^4: NYTProf line report failure

by swl (Parson)
on Mar 13, 2020 at 01:40 UTC ( [id://11114200]=note: print w/replies, xml ) Need Help??


in reply to Re^3: NYTProf line report failure
in thread NYTProf line report failure

This is just a wild guess, but perhaps substitute some arbitrary path name when inc is undefined? This might give it something to work with instead of an empty array. Or patch the code later to handle an empty array from that call.

[defined($self->profile) ? $self->profile->inc : ('.') ]

That might send you down the rabbit hole, though, in which case bliako's advice in 11114191 should be followed.

When doing that, it is probably worth looking for what code is triggering the issue. Maybe it is the nested evals that were being warned about in the output in a previous post, but a quick check with the code below works without problem so if it is nested evals then it is under more complex conditions.

use strict; use warnings; my $code1 = 'print "nested eval run here\n"'; my $code2 = 'eval $code1'; my $code3 = 'eval $code2'; eval $code3;

Replies are listed 'Best First'.
Re^5: NYTProf line report failure
by Anonymous Monk on Mar 14, 2020 at 07:12 UTC
    I added "warn $self->filename" to "sub filename_without_inc" in Devel::NYTProf::FileInfo:
    sub filename_without_inc {
        my $self = shift;
        my $f    = [$self->filename];
    warn $self->filename;
    
    These warnings lead me to believe the problem is not in my code:
    Reading nytprof.out
    Processing nytprof.out data
    
    collapse_sibling_evals: nested evals in (eval 656)[/ExtUtils/MM_Unix.pm:2920] 
    not handled at /Devel/NYTProf/FileInfo.pm line 291.
    
    collapse_sibling_evals: nested evals in (eval 2695)[/Module/Metadata.pm:13] 
    not handled at /Devel/NYTProf/FileInfo.pm line 291.
    
    Here are the results with my added warn:
    98% ... (eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/ +NYTProf/FileInfo.pm line 431. (eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/NYTProf/ +FileInfo.pm line 431. Warning: something's wrong at /Devel/NYTProf/FileInfo.pm line 431. 99% ... (eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/N +YTProf/FileInfo.pm line 431. (eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/NYTProf/F +ileInfo.pm line 431. Warning: something's wrong at /Devel/NYTProf/FileInfo.pm line 431.
    Here's line 13 of Module::Metadata:
    sub __clean_eval { eval $_[0] }
    
    Here's line 2921 of ExtUtils::MM_Unix (right after strict is disabled on line 2917, and warnings are disabled on line 2919):
    eval($line); ## no critic
    

      Which of the output lines you provided are the result of the warn $self->filename call? Also, what does a "normal" filename look like when printed? Seeing the difference will help.

      Another question is why your code is using what appears to be a module installation process? Perhaps it tries to install on-the-fly? In which case perhaps it is best to get everything installed before running the code?

        Which of the output lines you provided are the result of the warn $self->filename call?

        warn 'WARN:'.$self->filename; 97% ... WARN:(eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /D +evel/NYTProf/FileInfo.pm line 431. WARN:(eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/NYT +Prof/FileInfo.pm line 431. WARN: at /Devel/NYTProf/FileInfo.pm line 431. # NO FILENAME! Use of uninitialized value in numeric gt (>) at /Devel/NYTProf/Reader. +pm line 184. 98% ... WARN:(eval 1724)[/Module/Metadata.pm:13] at /Devel/NYTProf/Fil +eInfo.pm line 431. WARN:(eval 1724)[/Module/Metadata.pm:13] at /Devel/NYTProf/FileInfo.pm + line 431. 98% ... WARN:(eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at / +Devel/NYTProf/FileInfo.pm line 431. WARN:(eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/NYTP +rof/FileInfo.pm line 431. WARN: at /Devel/NYTProf/FileInfo.pm line 431. # NO FILENAME! Use of uninitialized value in numeric gt (>) at /Devel/NYTProf/Reader. +pm line 184.
        Also, what does a "normal" filename look like when printed?

        Either the it's the full path to a perl module, or one of those eval lines with parens and brackets.

        Another question is why your code is using what appears to be a module installation process?

        I'm using ExtUtils::Installed. ExtUtils::Installed::new calls ExtUtils::Installed::_make_entry which calls ExtUtils::MM_Unix::parse_version. Maybe I found another bug by analyzing Perl? (This time in NYTProf)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11114200]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (4)
As of 2024-03-29 09:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found