1c935a34 | 20-Apr-2023 |
Ben Noordhuis |
linux: remove bug workaround for obsolete kernels (#3965) Libuv no longer supports such kernels so the workaround can be removed. |
dfae365f | 20-Apr-2023 |
Ben Noordhuis |
linux: add IORING_OP_CLOSE support (#3964) |
5ca5e475 | 20-Apr-2023 |
Ben Noordhuis |
linux: add IORING_OP_OPENAT support (#3963) |
3ba75f13 | 19-Apr-2023 |
Ben Noordhuis |
test: disable signal test under ASan and MSan (#3961) The signal_multiple_loops test is flaky when run under AddressSanitizer and MemorySanitizer. Sometimes thread creation fails, other
test: disable signal test under ASan and MSan (#3961) The signal_multiple_loops test is flaky when run under AddressSanitizer and MemorySanitizer. Sometimes thread creation fails, other times it simply times out. Fixes: https://github.com/libuv/libuv/issues/3956
show more ...
|
a7ff759c | 19-Apr-2023 |
Ben Noordhuis |
linux: fix academic valgrind warning (#3960) Fix a valgrind warning that only manifested with clang (not gcc!) by explicitly passing 0L instead of plain 0 as the |sigsz| argument to
linux: fix academic valgrind warning (#3960) Fix a valgrind warning that only manifested with clang (not gcc!) by explicitly passing 0L instead of plain 0 as the |sigsz| argument to io_uring_enter(). That is, pass a long instead of an int. On x86_64, |sigsz| is passed on the stack (the other arguments are passed in registers) but where gcc emits a `push $0` that zeroes the entire stack slot, clang emits a `movl $0,(%rsp)` that leaves the upper 32 bits untouched. It's academic though since we don't pass IORING_ENTER_EXT_ARG and the kernel therefore completely ignores the argument. Refs: https://github.com/libuv/libuv/pull/3952
show more ...
|
d2c31f42 | 18-Apr-2023 |
Ben Noordhuis |
linux: introduce io_uring support (#3952) Add io_uring support for several asynchronous file operations: - read, write - fsync, fdatasync - stat, fstat, lstat io_ur
linux: introduce io_uring support (#3952) Add io_uring support for several asynchronous file operations: - read, write - fsync, fdatasync - stat, fstat, lstat io_uring is used when the kernel is new enough, otherwise libuv simply falls back to the thread pool. Performance looks great; an 8x increase in throughput has been observed. This work was sponsored by ISC, the Internet Systems Consortium. Fixes: https://github.com/libuv/libuv/issues/1947
show more ...
|
cb5da592 | 14-Apr-2023 |
Ben Noordhuis |
test: don't use static buffer for formatting (#3953) Don't use a static buffer to hold human-readable "big" numbers. The buffer isn't big enough for benchmarks like fs_stat that pri
test: don't use static buffer for formatting (#3953) Don't use a static buffer to hold human-readable "big" numbers. The buffer isn't big enough for benchmarks like fs_stat that print a large number of them. Have the caller pass in a buffer instead.
show more ...
|
2f33980a | 12-Apr-2023 |
Trevor Norris |
src: switch to use C11 atomics where available (#3950) Switch all code in unix/ to use C11 atomics directly. Change uv_library_shutdown() to use an exchange instead of load/store.
src: switch to use C11 atomics where available (#3950) Switch all code in unix/ to use C11 atomics directly. Change uv_library_shutdown() to use an exchange instead of load/store. Unfortunately MSVC only started supporting C11 atomics in VS2022 version 17.5 Preview 2 as experimental. So resort to using the Interlocked API. Ref: https://devblogs.microsoft.com/cppblog/c11-atomics-in-visual-studio-2022-version-17-5-preview-2/ Fixes: https://github.com/libuv/libuv/issues/3948
show more ...
|
e189c313 | 11-Apr-2023 |
Jason Zhang |
doc: consistent single backquote in misc.rst (#3946) Fixes: https://github.com/libuv/libuv/issues/3928 |
1eae5598 | 11-Apr-2023 |
Stacey Marshall |
unix,sunos: SO_REUSEPORT not valid on all sockets (#3949) Issue observed on Solaris with ISC BIND 9.18 which reported "unable to open route socket: unexpected error". illumos did not hit
unix,sunos: SO_REUSEPORT not valid on all sockets (#3949) Issue observed on Solaris with ISC BIND 9.18 which reported "unable to open route socket: unexpected error". illumos did not hit it because it does not have SO_REUSEPORT (open RFE https://www.illumos.org/issues/12455)
show more ...
|
244df24b | 01-Apr-2023 |
Ben Noordhuis |
linux: remove arm oabi support (#3942) The last major distro that supported the oabi calling convention was Debian 5 (Lenny) and that went out of support in February 2012. It seems l
linux: remove arm oabi support (#3942) The last major distro that supported the oabi calling convention was Debian 5 (Lenny) and that went out of support in February 2012. It seems like a fairly safe assumption that nothing speaks oabi anymore in this day and age. Fixes: https://github.com/libuv/libuv/issues/3935
show more ...
|
28b9f1e6 | 31-Mar-2023 |
Ben Noordhuis |
linux: replace unsafe macro with inline function (#3933) Replace the throw-type-safety-to-the-wind CAST() macro with an inline function that is hopefully harder to misuse. It should make
linux: replace unsafe macro with inline function (#3933) Replace the throw-type-safety-to-the-wind CAST() macro with an inline function that is hopefully harder to misuse. It should make the inotify code slightly more legible if nothing else.
show more ...
|
0c8eccc3 | 28-Mar-2023 |
Ben Noordhuis |
linux: remove epoll_pwait() emulation code path (#3936) This was removed before in 2018 but then reinstated again in 2019 to fix building with old Android SDKs. Well, time marches on; th
linux: remove epoll_pwait() emulation code path (#3936) This was removed before in 2018 but then reinstated again in 2019 to fix building with old Android SDKs. Well, time marches on; this time it's gone for good. Refs: https://github.com/libuv/libuv/pull/1372 Refs: https://github.com/libuv/libuv/pull/2358
show more ...
|
7b84d5b0 | 20-Mar-2023 |
Trevor Norris |
doc: add trevnorris to maintainers (#3931) |
66009549 | 20-Mar-2023 |
Trevor Norris |
win,unix: change execution order of timers (#3927) The maximum number of times timers should run when uv_run() is called with UV_RUN_ONCE and UV_RUN_NOWAIT is 1. Do that by conditionally
win,unix: change execution order of timers (#3927) The maximum number of times timers should run when uv_run() is called with UV_RUN_ONCE and UV_RUN_NOWAIT is 1. Do that by conditionally calling timers before entering the while loop when called with UV_RUN_DEFAULT. The reason to always run timers at the end of the while loop, instead of at the beginning, is to help enforce the conceptual event loop model. Which starts when entering the event provider (e.g. calling poll). Other than only allowing timers to be processed once per uv_run() execution, the only other noticeable change this will show is if all the following are true: * uv_run() is called with UV_RUN_NOWAIT or UV_RUN_ONCE. * An event is waiting to be received when poll is called. * Execution time between the call to uv_timer_start() and entering the while loop is longer than the timeout. If all these are true, then timers that would have executed before entering the event provider will now be executed afterward. Fixes: https://github.com/libuv/libuv/issues/3686 Co-authored-by: Momtchil Momtchev <momtchil@momtchev.com>
show more ...
|
4a65e10f | 16-Mar-2023 |
Trevor Norris |
doc: add entries to LINKS.md (#3925) Add the libuv wrapper nsuv to the list, along with other C++ apps that were found to use libuv extensively and have been maintained recently. |
d4eb276e | 13-Mar-2023 |
Niklas Mischkulnig <4586894+mischnic@users.noreply.github.com> |
darwin: bring back macos-specific copyfile(3) (#3654) Co-authored-by: Mingye Wang <arthur200126@gmail.com> |
91a7e498 | 12-Mar-2023 |
Trevor Norris |
test: silence more valgrind warnings (#3917) Pass the loop to MAKE_VALGRIND_HAPPY() so it's explicit on which loop needs to be cleaned up. Since it asserts on uv_loop_close(), need to
test: silence more valgrind warnings (#3917) Pass the loop to MAKE_VALGRIND_HAPPY() so it's explicit on which loop needs to be cleaned up. Since it asserts on uv_loop_close(), need to remove a couple of those that were being done before the call. Cleanup where loop was assigned, so the entire test either uses loop or uv_default_loop(). Not both. Also take care of any reqs that may have been left uncleaned.
show more ...
|
dfb206c8 | 12-Mar-2023 |
Bruno Passeri |
linux: fix ceph copy error truncating readonly files (#3920) Trying to copy a read-only file onto a ceph-fuse filesystem fails, returning an `EACCES` error. This happens when the destina
linux: fix ceph copy error truncating readonly files (#3920) Trying to copy a read-only file onto a ceph-fuse filesystem fails, returning an `EACCES` error. This happens when the destination doesn't exist yet, and a new file is created. By checking that the error matches, and that the destination file is empty, we can fix this issue while waiting for a proper Ceph fix to be upstreamed. Fixes: https://github.com/libuv/libuv/issues/3919 Refs: https://github.com/nodejs/node/issues/37284 Refs: https://github.com/libuv/libuv/issues/3117 Refs: https://github.com/libuv/libuv/issues/3322
show more ...
|
9581e3df | 10-Mar-2023 |
Ben Noordhuis |
test: fix visual studio 2015 build error (#3918) |
964f79f7 | 06-Mar-2023 |
Jameson Nash |
barrier: wait for prior out before next in (#3905) This code would previously get confused between rounds of the barrier being called and a thread might incorrectly get stuck (deadlock)
barrier: wait for prior out before next in (#3905) This code would previously get confused between rounds of the barrier being called and a thread might incorrectly get stuck (deadlock) if the next round started before that thread had exited the current round. Avoid that by not starting the next round in++ before out-- has reached zero indicating that all threads have left the prior round. And fix it that on Windows by replacing the implementation with the one from unix. There are some awkward platform-specific redirection here with an extra malloc that is not needed on Win32, but that will be fixed in libuv v2. Fixes: https://github.com/libuv/libuv/issue/3872
show more ...
|
460accf9 | 03-Mar-2023 |
Trevor Norris |
test: make valgrind happy (#3916) Missing a call to MAKE_VALGRIND_HAPPY() to silence valgrind output. |
780b40ea | 27-Feb-2023 |
Trevor Norris |
win: fix leak in uv_chdir (#3912) The call to uv__cwd() always returns a new allocation. The previously allocated utf16_buffer needs to be free'd before passing it in to receive the
win: fix leak in uv_chdir (#3912) The call to uv__cwd() always returns a new allocation. The previously allocated utf16_buffer needs to be free'd before passing it in to receive the next allocation.
show more ...
|
e613fdd8 | 17-Feb-2023 |
Ben Noordhuis |
macos: fix fsevents thread race conditions (#3909) ThreadSanitizer complains about unsynchronized access to the handle->loop->cf_state pointer. The warning is probably benign bu
macos: fix fsevents thread race conditions (#3909) ThreadSanitizer complains about unsynchronized access to the handle->loop->cf_state pointer. The warning is probably benign but the fsevents thread already knows the pointer. It doesn't have to read it, it just needs to propagate it. Refs: https://github.com/libuv/libuv/issues/3880
show more ...
|
62c2374a | 07-Feb-2023 |
Jameson Nash |
unix: DRY and fix tcp bind error path (#3904) The conditional bind-to-port logic in tcp.c had an error path that closed the socket file descriptor while it was still owned by the uv_
unix: DRY and fix tcp bind error path (#3904) The conditional bind-to-port logic in tcp.c had an error path that closed the socket file descriptor while it was still owned by the uv_tcp_t handle. Fix that by not closing the file descriptor and refactoring the code so it is hopefully harder to get wrong in the future. The refactoring also makes the code a little flatter, removes duplicated code, and, arguably, is in a more idiomatic libuv style. Fixes: https://github.com/libuv/libuv/issues/3461 Replaces: https://github.com/libuv/libuv/pull/3462 Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl>
show more ...
|