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.
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.
printErr(str);
^
ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.
at TickProcessor.LogReader.processLog_ (evalmachine.
at TickProcessor.LogReader.processLogLine (evalmachine.
at TickProcessor.processLogFile (evalmachine.
at evalmachine.
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.
printErr(str);
^
ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.
at TickProcessor.LogReader.processLog_ (evalmachine.
at TickProcessor.LogReader.processLogLine (evalmachine.
at TickProcessor.processLogFile (evalmachine.
at evalmachine.
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.
printErr(str);
^
ReferenceError: printErr is not defined
at TickProcessor.printError (evalmachine.
at TickProcessor.LogReader.processLog_ (evalmachine.
at TickProcessor.LogReader.processLogLine (evalmachine.
at TickProcessor.processLogFile (evalmachine.
at evalmachine.
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.
Most helpful comment
+1 on a fix for this please
I have found that the files produced by
node --profon 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?)