2011/7/22 Yui NARUSE <naruse / airemix.jp>:
>
> Mac OS X と FreeBSD にて、存在しない fd を close してしまう問題について、
> 現在 r32598 で応急処置が施されていますが、根本的な原因について、
> sys/kern/uipc_socket.c を見るに、
> http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?rev=1.340.2.6.2.1;content-type=text%2Fplain;only_with_tag=RELENG_8_2_0_RELEASE
>
>         * Process one or more MT_CONTROL mbufs present before any data mbufs
>         * in the first mbuf chain on the socket buffer.  If MSG_PEEK, we
>         * just copy the data; if !MSG_PEEK, we call into the protocol to
>         * perform externalization (or freeing if controlp == NULL).
>
> とあるので、recvmsg に MSG_PEEK を与えた場合は invalid なものが返ってくると思うのですが。

おぉ、素晴らしい。

ではとりあえず FreeBSD と MacOS X で MSG_PEEK のとき、という条件ですかね。
-- 
[田中 哲][たなか あきら][Tanaka Akira]