Problems with cygwin1-20010304 and Cygwin-Xemacs subprocesses

Christopher Faylor cgf@redhat.com
Mon Mar 12 10:31:00 GMT 2001


On Mon, Mar 12, 2001 at 08:27:57PM +0300, Egor Duda wrote:
>Hi!
>
>Monday, 12 March, 2001 Christopher Faylor cgf@redhat.com wrote:
>
>CF> On Mon, Mar 12, 2001 at 06:49:47PM +0300, Egor Duda wrote:
>>>Monday, 12 March, 2001 Christopher Faylor cgf@redhat.com wrote:
>>>>>From the errors, it *looks* like these are problems in some of Egor Duda's recent
>>>CF> additions.  I'd prefer to let him look into this, if possible.
>>>
>>>i've   finally  make  xemacs  work  on my machine and reproduced these
>>>errors.  i  hope  that  now  fixing  them is only matter of time. i'll
>>>submit the patch ASAP.
>
>CF> Is it possible that this is a problem with F_SETFD inheritance?  I seem
>CF> to recall that I had problems with this when modifying tty stuff in
>CF> the past.
>
>it    looks    like   we   don't   set   need_fixup_after_fork   for
>fhandler_tty_slave.  is  it  intentional?
>
>afaics,  this  leads to the situation when process with open slave tty
>forks,  forkee  doesn't call fhandler_tty_common::fixup_after_fork, as
>it thinks it doesn't need to, so all handles are left invalid. if then
>forkee  close  this  inherited fd of slave tty, there is a chance that
>some  valid  handle  is  occasionally  equal to the, say, non-fixed-up
>'input_available_event' handle, and nevertheless, we call
>ForceCloseHandle(input_available_event).
>
>if  i  understand  things  right,  it  will  be  sufficient  to  call
>set_need_fork_fixup()  in  fhandler_tty_slave  constructor. or even in
>fhandler_tty_common constructor?

Weird.  There is a fork_fixup method for tty's but it is never being called?
Again, I'm puzzled as to how cygwin could be working at all in that scenario
but, you are right, I don't see how the method could be called.

I think we should remove the 'set_need_fork_fixup ()' and make this part of
a generic fhandler_termios constructor.  That will catch all cases that need
it, I think.

Could you do that?

cgf



More information about the Cygwin-developers mailing list