[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#729697: marked as done (libc0.1: wait6 is broken on 9.2+)



Your message dated Sat, 23 Nov 2013 14:55:19 +0000
with message-id <CANBHLUjVwiSpX=1HJqXd27Q61QcyR+VF6UCheRT2rD_VRO6vGA@mail.gmail.com>
and subject line Re: libc0.1: wait6 is broken on 9.2+
has caused the Debian Bug report #729697,
regarding libc0.1: wait6 is broken on 9.2+
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
729697: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729697
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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.

--- End Message ---
--- Begin Message ---
freebsd upstream has now committed fixes to trunk. I'll work with
kfreebsd maintainers to cherrypick the fixes on the kernel side.
therefore no workarounds will be required in eglibc itself.

See progress on the cloned bug.

Regards,

Dmitrijs.

--- End Message ---

Reply to: