Package: libc0.1 Severity: serious Dear Maintainer, FreeBSD 9.2+ kernels have broken implementation of wait6 syscall. In particular: * if pointer to siginfo_t structured is passed * and WEXITED is ORed in options
The return value of siginfo_t.si_status is wrong. It is returned the same as "status", instead of result of WEXITSTATUS(status). Thus this is an "off-by-one" error, or more precisely off-by-bitmask error. A PR has been filed in FreeBSD at: http://www.freebsd.org/cgi/query-pr.cgi?pr=misc/184002 Affected kernels are 9.2+ all the way to HEAD. I've chatted with developers on #bsddev and they are recognising that this is a severe bug, as current behaviour doesn't comply with freebsd/linux manpages, POSIX, other implmentations of waitid. Furthermore, it appears that other functions that set values of siginfo_t.si_status incorrectly in other parts of FreeBSD kernels. E.g. sigwaitinfo() from stable/8 onwards... The wait6 / waitid() calls are added in the eglibc2.18 debian packaging branch. Therefore I request to do following: * make wait6() a proper wrapper around wait6 syscall and correct si_status. * make waitid implementation use the wait6() wrapper An example patch against current waitid patch, as I don't know how to make proper syscall wrapper functions, is attached. Please advice if Debian kFreeBSD maintainers are willing to patch this issue in the kernels ahead of FreeBSD releasing fixes / updates (at least for the wait6 syscall) Regards, Dmitrijs. -- To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org