Re: FreeBSD socket.test FAIL: recvmsg() error EAGAIN on accept TCP socket receive

Miroslav Lichvar <[email protected]> Thu, 28 Aug 2025 10:07:31 +0200
Newsgroups gmane.comp.time.chrony.user
Message-ID <aLAOQ1jU3w9FbfKY@localhost>
On Wed, Aug 27, 2025 at 04:50:36PM +0200, Matthias Andree wrote:
> chrony 4.7 and 4.8 (and possibly others) have an issue with
> test/util/socket.c's self test,
> UNLESS running under "truss" (think strace in the Linux world).
> 
> Apparently we're looking at OS-specific differences WRT non-blocking
> accept()ed sockets for TCP between FreeBSD and, say, Linux, or with
> something that a syscall tracer will cause to be retried.

I have a FreeBSD 14.2 VM that I use for testing and it wasn't failing
for me. Maybe it's too slow.

> Debugging this, SCK_AcceptConnection unconditionally sets O_NONBLOCK on the
> socket,

It should be now fixed in git. Thanks for the report.

> Speaking of which, configure states that FreeBSD 11.0 had a broken
> recvmmsg() - have there been bug reports at the time or fixes? Have we
> retried this on 13.5, 14.2, 14.3? What do we need to look for?

That bug was fixed, but it seems it's still just a loop around
recvmsg, not a single system call, which means there is an extra
system call made and I'm not sure if it's worth it.

https://github.com/freebsd/freebsd-src/blob/main/lib/libsys/recvmmsg.c#L80

-- 
Miroslav Lichvar


-- 
To unsubscribe email chrony-users-request-kWFZVVI9zxvPqho9SqqRMmD2FQJk+8+b@public.gmane.org 
with "unsubscribe" in the subject.
For help email chrony-users-request-kWFZVVI9zxvPqho9SqqRMmD2FQJk+8+b@public.gmane.org 
with "help" in the subject.
Trouble?  Email [email protected]