Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

FPATH/autoload still strange in -dev-21



I just got -dev-21 + patches to 10477 compiled and installed, and I'm still
having the strange problems with exported FPATH and (autoload -U) failing
that I described in 10316.  I examined strace output and discovered that
in the expression:

	if (autoload -U 2> /dev/null); then

First zsh forks the subshell, and then the subshell forks again, apparently
in order to redirect the output of the builtin; but then the subshell exits
for some reason I can't follow, leaving the autoload running as an orphan.
So zsh never sees the exit status of autoload.  (The process forked from
the subshell is plugging away close()ing each of 256 file descriptors, 
except for 0, 1, and 2, most of which are returning EBADF, while its parent
subshell is exiting.)

Now, the odd thing is, the subshell calls _exit(0), so you'd think that zsh
would take the "then" branch of the "if" -- but it doesn't, it takes the
"else" branch.  So there must be two race conditions (?) here -- one in the
subshell where it loses track of its child, and another where the topmost
zsh mishandles the exit of that subshell.

It occurs to me that this could be related to Geoff's report of the "jobs"
command claiming there is a nonexistent job 3.  Why having FPATH in the
environment makes ths happen, I have no idea, but I can reproduce it quite
nicely, so if anyone (Sven?) wants the sample strace output I'd be happy
to provide it.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com



Messages sorted by: Reverse Date, Date, Thread, Author