Subject: bug#43886: 28.0.50; daemon segfaults when loading theme as second emacsclient connects

From: Eli Zaretskii <[email-masked]>
Date: Sat, 10 Oct 2020 10:21:44 +0300

> From: Sam Brightman <[email-masked]>
> Date: Sat, 10 Oct 2020 08:09:56 +0100
> Cc: [email-masked]
> 
> That patch indeed prevents a crash but the second client exiting seems
> a bit strong/unhelpful - how would you suggest changing the theme more
> appropriately?

Check for the theme being already enabled?  Introduce a variable that
is set non-nil when the theme is first enabled?

> However - even removing that hook - it is now impossible to
> load a theme when a client is suspended (which is basically always for
> me - I'll have half a dozen or more clients open at any time, one of
> them will be suspended).

It is indeed impossible/unsafe to load a theme when some frame is
suspended, because suspending a frame makes it unable to handle the
change of the faces.  I don't see any way around that, because
skipping such a frame when a theme is enabled would mean that frame's
faces are not recalculated to obey the theme, which is a subtler and
nastier bug, IMO.

You will have to unsuspend the frames when you load a theme.