If a Program is started from within fvwm 2.5.26 by 'Exec', it inherits $SIG{PIPE}=IGNORED (in Perl speak) from fvwm. This is particularly annoying in the chain fvwm -> xterm -> tcsh, as xterm doesn't change it and tcsh takes it as documented. (tcsh man page: "... signals have the values which the shell inherited from its parent.")

In the end this results in very strange errors for shell pipes, like "gunzip: stdout: Broken pipe" (several times) when you display man pages, etc.

One might argue that this is xterm's fault because gnome-terminal or konsole fix this themselves, or tcsh's fault as bash also rectifies things itself.

On the other hand, no other windows manager (I've tested kwm, metacity, and mwm) does this strange thing. Therefore I suggest that it should be fixed in fvwm.

To reproduce this behaviour even if tcsh is not your default shell, from within any X terminal emulator type either

   perl -e '$SIG{PIPE}="DEFAULT"; exec("xterm -e tcsh")'

or

   perl -e '$SIG{PIPE}="IGNORE"; exec("xterm -e tcsh")'

and then

   man gcc

from the xterm. The first line gives a properly working shell, the second one a shell that is as broken as it would be if started by fvwm via 'Exec xterm'.

-Michael

Reply via email to