| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
This test was failing in OS X https://ci.nodejs.org/job/node-test-commit-osx/3581/nodes=osx1010/: not ok 191 parallel/test-debug-port-numbers
#
# assert.js:90
# throw new assert.AssertionError({
# ^
# AssertionError: 'EPERM' === 'ESRCH'
# at kill (/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1010/test/parallel/test-debug-port-numbers.js:47:12)
# at update (/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1010/test/parallel/test-debug-port-numbers.js:37:7)
# at Socket.<anonymous> (/Users/iojs/build/workspace/node-test-commit-osx/nodes/osx1010/test/parallel/test-debug-port-numbers.js:21:65)
# at emitOne (events.js:101:20)
# at Socket.emit (events.js:188:7)
# at readableAddChunk (_stream_readable.js:172:18)
# at Socket.Readable.push (_stream_readable.js:130:10)
# at Pipe.onread (net.js:542:20)
# debug> debug> debug> debug> �< Debugger listening on port 12347
# debug> �connecting to 127.0.0.1:12347 ... ok
# debug> �< Debugger listening on port 12348
# debug> �connecting to 127.0.0.1:12348 ...�< Debugger listening on port 12346
# debug> �connecting to 127.0.0.1:12346 ...�< Debugger listening on port 12349
# debug> �connecting to 127.0.0.1:12349 ... ok
# debug> ok
# debug> ok
# debug> �break in test/parallel/test-debug-port-numbers.js:1
# �> 1 'use strict';
# � 2
# � 3 const common = require('../common');
# debug> �break in test/parallel/test-debug-port-numbers.js:1
# �> 1 'use strict';
# � 2
# � 3 const common = require('../common');
# debug> �break in test/parallel/test-debug-port-numbers.js:1
# �> 1 'use strict';
# � 2
# � 3 const common = require('../common');
# �break in test/parallel/test-debug-port-numbers.js:1
|
Sorry, something went wrong.
|
Stress test without this change fails: https://ci.nodejs.org/job/node-stress-single-test/749. |
Sorry, something went wrong.
There was a problem hiding this comment.
I think the logic should be ESRCH || EPERM iff OS X, and you might as well drop the 'iff OS X' part in that case because the BSDs probably exhibit the same behavior.
I checked the xnu and libc sources and the error code seems to depend on whether POSIX compatibility mode is enabled in the libc wrapper: it returns EPERM if it is, ESRCH otherwise. That would explain why I don't see EPERM with 10.8.
Sorry, something went wrong.
|
LGTM. I think @bnoordhuis suggestion makes sense. One question though:
Does that mean that processes may be left behind? |
Sorry, something went wrong.
|
@cjihrig My reading of the xnu sources is that EPERM or ESRCH are only returned when the process group is gone (i.e., empty.) |
Sorry, something went wrong.
|
@bnoordhuis, from the FreeBSD 10.3 man: [EPERM] The sending process does not have permission to send sig to the receiving process. So I'm not sure if it applies to FreeBSD. I can add it anyway. |
Sorry, something went wrong.
|
I think xnu inherits most of its signal handling logic from FreeBSD but it's possible that the POSIX compatibility stuff is a later addition. I don't think allowing EPERM on other platforms will hurt, at any rate. |
Sorry, something went wrong.
|
Yes, it makes sense. So just to be sure... ESRCH || EPERM on OS X and FreeBSD right? |
Sorry, something went wrong.
|
I'd do it unconditionally, i.e., no platform-specific checks. |
Sorry, something went wrong.
|
PR updated per your comments. Thanks! |
Sorry, something went wrong.
Sorry, something went wrong.
There was a problem hiding this comment.
I don't think this is right. 'EPERM' || 'ESRCH' will always evaluate to EPERM
Sorry, something went wrong.
There was a problem hiding this comment.
Also, assert.ok() just asserts that e.code is truthy.
Sorry, something went wrong.
There was a problem hiding this comment.
You're right. I was fixing that :(
Sorry, something went wrong.
|
Updated |
Sorry, something went wrong.
|
LGTM |
Sorry, something went wrong.
Sorry, something went wrong.
|
LGTM |
Sorry, something went wrong.
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: nodejs#7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
|
CI: https://ci.nodejs.org/job/node-test-commit/3579/. All green except some unrelated failures in some ARM bots. Landing |
Sorry, something went wrong.
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: nodejs#7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
According to kill(2), kill returns `EPERM` error if when signalling a process group any of the members could not be signalled. PR-URL: #7046 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
| Back | FazBrowse Home | New Git URL |
Checklist
Affected core subsystem(s)
test
Description of change
According to kill(2), kill returns EPERM error if when signalling a
process group any of the members could not be signaled.
Refs: #7037