[PATCH] [BZ #18433] Check file access/existence before forking.
Alexander Monakov
amonakov@ispras.ru
Fri Sep 18 20:20:00 GMT 2015
On Fri, 18 Sep 2015, Rich Felker wrote:
> > > i think all use of vfork is invalid c: the compiler can
> > > spill registers on the stack then in the child clobber
> > > them, then after vfork returns in the parent the
> > > clobbered registers are restored breaking the expectations
> > > of the compiler. (this can break independently of how
> > > the c code around vfork looks like).
> >
> > The same argument applies to setjmp,
>
> Not quite. With setjmp, once there's any return from the function
> where setjmp was called (or call to a function that's known neither to
> return nor call longjmp or throw an exception), the compiler may
> rightfully assume that non-reachable data in the setjmp caller is no
> longer live and clobber it.
>
> What makes vfork is special is that the data must be treated as live
> even when the caller calls _exit.
For the compiler, the relationship between vfork and _exit should be the same
as between setjmp and longjmp: calling the latter causes the former to return
a second time.
More information about the Libc-alpha
mailing list