Subject: Re: popen reentrant (was Re: SA/pthread and vfork)
To: Christos Zoulas <christos@zoulas.com>
From: Christian Limpach <chris@pin.lu>
List: tech-kern
Date: 09/10/2003 19:28:35
Quoting Christos Zoulas <christos@zoulas.com>:

> Christian Limpach <chris@pin.lu> wrote:
> >There's still the issue of upcalls happening while the child is still
> >running on the parent's stack.  An upcall will save the ucontext on the
> >same stack and thus trash it.  Should we just block/hold all upcalls
> >between vfork and when execve clears P_PPWAIT?
> 
> It seems to me that the vfork semantics should be changed so that
> upcalls
> should not be happening while the child is running on the parent's
> stack.
> Maybe we should introduce a process flag that indicates P_INVFORK, and
> have execve clear it. While a process is in P_INVFORK, it cannot execute
> upcalls.

yes, I have vfork set P_SA_HOLDUPCALL and execve/exit clear the flag.  If 
this flag is set, all other LWPs will sleep in sa_upcall_userret until the 
flag is cleared.  I'd prefer a SA specific flag because once we support 
multiple vp's we'll only have to block upcalls on the one vp.

-- 
Christian Limpach <chris@pin.lu>