diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2016-06-21 15:25:43 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2016-07-04 19:10:12 +0200 |
commit | 70002c80bf1447fad605b61d9d6e83e9d0c1a6bc (patch) | |
tree | 26fab77c8ce1c6d9d3f6454ef8a89c75e6f924e9 /docs/src | |
parent | 1d27bbbb8d65b218f5c6cb7f9c4e2f4f043b30ad (diff) | |
download | libuv-70002c80bf1447fad605b61d9d6e83e9d0c1a6bc.tar.gz libuv-70002c80bf1447fad605b61d9d6e83e9d0c1a6bc.zip |
linux: fix potential event loop stall
It was pointed out[0] that libuv could effectively enter an infinite
loop (but not a busy loop) under certain conditions when polling for
events:
1. When the architecture is 32 bits, and
2. When timeout > 0, i.e., finite, and
3. When timeout > max_safe_timeout (~30 minutes), and
4. When epoll_wait(timeout) returns 0, then
5. timeout was not properly updated on the next call to epoll_wait().
Inspection of the code uncovered a secondary bug where under a similar
set of circumstances the timeout could drift when the epoll_wait()
system call returned late.
[0] https://github.com/libuv/libuv/pull/354#discussion_r67837112
PR-URL: https://github.com/libuv/libuv/pull/922
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'docs/src')
0 files changed, 0 insertions, 0 deletions