On Sun, Nov 06, 2016 at 09:34:17AM +0100, Nicolas Joly wrote: > > Hi, > > Just encountered a case where wait(4) + WNOHANG do not fail with > expected ECHILD when there is no process to wait. > > The attached testcase illustrate this : > > pid = wait4(-1, NULL, 0, NULL); > assert(pid == -1 && errno == ECHILD); > pid = wait4(-1, NULL, WNOHANG, NULL); > assert(pid == -1 && errno == ECHILD); > > The first wait(4) call fails as expected, but the second one makes the > assert fire because pid == 0 ... where i would have expected same > failure as previous (-1 + ECHILD) > > njoly@raya [netbsd/funcs]> make wait4 > cc -g -Wall -Werror -o wait4 wait4.c > njoly@raya [netbsd/funcs]> ./wait4 > assertion "pid == -1 && errno == ECHILD" failed: file "wait4.c", line > 13, function "main"
Just tested it on 7.0.2 NetBSD/amd64 under qemu, and it works as expected. Looks like a -current regression. -- Nicolas Joly Cluster & Computing Group Biology IT Center Institut Pasteur, Paris.
