Subject: RE: bug#20247: 24.4; Emacs hangs at startup in desktop mode

From: Drew Adams <[email-masked]>
Date: Fri, 20 May 2016 08:24:04 -0700 (PDT)

> I'm looking into Bug#20247 <http://bugs.gnu.org#20247>, currently listed
> as a blocker for Emacs 25. From the bug report, it appears that the
> attached patch would have prevented the bug. This patch is a change to
> Emacs behavior so I'll propose it here now, and give a heads-up on the
> Emacs-devel mailing list before installing it. Comments welcome. I don't
> care myself about the behavior one way or another (I don't use desktop
> mode) and am mainly just trying to clear out the bug backlog.

This doesn't sound right, to me.  (To be clear, it does not affect my
own use of Emacs.)

Can we not leave the default to respecting the saved display value,
but also use a `condition-case' or similar to DTRT if that display
does not exist or trying to use it raises an error in some other way?

The proposed cure sounds like killing the patient.  IIUC, the problem
reported is that the recorded display value cannot be used in this
case.  Fine.  That's not a sufficient reason for defaulting to not
using the recorded display value.

And it doesn't solve the underlying problem for a user who decides
to customize the value to use the recorded display value.

A better fix, I think, would be to do something like this:

1. Leave the default as is (not specifically important to this bug,
however, as I mentioned: changing the default does NOT solve the
problem, AFAICT).

2. If the current value says to use the recorded display then try
to do that.  If an error is raised then do not use it.

I don't have the code for #2.  No doubt Someone (TM) would need to
_actually try to debug this_, to find out just what happens when a
bad display value is tried.

The OP reported that Emacs hangs.  Debugging would need to find
out just what goes on, and trap that problem as an error - raise
an error instead of hang.  Then the code to DTRT in this case,
which is to fall back to ignoring the display value that led to
the error, should be pretty simple.

The first task is for Someone (TM) to actually try to find out
what the problem is - what happens - when the display value is
inappropriate.