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

Re: zsh-4.3.1[45] problem on FreeBSD

On Jan 1, 12:08pm, Bart Schaefer wrote:
} I wonder if we should just queue_signals()/unqueue_signals() around
} the entire body of zrefresh(), always?  Or is this the only place
} that's important?

As Herbert has now confirmed that the race can be resolved --

Although it probably wouldn't hurt anything to queue signals around
the bulk of zrefresh(), this part of zleread() is the only point at
which zleactive can be true before at least one call to zrefresh()
has completed; which, I think, means this is the only place where a
SIGWINCH could cause confusion.

I'd still like to know more about exactly what goes on under FreeBSD
in the case where it hangs, but I think the conservative approach is
to restrict the signal queuing to this one section.  I'll add a few
lines of comment and commit the patch.

Adding a further queue/unqueue inside zrefresh() later won't conflict,
should we find another such race condition.

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