Releases: mheily/libkqueue
v2.6.1
-
Fix: Set the core dumped flag correctly in linux/proc on
CLD_DUMPED. -
Fix: Don't attempt to cleanup memory on fork as free() is not
fork safe. We still close open kqueue FDs on fork, and liberal
use of CLOEXEC should clean up any lingering filter FDs though
we may want to close these explicitly in future too. -
Fix: Double unlock in posix/proc.c
-
Fix: Potential deadlock on kqueue initialisation failure.
-
Fix: Building for MSVC (Patch by @Jan200101)
-
Fix: Sprinkle CLOEXEC around various places in the Linux and
POSIX platforms to stop us leaking file descriptors on exec. -
Add EVFILT_LIBKQUEUE/NOTE_THREAD_SAFE. When set to 0, the
global mutex is not locked on kqueue lookup. The application
must guarantee that kqueues must not be destroyed by a different
thread to the one that created them.
v2.6.0
-
Fix: posix/proc don't allow users of this filter to progress
until the proc waiter thread has completed initialisation. -
Fix: Address multiple thread synchronisation issues by using a
single global mutex to synchronise the kqueue list and kqueue
file descriptor map, and per kqueue mutexes which are locked for
the duration of copyin and copyout. The per filter knote mutex
was removed with this change as it's no longer needed. -
Fix: posix/proc fix knote use after free if a notification
comes in for a knote which has already been freed.
The underlying issue was a problem with the list macros not
zeroing out prev/next pointers when items were removed from
lists. -
Fix: prevent thread cancellation on Linux in kqueue() and
kevent(). This prevents deadlocks occuring if a kqueue is
shared between threads and one thread is cancelled. -
Fix: linux Cleanup all kqueues by closing their file descriptors
and freeing associated memory on fork. A similar fix needed for
Solaris. -
Fix: linux/read linux/write Prevent invalid access of
fds->fds_write if the file descriptor state is freed after
processing read events. -
Fix: linux/monitor Use an atexit handler to ensure the fd
monitoring thread is shutdown gracefully on Linux. This fixes
spurious leak reports from LSAN et al... -
Fix: linux/timer Allow EVFILT_TIMER filters to be modified on
Linux (Closes #116) (Reported by: Grant Erickson). -
Fix: Set the library search path in libkqueue.pc (Closes #117)
(Reported by: Grant Erickson) -
Fix: posix/proc will now no longer deadlock if the PID being
monitored is reaped outside of libkqueue, or has exited before
we start monitoring. -
Fix: posix/proc all waiters will now be informed if monitoring
a PID fails, i.e. if the PID is reaped outside of libkqueue. -
Fix: Compilation on Windows (Closes #111).
(Reported by: brechtsanders) -
Fix: linux/read linux/write EPOLLERR, EPOLLHUP and EPOLLRDHUP on
sockets would not produce a kevent and no EOF indication would be
provided to the caller. -
Fix: linux/signal pending signals of the type specified in a new
signal event were reset when that event was added to a kqueue. -
Fix: Multiple instances of posix/proc wait thread may have been
spawned on repeated kqueue creation/destruction. This may have
lead to missed process exit notifications. -
Fix: Potential race between posix/proc waiter thread starting and
events being added. -
Fix: Deadlock between posix/proc waiter thread and kqueues.
-
Fix: udata should not be modified if the knote modification fails.
-
Test suites now pass on macOS 11.5.2 and FreeBSD 13.
-
Packaging: We now set the release number if the current checked
out commit does not match a release tag. For example if the
current number of commits between the last release tag and HEAD
is 2, then the release will be-3
. This allows easy upgrading
of packages between releases. -
Add EVFILT_LIBKQUEUE to expose libkqueue specific configuration
options. The initial implementation supports NOTE_VERSION to
retrieve the current version number, and NOTE_VERSION_STR to
retrieve a textual description of the version.
v2.5.0
-
Add back support for monitoring process exit with EVFILT_PROC.
The is done withpidfd_open(2)
for Linux >= 5.3, and via a new common POSIX
monitoring thread for Linux < 5.3 and other POSIX platforms. -
Fix: Include errors (EV_ERROR), and changelist entries with EV_RECEIPT in eventlist.
(Reported by: orbitz)
v2.4.0
-
Fix: avoid segfaults when kqueue descriptors are cleaned up.
-
Fix: Prevent potential dead-lock in linux_kqueue_init()
-
Fix: slight deadlock in thread_start()
-
Fix: missing inotify_rm_watch()
-
Fix: call close() in an error handling path
-
Fix: take the write lock when freeing knotes
-
Keep a separate state tree for file descriptors inserted into epoll to avoid conflicts between
EVFILT_READ and EVFILT_WRITE (Closes #29 Closes #59) -
Fix: deadlock and memory leak in kqueue()
-
Fix: use after free issue in decrementing kq reference counts
-
Default to marking file descriptors as passive sockets if fstat() doesn't hint at the type
(Closes #97) -
Fix various leaks and issues found by LSAN
-
Install event.h in $INCLUDEDIR/kqueue/sys, rather than $INCLUDEDIR/sys
-
Add support for building native Debian packages using Docker
-
Detect raw sockets.
-
Use high-resolution wait on Linux for timeouts finer than a millisecond.
-
Various CMake improvements.
v2.3.1
v2.3.0
-
kevent: refactor to remove goto statement
(Credit: Cameron Nemo) -
Multiple fixes for compilation issues with GCC 8.1
(Credit: Arran Cudbard-Bell) -
Add a monitoring thread that takes care of cleaning up closed kqueues
(Credit: Philippe Wooding) -
Multiple bug fixes for leaking descriptors in kn_delete()
(Credit: Philippe Wooding) -
Fix build errors on Linux systems that do not use glibc
(Credit: maxice8)
v2.1.0
- Fix an endianness issue when calling ioctl on Linux.
(Credit: Vivian Kong) - Allow tests to be built from separate build directory.
(Credit: Chris Bailey) - Add support for kevent64(2) timers from Darwin.
(Credit: Hubertus Franke) - Set EPOLLONESHOT for EPOLL_CTL_ADD after knote creation.
(Credit: Ian Partridge) - Add configure arg to disable install and build noinst ltlibrary.
(Credit: Ian Partridge) - Allow libkqueue to be used as a submodule within another build process.
(Credit: Ian Partridge) - Fix a build failure on Linux/AArch64 using Ubuntu 16.04.
(Credit: Galen Rhodes)