-
Notifications
You must be signed in to change notification settings - Fork 3.8k
linux: fix epoll_pwait() regression with < 2.6.19 #162
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
Conversation
|
I'll take care of back-porting the fix to v0.10. The regression itself is rather sad but it's proof that the io.js CI is shaping up rather nicely. It caught it, joyent/node didn't. :-) |
Reduce the overhead of the CPU profiler by suppressing SIGPROF signals when sleeping / polling for events. Avoids unnecessary wakeups when the CPU profiler is active. Depends on https://github.com/libuv/libuv#15. Ref: strongloop/strong-agent#3 PR-URL: #8791 Reviewed-by: Trevor Norris <[email protected]>
|
LGTM if the CI agrees :-) Also, shoutout to @rvagg for building the awesome CI! |
Since you're here, care to backport the test? It should be straightforward, right? (you can skip it if it's too much trouble) |
|
we had a problem with CI earlier today, I've restarted, updated and cleaned a bunch of stuff so I've queued this job again for ya |
672f442 to
12c30f3
Compare
|
@saghul Updated uv.gyp as well, PTAL. The CI is... not much worse than it was before, as far as I can tell. Getting it in good shape is on my TODO list. |
|
@bnoordhuis LGTM! About the CI, I also want to get it in good shape, but some of the failures look really weird at a first glance :-( |
Linux before kernel 2.6.19 does not support epoll_pwait(). Due to a logic error in commit 2daf944 ("unix: add flag for blocking SIGPROF during poll"), the fallback path for ENOSYS was not taken. This commit also adds epoll_pwait() emulation using pthread_sigmask(). The block/unblock operations are not atomic but that is fine for our particular use case, to wit, sleep through SIGPROF signals. PR-URL: libuv#162 Reviewed-By: Saúl Ibarra Corretgé <[email protected]>
Fixes a number of -Wimplicit-function-declaration warnings for functions that are behind _GNU_SOURCE on old systems, like strndup() and pread(). PR-URL: libuv#162 Reviewed-By: Saúl Ibarra Corretgé <[email protected]>
12c30f3 to
965fffc
Compare
Linux before kernel 2.6.19 does not support epoll_pwait(). Due to a logic error in commit 2daf944 ("unix: add flag for blocking SIGPROF during poll"), the fallback path for ENOSYS was not taken. This commit also adds epoll_pwait() emulation using pthread_sigmask(). The block/unblock operations are not atomic but that is fine for our particular use case, to wit, sleep through SIGPROF signals. This is a back-port of commit 67bb2b5 from the v1.x branch. Original-PR-URL: libuv#162 Reviewed-By: Saúl Ibarra Corretgé <[email protected]>
Linux before kernel 2.6.19 does not support epoll_pwait(). Due to a logic error in commit 2daf944 ("unix: add flag for blocking SIGPROF during poll"), the fallback path for ENOSYS was not taken. This commit also adds epoll_pwait() emulation using pthread_sigmask(). The block/unblock operations are not atomic but that is fine for our particular use case, to wit, sleep through SIGPROF signals. This is a back-port of commit 67bb2b5 from the v1.x branch. Original-PR-URL: libuv#162 Reviewed-By: Saúl Ibarra Corretgé <[email protected]> PR-URL: libuv#165 Reviewed-By: Saúl Ibarra Corretgé <[email protected]>
Fix 24-bit playback for macOS
Linux before kernel 2.6.19 does not support epoll_pwait(). Due to a
logic error in commit 2daf944 ("unix: add flag for blocking SIGPROF
during poll"), the fallback path for ENOSYS was not taken.
This commit also adds epoll_pwait() emulation using pthread_sigmask().
The block/unblock operations are not atomic but that is fine for our
particular use case, to wit, sleep through SIGPROF signals.
R=@saghul
https://jenkins-iojs.nodesource.com/view/libuv/job/libuv+any-pr+multi/55/