From: Ondřej Surý Date: Fri, 3 Feb 2023 14:47:28 +0000 (+0100) Subject: Avoid libuv 1.35 and 1.36 that have broken recvmmsg implementation X-Git-Tag: v9.19.11~78^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=251f411fc322a9915219725820478d1359b937dd;p=thirdparty%2Fbind9.git Avoid libuv 1.35 and 1.36 that have broken recvmmsg implementation The implementation of UDP recvmmsg in libuv 1.35 and 1.36 is incomplete and could cause assertion failure under certain circumstances. Modify the configure and runtime checks to report a fatal error when trying to compile or run with the affected versions. --- diff --git a/configure.ac b/configure.ac index 0a37328e9ce..10b82faef08 100644 --- a/configure.ac +++ b/configure.ac @@ -586,9 +586,9 @@ AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np]) AC_CHECK_HEADERS([pthread_np.h], [], [], [#include ]) # libuv -AC_MSG_CHECKING([for libuv]) -PKG_CHECK_MODULES([LIBUV], [libuv >= 1.34.0], [], - [AC_MSG_ERROR([libuv >= 1.34.0 not found])]) +PKG_CHECK_MODULES([LIBUV], [libuv >= 1.37.0], [], + [PKG_CHECK_MODULES([LIBUV], [libuv >= 1.34.0 libuv < 1.35.0], [], + [AC_MSG_ERROR([libuv >= 1.34.0 (except 1.35.0 and 1.36.0) not found])])]) AX_SAVE_FLAGS([libuv]) CFLAGS="$CFLAGS $LIBUV_CFLAGS" diff --git a/doc/arm/build.inc.rst b/doc/arm/build.inc.rst index 7239b1a3c93..93a08ecadc4 100644 --- a/doc/arm/build.inc.rst +++ b/doc/arm/build.inc.rst @@ -60,10 +60,12 @@ To build BIND 9, the following packages must be installed: - ``perl`` - ``pkg-config`` / ``pkgconfig`` / ``pkgconf`` -BIND 9.19 requires ``libuv`` 1.34.0 or higher. On older systems, an updated -``libuv`` package needs to be installed from sources such as EPEL, PPA, -or other native sources. The other option is to build and install -``libuv`` from source. +BIND 9.19 requires ``libuv`` 1.34.0 or higher, using ``libuv`` >= 1.40.0 +is recommended. Compiling or running with ``libuv`` 1.35.0 or 1.36.0 is +not supported, as this could lead to an assertion failure in the UDP +receive code. On older systems, an updated ``libuv`` package needs to be +installed from sources such as EPEL, PPA, or other native sources. The +other option is to build and install ``libuv`` from source. OpenSSL 1.0.2e or newer is required. If the OpenSSL library is installed in a nonstandard location, specify the prefix using diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 8906e560b60..d7a70a47cc1 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -178,8 +178,6 @@ netmgr_teardown(void *arg) { #define MINIMAL_UV_VERSION UV_VERSION(1, 40, 0) #elif HAVE_DECL_UV_UDP_RECVMMSG #define MINIMAL_UV_VERSION UV_VERSION(1, 37, 0) -#elif HAVE_DECL_UV_UDP_MMSG_CHUNK -#define MINIMAL_UV_VERSION UV_VERSION(1, 35, 0) #else #define MINIMAL_UV_VERSION UV_VERSION(1, 0, 0) #endif