Subject: bug#17510: 24.3.91; Problem with `emacs --daemon' in cygw32 build

From: Eli Zaretskii <[email-masked]>
Date: Sun, 18 May 2014 07:32:32 +0300

> Date: Sat, 17 May 2014 19:39:33 -0400
> From: Ken Brown <[email-masked]>
> 
> On 5/16/2014 4:06 PM, Ken Brown wrote:
> > On 5/16/2014 1:50 PM, Ken Brown wrote:
> >> This bug was reported in the Cygwin mailing list:
> >>
> >>    https://cygwin.com/ml/cygwin/2014-05/msg00303.html
> >>
> >> In a Cygwin terminal, do the following, where "emacs" denotes the cygw32
> >> build of emacs (--with-w32).
> >>
> >> 1. $ emacs --daemon -Q
> >> 2. $ emacsclient -c
> >> 3. `C-x 5 0' in the client window to exit the frame.
> >> 4. Repeat steps 2 and 3.
> >> 5. Attempt to carry out steps 2 and 3 a third time.  The message
> >> "Waiting for Emacs..." appears in the terminal, but no new frame opens.
> >>
> >> This problem is specific to the cygw32 build; it does not happen with
> >> the X11 build of emacs on Cygwin.  It also doesn't happen if the server
> >> is started via `M-x server-start' in an existing emacs.
> >
> > And it doesn't happen in emacs-24.3.  As soon as I have a chance, I'll
> > do a bisection to see when it started.
> 
> Here's the culprit:
> 
> revno: 114710
> committer: Dmitry Antipov <[email-masked]>
> branch nick: trunk
> timestamp: Fri 2013-10-18 16:57:44 +0400
> message:
>    Remove port-specific display name lists to avoid extra
>    complexity and data duplication with display info lists.
> [...]
>    * w32term.h (w32_display_name_list): Remove declaration.
>    * w32term.c (w32_display_name_list): Remove.
>    (w32_initialize_display_info, x_delete_display, syms_of_w32term):
>    Adjust users.
>    * w32fns.c (x_display_info_for_name, Fx_display_list):
>    Likewise.  Use x_display_list where appropriate.
> [...]
> 
> The attached patch applied to the emacs-24 branch reverts these changes 
> and fixes the problem.  This is presumably no the "right" fix.  Note, 
> however, that Dimity's commit introduced a "FIXME" into x_delete_display 
> in w32term.c.  Maybe that's the issue.

Thanks, but you need to be more selective: which one of these changes
is the root cause, and why?

In general, everything that is related to one_w32_display_info is
specific to the WINDOWSNT port, so perhaps the problem is that the
Cygwin-w32 build is incorrectly treated the same.  But where exactly?

Once you point out the parts that are causing this bug, they should be
modified for __CYGWIN__, but left alone for WINDOWSNT.

Thanks.