Skip to content

v2.6.0

Compare
Choose a tag to compare
@arr2036 arr2036 released this 21 Mar 22:09
· 84 commits to master since this release
v2.6.0
65f0c28
  • 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.