[2nd bit of detective work on this]
ht writes:
OK, a bit of narrowing in because I had some old (cygwin, 32-bit)
binaries lying around.
-rwxr-xr-x 1 ht None 12618371 Aug 23 2012 /usr/local/bin/xemacs-21.5-b32.exe
-rwxr-xr-x 1 ht None 10850832 Dec 13 2010 /usr/local/bin/xemacs-21.5-b29.exe
Picking this up again.
The b29 version, run -nw, runs M-x shell just fine.
The b32 version, run -nw, fails as before (stopped before any input).
Now running on Windows 8.1, with 32-bit Cygwin v1.7.29.
I've taken straces, tidied them, and am trying to locate significant
differences.
The first substantive difference I _may_ have spotted follows, just as
the bash sub-process gets going, is set out below. It's long, and
maybe as opaque to everyone else as it is to me, but although it's a
long shot I thought since it is the first substantive difference
between the two versions in regard to the handling of the bash
sub-proc's tty I/O, it was worth sending in case someone says "oh,
yes, I see what's changed":
Same in both b29 and b32 (note the change in PID from parent to child):
[main] PID1 close: 0 = close(7)
[main] PID7 fork: 0 = fork()
[main] PID7 init_cygheap::close_ctty: closing cygheap->ctty 0xADDR
[main] PID7 fhandler_base::close_with_arch: not closing passed in archetype 0xNULL,
usecount 3
[main] PID7 setsid: sid PID7, pgid PID7, no ctty
this follows on as follows for b29 (the working version):
[main] PID7 close: close(7)
[main] PID7 fhandler_base::close_with_arch: line 1140: /dev/pty2<0xADDR> usecount +
-1 = 0
[main] PID7 fhandler_base::close_with_arch: closing archetype
[main] PID7 fhandler_pty_slave::cleanup: /dev/pty2 closed, usecount 0
[main] PID7 fhandler_pty_slave::close: closing last open /dev/pty2 handle
[main] PID7 fhandler_pty_common::close: pty2 <0xADDR,0xADDR> closing
[main] PID7 dtable::delete_archetype: deleting element 2 for /dev/pty2(136/2)
[main] PID7 close: 0 = close(7)
[main] PID7 open: open(/dev/pty2, 0xADDR)
[main] PID7 normalize_posix_path: src /dev/pty2
[main] PID7 normalize_posix_path: /dev/pty2 = normalize_posix_path (/dev/pty2)
[main] PID7 mount_info::conv_to_win32_path: conv_to_win32_path (/dev/pty2)
[main] PID7 mount_info::conv_to_win32_path: src_path /dev/pty2, dst /dev/pty2, flags
0xADDR, rc 0
[main] PID7 fhandler_pipe::create: name
\\.\pipe\cygwin-51326d7dca39ce88-pty2-from-master, size
131072, mode PIPE_TYPE_MESSAGE
[main] PID7 fhandler_pipe::create: pipe busy
[main] PID7 tty::exists: exists 1
[main] PID7 build_fh_pc: created an archetype (0xADDR) for /dev/pty2(136/2)
[main] PID7 build_fh_pc: fh 0xADDR, dev 00880002
[main] PID7 fhandler_pipe::create: name
\\.\pipe\cygwin-51326d7dca39ce88-pty2-from-master, size 131072, mode PIPE_TYPE_MESSAGE
[main] PID7 fhandler_pipe::create: pipe busy
[main] PID7 tty::exists: exists 1
[main] PID7 alloc_sd: uid 1001, gid 513, attribute 0xADDR
[main] PID7 cygsid::debug_print: alloc_sd: owner SID =
S-1-5-21-3264347833-3381411623-2398912269-1001 (+)
[main] PID7 cygsid::debug_print: alloc_sd: group SID =
S-1-5-21-3264347833-3381411623-2398912269-513 (+)
[main] PID7 alloc_sd: ACL-Size: 124
[main] PID7 alloc_sd: Created SD-Size: 200
[main] PID1 sigprocmask: 0 = sigprocmask (0, 0xADDR, 0xADDR)
[main] PID7 fhandler_pty_slave::open: (440): pty output_mutex (0xADDR): waiting -1 ms
[main] PID7 fhandler_pty_slave::open: (440): pty output_mutex: acquired
[main] PID7 tty::create_inuse: cygtty.slave_alive.2 0xADDR
[main] PID7 fhandler_pty_slave::open: (443): pty output_mutex(0xADDR) released
[main] PID7 open_shared: name cygpid.PPID1, n PPID1, shared 0xADDR (wanted 0xNULL), h
0xADDR, *m 6
[main] PID7 fhandler_pty_slave::open: dup handles directly since I'm the owner
[main] PID7 fhandler_pty_slave::open: duplicated from_master 0xADDR->0xADDR from
pty_owner
[main] PID7 fhandler_pty_slave::open: duplicated to_master 0xADDR->0xADDR from
pty_owner
[main] PID7 fhandler_console::need_invisible: invisible_console 0
[main] PID7 fhandler_base::open_with_arch: line 474: /dev/pty2<0xADDR> usecount + 1
= 1
[main] PID7 fhandler_base::set_flags: flags 0xADDR, supplied_bin 0xNULL
[main] PID7 fhandler_base::set_flags: O_TEXT/O_BINARY set in flags 0xADDR
[main] PID7 fhandler_base::set_flags: filemode set to binary
but quite differently for b32 (the non-working version):
[main] PID7 isatty: 1 = isatty(7)
[main] PID7 ioctl: ioctl(fd 7, cmd 0xADDR)
[main] PID7 fhandler_pty_slave::ioctl: ioctl (540E)
[main] PID7 fhandler_termios::ioctl: myself->ctty -2, myself->sid PID7,
myself->pid PID7, arg 0, tc()->getsid () 0
after which they get back in sync with
[main] PID7 _pinfo::set_ctty: old no ctty, ctty device number 0xADDR, tc.ntty device
number 0xADDR flags & O_NOCTTY 0xNULL
[main] PID7 _pinfo::set_ctty: cygheap->ctty 0xNULL, archetype 0xADDR
[main] PID7 _pinfo::set_ctty: ctty was NULL
[main] PID7 _pinfo::set_ctty: line 482: /dev/pty2<0xADDR> usecount + 1 = 2
Thanks,
ht
--
Henry S. Thompson, School of Informatics, University of Edinburgh
10 Crichton Street, Edinburgh EH8 9AB, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht(a)inf.ed.ac.uk
URL:
http://www.ltg.ed.ac.uk/~ht/
[mail from me _always_ has a .sig like this -- mail without it is forged spam]
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta