[M3devel] Solaris vfork? => suggest using fork instead?

Tony Hosking hosking at cs.purdue.edu
Mon Jun 15 15:29:39 CEST 2009


Signals are no longer used for inc gc so probably ok to switch to fork.

On 15 Jun 2009, at 03:13, Jay wrote:

> Is this still true:
>
>
> C:\dev2\cm3.2\m3-libs\m3core\src\unix\solaris-2-x\Unix.i3(943):(***  
> vfork - spawn new process in a virtual memory efficient way ***)
> C:\dev2\cm3.2\m3-libs\m3core\src\unix\solaris-2-x\Unix.i3(944):(*  
> Avoid vfork. The way it is used in ProcessPosix breaks incremental GC:
>  
>
> (*** vfork - spawn new process in a virtual memory efficient way ***)
> (* Avoid vfork. The way it is used in ProcessPosix breaks  
> incremental GC:
> RestoreHandlers in child is reflected in parent to break VM faulting  
> *)
> <*EXTERNAL "fork1"*> PROCEDURE vfork (): int;
>
>
> If this is true, I broke it.
>
>
> C:\dev2\cm3.2\m3-libs\libm3\src\os\POSIX does use vfork.
>
>
> Should we just use fork?
> vfork is the same as fork on Cygwin -- both are slow.
>
> There is also reason to use fork on NetBSD.
> NetBSD renames nearly every single symbol at the link level via  
> special constructs in its header files.
> As a result, the usual direct extern Modula-3 pragmas are rarely  
> correct there.
>   That is, for the sake of NetBSD, it is best to wrap every C  
> function with our own C functions.
> However, wrapping functions contradicts the Posix constraints on  
> vfork -- you are not allowed to return from the function calling  
> vfork without calling exec or _exit. Or do no real systems care  
> about that?
>
>
> So, to be clear, I suggest changing ProcessPosix.m3 from vfork to  
> fork.
> As well as RTPerfTool.m3.
>
>
> I suggest removing vfork from Unix/*.i3, make sure everything  
> compiles -- that nobody uses it -- and then restoring it, in case  
> there is a later need, to avoid bootstrapping problems if there is.
>
>
>  - Jay

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090615/4cd4300a/attachment-0002.html>


More information about the M3devel mailing list