-
-
Notifications
You must be signed in to change notification settings - Fork 33.4k
Closed
Labels
trace_eventsIssues and PRs related to V8, Node.js core, and userspace code trace events.Issues and PRs related to V8, Node.js core, and userspace code trace events.
Description
- Version: master (a025723)
- Platform: MacOS
- Subsystem: trace_events
Somehow StopTracingAgent
is called in SignalExit()
however the tracking file is not properly flushed. I don't understand why, I think it might have some something to do with how SIGINT
(by Ctrl+C) affects the process group.
The issue is not that easy to reproduce. However, I can do it consistently with the following steps:
- run
node test.js
- in another terminal
curl http://localhost:3000
- hit Ctrl+C for on the
node test.js
process
test.js
const http = require('http')
const { spawn } = require('child_process')
const script = `
const http = require('http')
const server = http.createServer(function (req, res) {
for (let i = 0; i < 100; i++) {
process.nextTick(function () {
res.write('a')
})
}
setImmediate(function () {
res.end()
})
})
server.listen(3000, 'localhost')
`
// run program, but inject the sampler
const proc = spawn(process.execPath, ['-e', script], {
stdio: 'inherit',
env: Object.assign({}, process.env, {
NODE_OPTIONS: [
'--trace-events-enabled', '--trace-event-categories', 'node.async_hooks'
].join(' ')
})
})
process.on('SIGINT', () => proc.kill('SIGINT'))
/cc @ofrobots
Metadata
Metadata
Assignees
Labels
trace_eventsIssues and PRs related to V8, Node.js core, and userspace code trace events.Issues and PRs related to V8, Node.js core, and userspace code trace events.