GNU bug report logs -
#51577
27.2; Regression: reproducible hang with face functions
Previous Next
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
View this message in rfc822 format
> 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.