node --prof-process does not work on node 8.x

Created on 12 Sep 2018  路  14Comments  路  Source: nodejs/node

node 8.11.x
mac 10.11.6
uname -a => Darwin FSCAM1VFG8WM 15.6.0 Darwin Kernel Version 15.6.0: Tue Jan 9 20:12:05 PST 2018; root:xnu-3248.73.5~1/RELEASE_X86_64 x86_64

Run your app with node -prof and it generates the isolate* log file(s)

Then run node --prof-process and it either hangs ( 8.11.x ) or spits out the error below (8.12.rc-x)

ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.:2770:3)
at TickProcessor.LogReader.processLog_ (evalmachine.:2522:12)
at TickProcessor.LogReader.processLogLine (evalmachine.:2405:10)
at TickProcessor.processLogFile (evalmachine.:2798:10)
at evalmachine.:3980:15
at internal/v8_prof_processor.js:41:28
at NativeModule.compile (bootstrap_node.js:613:7)
at Function.NativeModule.require (bootstrap_node.js:558:18)
at startup (bootstrap_node.js:150:20)
at bootstrap_node.js:625:3

try running node prof process with node 8.11.3 or later on these files. It just hangs after spitting out a bunch of text about code mode events for unknown.

isolate-0x102804600-v8.log
isolate-0x103800000-v8.log

Most helpful comment

+1 on a fix for this please
I have found that the files produced by node --prof on 8.12 can be processed under node 11, so that's a possible workaround if testing is required (and both versions are available to the person testing?)

All 14 comments

At a guess, I suspect we need to backport https://github.com/nodejs/node/pull/19285.

The commit applies cleanly, so I鈥檝e pushed it to v8.x-staging (2ae98ce7cb95dee79e839afb2ee4c7d77d7670cd)

On a local Linux system I can recreate the issue described with a built from source v8.12.0 using the isolate logs in the OP. Interestingly all tick-processor tests pass though, which suggests a gap in our testing (although tick-processor is in the ignored suites https://github.com/nodejs/node/blob/1519657473facf16dc9095fa1da504f188a24a17/tools/test.py#L1539-L1552 so I'm not even sure when the last time it was run on v8.x).

With the current v8.x-staging (i.e. with https://github.com/nodejs/node/commit/2ae98ce7cb95dee79e839afb2ee4c7d77d7670cd) the provided isolate logs are processed with errors (which is why printErr was being called) but does not hang.

I was able to workaround this in 0x by filtering out extremely long lines: https://github.com/davidmarkclements/0x/pull/172.

I finally got around to installing 8.12.0 and I still get this issue. What 8.x is this fixed in, that this issue got closed?

evalmachine.:2770
printErr(str);
^

ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.:2770:3)
at TickProcessor.LogReader.processLog_ (evalmachine.:2522:12)
at TickProcessor.LogReader.processLogLine (evalmachine.:2405:10)
at TickProcessor.processLogFile (evalmachine.:2798:10)
at evalmachine.:3980:15
at internal/v8_prof_processor.js:41:28
at NativeModule.compile (bootstrap_node.js:613:7)
at Function.NativeModule.require (bootstrap_node.js:558:18)
at startup (bootstrap_node.js:150:20)
at bootstrap_node.js:625:3
Processing file isolate-0x103000000-v8.log
evalmachine.:2770
printErr(str);
^

ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.:2770:3)
at TickProcessor.LogReader.processLog_ (evalmachine.:2522:12)
at TickProcessor.LogReader.processLogLine (evalmachine.:2405:10)
at TickProcessor.processLogFile (evalmachine.:2798:10)
at evalmachine.:3980:15
at internal/v8_prof_processor.js:41:28
at NativeModule.compile (bootstrap_node.js:613:7)
at Function.NativeModule.require (bootstrap_node.js:558:18)
at startup (bootstrap_node.js:150:20)
at bootstrap_node.js:625:3
Processing file isolate-0x103800000-v8.log
evalmachine.:2770
printErr(str);
^

ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.:2770:3)
at TickProcessor.LogReader.processLog_ (evalmachine.:2522:12)
at TickProcessor.LogReader.processLogLine (evalmachine.:2405:10)
at TickProcessor.processLogFile (evalmachine.:2798:10)
at evalmachine.:3980:15
at internal/v8_prof_processor.js:41:28
at NativeModule.compile (bootstrap_node.js:613:7)
at Function.NativeModule.require (bootstrap_node.js:558:18)
at startup (bootstrap_node.js:150:20)
at bootstrap_node.js:625:3

@joseph-jja This issue isn't closed yet. The fix has gone into the v8.x-staging branch but is not in a release.

cc @nodejs/lts

@richardlau ok, your comment with the red closed confused me :)

Do we know when this will be released? And do we have an alternative until then?

@nodejs/lts when do you think a new patch release of 8 could be issued?

+1 on a fix for this please
I have found that the files produced by node --prof on 8.12 can be processed under node 11, so that's a possible workaround if testing is required (and both versions are available to the person testing?)

I'm also affected by this issue. Thanks for the workaround, @darknz!

This might be fixed in later 8.x versions?

I wan't able to process a v8 log in 8.11 but was able to in 8.14? Maybe it was just a fluke, idk.

8.13.0 contains the backported fix for the ReferenceError: printErr is not defined error.

Ok, seems like this has been fixed.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

fanjunzhi picture fanjunzhi  路  3Comments

sandeepks1 picture sandeepks1  路  3Comments

Icemic picture Icemic  路  3Comments

danielstaleiny picture danielstaleiny  路  3Comments

stevenvachon picture stevenvachon  路  3Comments