GNU bug report logs - #51577
27.2; Regression: reproducible hang with face functions

Previous Next

Package: emacs;

Reported by: Drew Adams <drew.adams <at> oracle.com>

Date: Wed, 3 Nov 2021 02:45:02 UTC

Severity: normal

Tags: moreinfo, notabug, wontfix

Found in version 27.2

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #30 received at 51577 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 51577 <at> debbugs.gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#51577: 27.2; Regression: reproducible hang with face functions
Date: Thu, 04 Nov 2021 21:01:59 +0200
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Cc: Drew Adams <drew.adams <at> oracle.com>,  51577 <at> debbugs.gnu.org
> Date: Thu, 04 Nov 2021 19:15:23 +0100
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> > And how does your code differ from this:
> >
> >   (while t nil)
> >
> > Or would you consider it a bug that Emacs doesn't detect the infinite
> > while-loop, either?
> 
> We do try to detect loops in other situations (to avoid hangs).  This is
> in redisplay code, though (I think?), so perhaps it would be
> prohibitively expensive to try to detect loops here?

First, since this is triggered by redisplay, any errors must be
"silent": we log an error message in *Messages* and otherwise silently
do nothing.  Which in this case would mean the problematic face will
not be applied.  Not sure this is better than inflooping.

As for detecting loops: it could be tricky.  It is easy enough to
detect simple loops such as the one in this case, where a face
inherits directly from itself, and the value of the :inherit attribute
is the symbol of a face.  But inheritance loops could be less simple:
a face could inherit from itself indirectly, and the value of the
attribute could be a list, not a named face.  Detecting loops in those
cases would require recording face specs/names we already saw in some
list, and each time we get an :inherit attribute, check if its value
is already in the list.  Is that worth our while, if the result will
be a silent error message in *Messages*?




This bug report was last modified 3 years and 256 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.