Hello, I found that systemd-networkd creates a netlink socket and then doesn't read data from it. The reason is that a stream of messages into this socket is too active, so they fill the socket buffer and recvmsg() returns -ENOBUF.
We have to close this socket or set NETLINK_NO_ENOBUFS to avoid the error. root@localhost:/# ps axf ... 100 ? Ss 0:00 /lib/systemd/systemd-networkd ... root@localhost:/# cat /proc/net/netlink sk Eth Pid Groups Rmem Wmem Dump Locks Drops Inode 0000000000000000 0 1 00000551 426412 0 0 2 881909 1111601 ... root@localhost:/# lsof -p 100 | grep 1111601 systemd-n 100 systemd-network 3u netlink 0t0 1111601 ROUTE root@localhost:/# strace -f -p 100 -s 256 -o log ... 100 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000040}, msg_iov(1)=[{"4\0\0\0\31\0\0\0\0\0\0\0\237\2\0\0\2 \0\0\376\4\0\1\0\0\0\0\10\0\17\0\376\0\0\0\10\0\1\0\300\250\0\377\10\0\4\0\1\0\0\0", 4552}], msg_controllen=24, [{cmsg_len=20, cmsg_level=SOL_NETLINK, cmsg_type=3}], msg_flags=MSG_CTRUNC}, MSG_TRUNC) = 52 100 epoll_wait(5, [{EPOLLIN, {u32=4059701360, u64=139848194859120}}], 8, 0) = 1 100 clock_gettime(CLOCK_MONOTONIC, {60, 571403118}) = 0 100 epoll_wait(5, [{EPOLLIN|EPOLLERR, {u32=4059701360, u64=139848194859120}}], 8, 0) = 1 100 clock_gettime(CLOCK_MONOTONIC, {60, 571455802}) = 0 100 recvmsg(3, 0x7ffce6f903e0, MSG_PEEK|MSG_TRUNC) = -1 ENOBUFS (No buffer space available) 100 epoll_ctl(5, EPOLL_CTL_DEL, 3, NULL) = 0 root@localhost:/# dpkg -l | grep systemdu ii systemd 231-9ubuntu2 amd64 system and service manager Thanks, Andrei _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/systemd-devel