cvs commit: src/bin/mv mv.c
Alfred Perlstein
alfred at freebsd.org
Mon Dec 17 12:53:01 PST 2007
* Diomidis Spinellis <dds at aueb.gr> [071217 01:04] wrote:
> Alfred Perlstein wrote:
> >* Diomidis Spinellis <dds at FreeBSD.org> [071216 09:47] wrote:
> >>dds 2007-12-16 17:47:34 UTC
> >>
> >> FreeBSD src repository
> >>
> >> Modified files:
> >> bin/mv mv.c
> >> Log:
> >> Eliminate gcc "variable clobbered" warnings by declaring the variables
> >> living across the vfork as volatile.
> >>
> >> Noted by: kan
> >>
> >> Revision Changes Path
> >> 1.48 +2 -1 src/bin/mv/mv.c
> >
> >I'm pretty sure that calling warn(3) under vfork() is not allowed
> >as it can clobber stdio state.
> >
> >To fix this, have the parent catch a return value from the child
> >and emit the warning.
>
> This has been there since (at least) 1994, but you're absolutely right.
...while you're there. :)
> POSIX states: "[...] the behavior is undefined if the process created
> by vfork() either modifies any data other than a variable of type pid_t
> used to store the return value from vfork(), or returns from the
> function in which vfork() was called, or calls any other function before
> successfully calling _exit() or one of the exec family of functions."
Yes, this is correct.
>
> I've fixed it in the way you suggested.
Thank you very much.
-Alfred
More information about the cvs-src
mailing list