Hi,
Thanks for the bug report and the investigation into the underlying cause.
I've added code to reset the signal handlers before entering the loop, which
seems to fix the problem. Fix is in the darcs tree and will be included with
the next fish release.
Axel
2009/2/28 Randall D. Wald <[email protected]>
> Jan and I were discussing some problems I was having with pam_mount, and
> discovered that my issues were in fact caused by fish. Here's what we've
> concluded:
>
> Summary: Multiple bugs w.r.t. foreground-background handling in fish
> Affected: fish 1.23.0
> Hardware Platform: x86_64, gentoo. It is believed to affect all
> configurations however.
> Operating System: Linux 2.6.28
> Details:
>
> Starting fish as a backgroud process (from another subshell),
> it goes into an infinite loop whilst waiting for itself to
> become the process group leader.
>
> Reproducibility: Always
> Steps to reproduce:
>
> 1. start a shell different than fish, for example, bash
> 2. issue "fish &"
> 3. (infinite loop until put into foreground)
>
> Actual Results:
>
> fish goes into an endless loop. The code responsible is:
>
> /* Loop until we are in the foreground. */
> while (tcgetpgrp(0) != shell_pgid)
> {
> killpg(shell_pgid, SIGTTIN);
> }
>
> tcgetpgrp(0) returns the PID of the bash shell; shell_pgid
> is the PID of fish, and getpid() happens to equal shell_pgid.
>
> I [Jan] am by no means familiar with fish, but it seems that
> it catches SIGTTIN and "handles" it without action, that is,
> fails to suspend itself, which the default handler for SIGTTIN
> would do. This would explain the endless loop.
>
> Expected results:
>
> Not busy looping.
>
> Additional information:
>
> Calling tcsetpgrp() in the aforementioned function also seems
> a bit dangerous (it looks like fish "steals" the tty control),
> for the parent shell (bash in the example) should have issued
> tcsetpgrp when it gave control to the fish subshell.
>
> Severity: Major?
> Impact:
>
> Though calling "fish &" might seem a bit strange, it seems to
> be part of a bigger issue of a hanging login procedure
> (both with standard console login(1) and others, such as
> bash->su->fish) that we observed.
>
> # ps xaf -o pid,pgrp,stat,command
> PID PGRP STAT COMMAND
> 8287 8287 Ss /bin/login --
> 8299 8287 R \_ -fish
>
>
>
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco,
> CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the
> Enterprise
> -Strategies to boost innovation and cut costs with open source
> participation
> -Receive a $600 discount off the registration fee with the source code:
> SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> Fish-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/fish-users
>
>
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users