Cygwin Subprocesses on XEmacs
Corinna Vinschen
corinna-cygwin@cygwin.com
Thu Jan 29 09:40:00 GMT 2015
Hi Vin,
On Jan 28 22:32, Vin Shelton wrote:
> Dear Corinna, et al -
>
> On Wed, Jan 28, 2015 at 8:58 AM, Corinna Vinschen wrote:
> > On Jan 28 08:20, Vin Shelton wrote:
> >> On Wed, Jan 28, 2015 at 4:53 AM, Corinna Vinschen wrote:
> >> > On Jan 27 23:05, Vin Shelton wrote:
> >> >> I spent some time debugging M-x shell in XEmacs on 32-bit Cygwin.
> >> >> Here's what I found out.
> >> >>
> >> >> In the child after fork() but before exec(), the setsid() call in
> >> >> disconnect_controlling_terminal() is causing the subprocess not to
> >> >> function after it gets spawned.
> >> >
> >> > Can you define "not function" a bit more detailed? Does no process work
> >> > at all, or do only processes requiring a tty not work? For instance,
> >> > does something like an "echo foo > bar" still work?
> >> [...]
> >> >> Thanks for any insight you can offer.
> >> >
> >> > Hmm, not off the top of my head. Is there a chance that you could
> >> > provide a simple, self contained testcase to reproduce the setsid
> >> > behaviour? I think I have to debug that.
> >>
> >> You mean a simpler test case than XEmacs? That seems like a low bar. :-)
> >
> > LOL.
>
> After thinking about this for awhile, it dawned on me that the problem
> is not with setsid() per se, but rather with the sequence of events
> _following_ the setsid() call. That is, setsid() causes some of the
> ensuing ioctl() (or similar) calls that set up the pty to fail.
>
> I think I have verified this behavior - I restored the old sysdep.c
> module and moved the disconnect_controlling_terminal() call [which
> calls setsid()] from right after the fork() to just before the exec()
> call and M-x shell works on Cygwin as it always has on linux.
Good news! So the XEmacs code is in a state now that Volker can
start creating a Cygwin package?
> I will endeavor to create a STC for Cygwin that includes all the code
> involved in setting up the terminal so we can experiment with moving
> the setsid() call between the beginning and the end of the function.
Ok, thanks. Hopefully we can find the snag in Cygwin.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-apps/attachments/20150129/a536aad8/attachment.sig>
More information about the Cygwin-apps
mailing list