Skip to content

--prof hangs, dropping: overflow #38960

@l-bujakowski

Description

@l-bujakowski

What steps will reproduce the bug?

node --prof fib.js

//fib.js
function fib(n) {
        if(n > 1){
                return fib(n-1) + fib(n-2)
        } else {
                return n;
        }
}

for(var i=0; i<40; i++){
    console.log(fib(i));
}

How often does it reproduce? Is there a required condition?

I always get this issue, every time.

What is the expected behavior?

  • fib.js should be run (it should print to stdout)
  • node should exit after
  • isolate-{something}-v8.log file should be generated
  • this generated file should be readable to node --prof-process

What do you see instead?

  • fib.js is never run, there is no output, even passing a file with sytax error or unexisting file, or even no filename doesn't make a difference
  • node hangs, it never exists (I've waited up to 15 minutes so far)
  • isolate-{something}-v8.log file is generated, but the output seems odd:

node --prof-process isolate-0x62557e0-9113-v8.log 2>err.txt >output.txt

output.txt:

Statistical profiling result from isolate-0x62557e0-9113-v8.log, (708 ticks, 0 unaccounted, 0 excluded).

 [Shared libraries]:
   ticks  total  nonlib   name
      2    0.3%          /lib/x86_64-linux-gnu/libc-2.27.so
      1    0.1%          /home/lbujakowski/.nvm/versions/node/v14.15.1/bin/node

 [JavaScript]:
   ticks  total  nonlib   name

 [C++]:
   ticks  total  nonlib   name
    702   99.2%   99.6%  __lll_lock_wait
      2    0.3%    0.3%  write
      1    0.1%    0.1%  do_futex_wait.constprop.1

 [Summary]:
   ticks  total  nonlib   name
      0    0.0%    0.0%  JavaScript
    705   99.6%  100.0%  C++
      0    0.0%    0.0%  GC
      3    0.4%          Shared libraries

 [C++ entry points]:
   ticks    cpp   total   name

 [Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 1.0% are not shown.

   ticks parent  name
    702   99.2%  __lll_lock_wait

The stderr got a lot of dropping: overflow errors:

cat err.txt | uniq -c

    697 dropping: overflow

Additional information

I'm using nvm, so I've tried this with few versions.
I have no issue with node 8.17.0 and 9.11.2. I get the bug on 10+ versions (I've tested with: 10.24.1, 14.17.0 and 16.3.0).
I've also tried using official node docker images, but same thing - old versions work, but 10+ don't.

I need to profile my app, but it seems I cannot profile at all. Does someone have an idea what might be the cause of this problem, or how to nail it?

Metadata

Metadata

Assignees

No one assigned

    Labels

    v8 engineIssues and PRs related to the V8 dependency.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions