MC no longer working with cygwin 3.1.x

Ken Brown kbrown@cornell.edu
Thu Dec 19 08:36:00 GMT 2019


On 12/18/2019 5:55 PM, Thomas Wolff wrote:
> 
> 
> Am 18.12.2019 um 22:14 schrieb Ken Brown:
>> On 12/18/2019 2:32 PM, Corinna Vinschen wrote:
>>> On Dec 18 17:23, Marco Atzeri wrote:
>>>> Am 18.12.2019 um 15:42 schrieb Laurent R:
>>>>> Dear all,
>>>>>
>>>>> After the update to cygwin-3.1.1, mc (aka Midnight Commander) no longer 
>>>>> starts. It goes into an infinite loop, if I go back to cygwin-3.0.7, mc 
>>>>> works perfectly.
>>>>>
>>>>> I tested with cygwin-3.1.0, same problem.
>>>>>
>>>>> The MC version is 4.8.23 and the operating system is Windows 10 Pro x64 1903.
>>>>>
>>>>> Regards.
>>>>>
>>>> confirmed
>>>>
>>>> there must be a race somewhere as running /usr/bin/mc.exe from strace
>>>> works fine.
>>> But that's not the only problem running mc AFAICS.  I'm seeing an
>>> error message in the background:
>>>
>>> Cannot open named pipe /tmp/mc-corinna/mc.pipe.384
>>>     
>>> /cygdrive/d/cyg_pub/devel/mc/mc-4.8.23-1.x86_64/src/mc-4.8.23/src/subshell/common.c: 
>>> open: Permission denied
>>>
>>> It looks like there's another problem, this time with the new FIFO
>>> code.
>>>
>>> Ken, care to take a look?
>> I've just looked at the mc source code, and it seems that (under tcsh only), mc
>> creates a fifo and tries to open it twice as O_RDWR.  This is not supported on
>> Cygwin, so the second attempt fails.
>>
>> Here's the relevant code from src/subshell/common.c:
>>
>>           if (mc_global.shell->type == SHELL_TCSH)
>>           {
>>               g_snprintf (tcsh_fifo, sizeof (tcsh_fifo), "%s/mc.pipe.%d",
>>                           mc_tmpdir (), (int) getpid ());
>>               if (mkfifo (tcsh_fifo, 0600) == -1)
>>               [...]
>>               /* Opening the FIFO as O_RDONLY or O_WRONLY causes deadlock */
>>
>>               if ((subshell_pipe[READ] = open (tcsh_fifo, O_RDWR)) == -1
>>                   || (subshell_pipe[WRITE] = open (tcsh_fifo, O_RDWR)) == -1)
>>               {
>>                   fprintf (stderr, _("Cannot open named pipe %s\n"), tcsh_fifo);
>>                   perror (__FILE__ ": open");
>>                   mc_global.tty.use_subshell = FALSE;
>>                   [...]
>>
>> Under bash, zsh, and some other shells, mc uses ordinary pipes rather than
>> FIFOs.  I have no idea why tcsh is treated differently.
>>
>> Until someone[*] gets around to making it possible to open a FIFO twice for
>> reading, I don't think there's anything we can do about it.  I also don't know
>> how important this is for mc.  I don't use tcsh or mc, so I can't judge.
> I've reproduced mc to fail, from bash, in cygwin 3.1.0 and 3.1.1, Windows 1809 
> and 1903.

That's not related to what I've been talking about, which is the error message 
"Cannot open named pipe /tmp/mc-corinna/mc.pipe.384" that Corinna reported.  The 
failure you're talking about occurs in all shells and has already been fixed by 
Takashi.  I imagine Corinna will release 3.1.2 with the fix very soon.

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list