mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
ensure file descriptors 0-2 are in use before using libuv
libuv expects file descriptors <= STDERR_FILENO are in use. otherwise, it may abort when closing a file descriptor it opened. See https://github.com/libuv/libuv/pull/4559 Closes #5226
This commit is contained in:
parent
bcca7a6834
commit
5cfdbeba72
1 changed files with 15 additions and 0 deletions
15
lib/isc/uv.c
15
lib/isc/uv.c
|
|
@ -130,6 +130,21 @@ isc__uv_free(void *ptr) {
|
|||
|
||||
void
|
||||
isc__uv_initialize(void) {
|
||||
/*
|
||||
* Ensure the first 3 file descriptors are open
|
||||
* otherwise, libuv may use one and trigger abort
|
||||
* when closing it.
|
||||
*
|
||||
* See https://github.com/libuv/libuv/pull/4559
|
||||
*/
|
||||
do {
|
||||
int fd = open("/dev/null", O_RDWR, 0);
|
||||
RUNTIME_CHECK(fd >= 0);
|
||||
if (fd > STDERR_FILENO) {
|
||||
close(fd);
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
#if UV_VERSION_HEX >= UV_VERSION(1, 38, 0)
|
||||
int r;
|
||||
isc_mem_create("uv", &isc__uv_mctx);
|
||||
|
|
|
|||
Loading…
Reference in a new issue