-
Notifications
You must be signed in to change notification settings - Fork 29.1k
-
Notifications
You must be signed in to change notification settings - Fork 29.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C++ entry points not captured during profiling #29804
Comments
One possible clue: I do see C++ function names in the raw profiling logs; they're just not making their way to the |
I can’t reproduce this on x64 Linux. Can you figure out which Node.js versions this affects (in particular, whether v12.10.0 has the same issue), and whether this depends on the script you’re profiling? |
It's happening for both node 10 and 12 for me. The versions I've tried are: v10.15.3 - This used to work but stopped capturing C++ data for some reason I suspect that there might be some environmental factor causing this issue, but I can't determine what that would be. I'm saying this because v10.15.3's profiling used to work fine. One environmental change that occurred before this started happening is that I tried to enable dtrace inside of SIP using |
@nodejs/platform-macos |
@devnexen Whats' your platform? i.e. what macos/darwin version? |
18.7.0, last one |
Would my |
What do |
Maybe that second message is what's mucking things up. Trying again after accepting the license... |
Amazing, that was it! So perhaps an upgrade occurred and a new agreement requirement was injected without my knowledge. Would there be a way for the profiler to notify users like me when this sort of thing occurs? |
`node --prof-process` on macOS calls out to nm(1) to look up C++ symbols. If Xcode hasn't been properly installed or its license hasn't been accepted yet, it prints out an error and exits. Before this commit, that error was swallowed and the output of the tick processor was not showing the C++ entry points. This commit detects that error message and turns it into an exception. No regression test because this particular condition is hard to test for without going to extreme lengths to mock the output of nm. Fixes: nodejs#29804
`node --prof-process` on macOS calls out to nm(1) to look up C++ symbols. If Xcode hasn't been properly installed or its license hasn't been accepted yet, it prints out an error and exits. Before this commit, that error was swallowed and the output of the tick processor was not showing the C++ entry points. This commit detects that error message and turns it into an exception. No regression test because this particular condition is hard to test for without going to extreme lengths to mock the output of nm. Fixes: #29804 PR-URL: #29830 Reviewed-By: David Carlier <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Minwoo Jung <[email protected]> Reviewed-By: James M Snell <[email protected]>
When capturing profiling information via
node --prof
then processing vianode --prof-process
, the C++ entry points section is blank, and just the node binary is shown in the bottom-up profile. Even in the summary, it shows 0 ticks for C++:I have seen more details before when using the profiling available in the CLI. While processing the profiling data, I see a lot of
Code move event for unknown code
messages output, so maybe this relates?node --cpu-prof
also seems to omit these details.The text was updated successfully, but these errors were encountered: