Subject: Re: bug#25875: 26.0.50; Hang logging out of MS-Windows

From: Eli Zaretskii <[email-masked]>
Date: Mon, 27 Feb 2017 17:36:23 +0200

> From: Richard Copley <[email-masked]>
> Date: Mon, 27 Feb 2017 08:14:22 +0000
> Cc: Eli Zaretskii <[email-masked]>, [email-masked]
> 
> > Here's a quick and dirty attempt.  If I haven't made a mistake, it replaces
> > every relevant call to SendMessage by a call to SendMessageTimeout with a
> > 100ms timeout.
> >
> > --- a/src/w32term.c
> > +++ b/src/w32term.c
> > @@ -537,6 +537,15 @@ x_update_begin (struct frame *f)
> >  }
> >
> >
> > +#undef SendMessage
> > +#define SendMessage DebugSendMessage
> > +
> > +static LRESULT WINAPI
> > +DebugSendMessage (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
> > +{
> > +  return SendMessageTimeoutA (hWnd, Msg, wParam, lParam, 0, 100, NULL);
> > +}
> > +
> >  /* Start update of window W.  */
> >
> >  static void
> >
> > Ken
> 
> Sorry Ken, I can't sabotage myself like that, I have work to do.

This could be a misunderstanding: the above change is not supposed to
sabotage anything, it's supposed to be a 100% compatible change for
the current behavior when all threads are running, and also provide a
"fire escape" when the addressee of the message is for some reason
stuck, as we think happens in your scenario.

If you are unwilling to make such a sweeping change, could you at
least replace the call SendMessage in my_show_window with
SendMessageTimeoutA, using the above patch as a template?

TIA