[BUG] running mc "over" running one
Jose Celestino
japc at co.sapo.pt
Tue Oct 29 11:06:00 UTC 2002
Words by Pavel Roskin [Fri, Oct 25, 2002 at 07:13:25PM -0400]:
> Hello, Jose!
>
> Let's return the discussion to the list. I've seen some complaints from
> users reading the archives that the important pieces of the discussion are
> missing when the discussion becomes private.
>
Fair enough :)
> > > 1) Run xterm 2) Run mc in it 3) Press Ctrl-O 4) Run mc from the
> > > command line 5) Press F1. The help shows up. Nothing is frozen.
> >
> > Exactly the same I do except that I when I get to 5) it is frozen, the
> > xterm is black.
>
> I think it may be a subshell problem, and there are good chances that it's
> fixed in CVS. At least is was fixed for Cygwin. I have no idea why it
> happens on your system.
>
It is indeed a subshell problem, see ahead.
> Please try the latest snapshot from
> http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/snapshots/
>
All debugging, and everything referenced in this mail is related to
this version.
> > 13963 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 13963
> > rt_sigsuspend([]
>
> There have been significant changes near this point in subshell.c
>
You mean at synchronize?
> > lrwx------ 1 japc japc 64 Oct 24 17:03 6 -> /dev/pts/12
> > lrwx------ 1 japc japc 64 Oct 24 17:03 7 -> /dev/ptmx
>
> This means that the second mc has already created the pseudoterminal for
> its subshell. If it hangs, it happens quite late in the initialization
> process, most likely in the subshell code.
>
Exactly. I've done some further debugging and find it to stop after
failing at FD_ISSET's in feed_subshell at subshell.c (967 and
following -- only the first call to feed_subshell get FD_ISSET ok). It
then just returns to init_subshell and gets stuck there.
One thing I forgot to include in the previous mail was the state for
both mc shell's:
[japc at morgoth:/tmp/mc-2002-10-25-22.ALTERED/src]$ ps auxw | grep 'bash -rcfile'
japc 7796 0.0 1.1 4632 1416 pts/5 S 03:11 0:00 bash -rcfile .bashrc
japc 7802 0.0 0.9 4524 1208 pts/6 T 03:11 0:00 bash -rcfile .bashrc
As you can see the second one stays stopped. That is most certainly
related with the
g_snprintf (precmd, sizeof (precmd), "precmd() {pwd>&%d;kill -STOP $$ }\n",
at subshell.c
which later gets writen to the pty:
write (subshell_pty, precmd, strlen (precmd));
So it is not really the second mc that is stopping/blocking but rather the shell
it is trying to execl.
Of course that if I do a #undefine HAVE_SUBSHELL_SUPPORT the problems go
away.
Hope this helps.
--
Jose Celestino <japc at co.sapo.pt> SysAdmin::SAPO.pt http://www.sapo.pt
-----------------------------------------------------
"Lately, the only thing keeping me from becoming a serial killer is my distaste
for manual labor." -- Dilbert
More information about the mc-devel
mailing list