SHOPT_SPAWN => use the ast spawnveg()
the posix_spawn vs vfork vs fork iffe test results are used by the
libast spawnveg() implementation

-- Glenn Fowler -- AT&T Research, Florham Park NJ --

On Mon, 30 Oct 2006 05:25:28 +0100 Roland Mainz wrote:
> Glenn Fowler wrote:
> > > Should ksh93/libshell use  |posix_spawn()| instead of |vfork()| ?
> > 
> > it should and it does
> > 
> > all ast and ksh fork()/exec() is done by the ast spawnveg()
> > which configures to the local system at compile time
> > if posix_spawn is available then it is used
> > a few other non-standard fork+exec combinations are also checked
> > before vfork+exec, finally defaulting to fork+exec
> > 
> > note that there are instances where ksh prefers pure fork()
> > although it can work around that too

> Quick test: I've set "-DSHOPT_SPAWN" at built time (since the
> buildlog.log doesn't list SHOPT_SPAWN when compiling ast-ksh) but ksh93
> still calls |vfork()|:
> -- snip --
> ksh93 -o gmacs
> $ ls
> stopped in _vfork at 0xff23725c
> 0xff23725c: _vfork       :      mov      3, %o0
> stopped in _vfork at 0xff23725c
> 0xff23725c: _vfork       :      mov      3, %o0
> (dbx) where
> =>[1] _vfork(0x1, 0xff0ead00, 0xff0eacfc, 0xffbfdb40, 0x9eeb4, 0xbc00),
> at 0xff23725c 
>   [2] spawnveg(0x28242, 0x280d8, 0x28104, 0x1, 0x280a1, 0x27710), at
> 0xff05e538 
>   [3] _spawnveg(0x28242, 0x1, 0xff38f678, 0xff38c000, 0x0, 0x44848), at
> 0xff3477f0 
>   [4] path_spawn(0xffffffff, 0x280d8, 0x28240, 0x3d, 0x3, 0x28242), at
> 0xff349778 
>   [5] sh_ntfork(0xff38c000, 0x1, 0xff38f678, 0xff38f220, 0xff38c000,
> 0x0), at 0xff359a00 
>   [6] sh_exec(0x280a8, 0x24, 0xff38f220, 0x232f0, 0x65ab0, 0xff0eac40),
> at 0xff3551a4 
>   [7] exfile(0xff38f220, 0x280a8, 0x34, 0xff38f678, 0xff38f678,
> 0xff38c000), at 0xff318e60 
>   [8] sh_main(0xff38f220, 0x319c8, 0xff38c000, 0xff38c000, 0xff38c000,
> 0xff38c000), at 0xff3183b0 
> -- snip --

> ;-(

> I've removed "-DSHOPT_SPAWN" from the built options but |vfork()| still
> gets called (=no change) ... ;-(

> ----

> Bye,
> Roland

> -- 
>   __ .  . __
>  (o.\ \/ /.o) roland.mainz at nrubsig.org
>   \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
>   /O /==\ O\  TEL +49 641 7950090
>  (;O/ \/ \O;)


Reply via email to