Marking select(2) as restrict

Garrett Wollman wollman at
Wed Feb 21 20:27:22 UTC 2018

<<On Wed, 21 Feb 2018 22:10:02 +0200, Konstantin Belousov <kostikbel at> said:

> Undefined != broken, whatever some compiler vendors try to bluff.

No, undefined behavior means the application is wrong.  Literally
anything may happen; the compiler does not enter into it.  The
compiler is not involved when you free() a pointer into the stack, or
pass a null pointer into a library routine that unconditionally
dereferences it, or update a string literal; nor is it involved when
you pass pointers that alias to a library routine that expects them to
point to different objects.

In the particular case of select(), there are no guarantees as to the
order in which the fd_set objects pointed to by readfds, writefds, and
exceptfds will be updated, so applications which alias them are
clearly wrong and have been since this interface was introduced in


More information about the freebsd-standards mailing list