Skip to content

Floods journal (100%CPU unbound, 100%CPU sd-journald) with errors when it can't reply to control socket peer #947

Closed
@nabijaczleweli

Description

@nabijaczleweli

Describe the bug
Floods journal (100%CPU unbound, 100%CPU sd-journald) with errors when it can't reply to control socket peer

To reproduce

#include <unistd.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/sendfile.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/un.h>

int main(int argc, const char * const * argv) {
	struct sockaddr_un unbound_ctl;
	unbound_ctl.sun_family = AF_UNIX;
	strncpy(unbound_ctl.sun_path, argv[1], sizeof(unbound_ctl.sun_path));

	int local_datas = socket(AF_UNIX, SOCK_STREAM, 0);
	connect(local_datas, &unbound_ctl, sizeof(unbound_ctl));
#define LOCAL_DATAS "UBCT1 local_datas\n"
	write(local_datas, LOCAL_DATAS, sizeof(LOCAL_DATAS) - 1);
	while(sendfile(local_datas, 0, 0, 128 * 1024 * 1024))
		;
}
$ { printf '%s\n' 'UBCT1 local_datas' ';; a' 'abc.def. 3600 in txt testupa' ';; b'; } > badzone
$ cc badzone.c -o badzone.run
$ sudo ./badzone.run /run/unbound.ctl < badzone

(if you run badzone.run under strace it doesn't reliably reproduce; attaching strace to unbound may also affect this).

journalctl -f:

2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe
2023-10-09T16:55:42+0200 tarta unbound[1362853]: [1362853:0] error: could not send: Broken pipe

&c.

Needs SIGKILL.

Expected behavior
not that

System:

  • Unbound version: 1.17.1-2 off Debian
  • Unbound version: 1.18.0-2 off Debian
  • OS: Debian
  • unbound -V output:
Version 1.17.1

Configure line: --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --with-pythonmodule --with-pyunbound --enable-subnet --enable-dnstap --enable-systemd --with-libnghttp2 --with-chroot-dir= --with-dnstap-socket-path=/run/dnstap.sock --disable-rpath --with-pidfile=/run/unbound.pid --with-libevent --enable-tfo-client --with-rootkey-file=/usr/share/dns/root.key --enable-tfo-server
Linked libs: libevent 2.1.12-stable (it uses epoll), OpenSSL 3.0.11 19 Sep 2023
Linked modules: dns64 python subnetcache respip validator iterator
TCP Fastopen feature available

BSD licensed, see LICENSE in source package for details.
Report bugs to unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues
Version 1.18.0

Configure line: --build=x86_64-linux-gnux32 --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnux32 --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --with-pythonmodule --with-pyunbound --enable-subnet --enable-dnstap --enable-systemd --enable-cachedb --with-libhiredis --with-libnghttp2 --with-chroot-dir= --with-dnstap-socket-path=/run/dnstap.sock --disable-rpath --with-pidfile=/run/unbound.pid --with-libevent --enable-tfo-client --with-rootkey-file=/usr/share/dns/root.key --disable-flto --enable-tfo-server
Linked libs: libevent 2.1.12-stable (it uses epoll), OpenSSL 3.0.11 19 Sep 2023
Linked modules: dns64 python cachedb subnetcache respip validator iterator
TCP Fastopen feature available

BSD licensed, see LICENSE in source package for details.
Report bugs to unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues

Additional information
Downstream bug: https://bugs.debian.org/1051818

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions