I would actually like us to do this (the non-deterministic nature of UNIX
semantics wrt exec is hateful), but changing the kernel before the apps is
ass-backwards. Once this distros fix all their binaries (at least in their
bleeding edge versions) this makes more sense.
There are also some interesting comments the manpage for vfork:
BUGS
It is rather unfortunate that Linux revived this spectre
from the past. The BSD manpage states: "This system call
will be eliminated when proper system sharing mechanisms
are implemented. Users should not depend on the memory
sharing semantics of vfork as it will, in that case, be
made synonymous to fork."
Formally speaking, the standard description given above
does not allow one to use vfork() since a following exec
might fail, and then what happens is undefined.
Details of the signal handling are obscure and differ
between systems. The BSD manpage states: "To avoid a pos
sible deadlock situation, processes that are children in
the middle of a vfork are never sent SIGTTOU or SIGTTIN
signals; rather, output or ioctls are allowed and input
attempts result in an end-of-file indication."
Currently (Linux 2.3.25), strace(1) cannot follow vfork()
and requires a kernel patch.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/