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

From: Ken Brown <[email-masked]>
Date: Mon, 27 Feb 2017 15:19:21 -0500

On 2/27/2017 2:56 PM, Richard Copley wrote:
> On 27 February 2017 at 19:46, Richard Copley <[email-masked]> wrote:
>> On 27 February 2017 at 19:39, Ken Brown <[email-masked]> wrote:
>>> On 2/27/2017 2:30 PM, Richard Copley wrote:
>>>>
>>>> If you want to block or delay a shutdown in recent
>>>> Windows versions you need to use
>>>> ShutdownBlockReasonCreate (it's unfortunate, but
>>>> we lazy programmers proved we couldn't be trusted,
>>>> collectively, to handle WM_QUERY_ENDSESSION
>>>> correctly, so the arms race had to be escalated in
>>>> order to allow users to shut down their computers
>>>> reliably).
>>>
>>>
>>> In spite of the careless mistake in my patch, you could still test Eli's
>>> suggestion of using SendMessageTimeout instead of SendMessage, at least in
>>> my_show_window.
>>
>> I can't, not really. Remember, I don't have a recipe.
>> I'll never be able to observe whether it's working or not.
>> (Am I missing something?)
>>
>>>> Ken, what was the original change intended to guard
>>>> against? What would people be doing with Emacs that
>>>> can't simply be abandoned? Did you have a particular
>>>> example in mind?
>>>
>>>
>>> Bug#23483.
>>
>> That's not a real issue, in my opinion. It's already covered,
>> by autosave.

No, it isn't covered.  We don't know that the auto-save files are 
up-to-date at the time of shutdown.

> There are programs like the OP in #23483 described, which
> interrupt a shutdown to ask the user whether to save. Some of
> them even call themselves "programmers' text editors" (shudder).
> Emacs autosave is and always has been a better solution.

> You can shoot yourself in the foot by making small but important
> changes and then immediately shutting down Windows. But you'd
> almost have to be doing it on purpose.

I think it's reasonable for Emacs to attempt an orderly shutdown when 
the system is being shutdown, rather than just allowing the system to 
kill it.  You've found a bug in my implementation of this, and I'm happy 
to try to fix it.

Ken