Package: dash
Version: 0.5.7-2
Severity: important
Tags: unreproducible
Forwarded:
http://thread.gmane.org/gmane.comp.version-control.git.debian/147/focus=743
Hi,
Git is failing to build from source on launchpad's autobuilders with
t9010-svn-fe.sh: 27: eval: cannot create backflow: Interrupted system
call
That is, the open64 to open the "backflow" fifo is interrupted by a
signal. My best guess is that dash v0.5.6~24 ([JOBS] Fix dowait
signal race, 2009-02-22) introduced this regression. Anders and I are
not able to reproduce it locally.
Jilles Tjoelker wrote, upstream:
| It looks like this patch breaks interrupting (via SIGINT) a blocking
| open, for example of a fifo. Although the race condition associated with
| relying on [EINTR] is very hard to close, I don't think that's reason to
| give up on it entirely.
|
| I think it is better to rethink commit
| 3800d4934391b144fd261a7957aea72ced7d47ea that caused this bug (and some
| others that have been fixed). A signal handler for SIGCHLD was added to
| allow waiting for a trapped signal or a child process at the same time
| (using sigsuspend, as was done, or sigwait). However, leaving the signal
| handler installed all the time causes unexpected [EINTR] errors, so I
| suggest only installing it during the "wait" builtin or specifying
| SA_RESTART only for this special SIGCHLD handler (while leaving all
| other signal handlers interrupting). In either case, behaviour for
| SIGCHLD handlers installed because of CHLD traps should remain
| unchanged. The former seems safest because SA_RESTART handlers still
| cause visible effects such as short writes.
Sounds sensible to me. Filing so it doesn't get forgotten. Anyone
working on this should probably just work on it upstream directly.
See also v0.5.7~39 ([BUILTIN] Continue after EINTR in read(1) with no
pending signals, 2010-05-29).
Thanks,
Jonathan
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]