GNU bug report logs -
#77961
31.0.50; Rendering HTML email is very slow since commit #eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5
Previous Next
Reported by: Iñigo Serna <inigoserna <at> gmx.com>
Date: Mon, 21 Apr 2025 15:58:02 UTC
Severity: normal
Found in version 31.0.50
Fixed in version 31.1
Done: Gerd Möllmann <gerd.moellmann <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Date: Mon, 21 Apr 2025 10:34:01 +0200
>> From: Iñigo Serna via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> Hi,
>>
>> Since a few weeks ago I'm noting that HTML emails rendering is
>> very slow,
>> f.e. from 1 second to 5-6 seconds.
>>
>> I compile Emacs with PGTK and Native Compilation every week on
>> GNU/Linux Fedora 41/42, and use mu4e to read emails.
>> More info of my compilation flags below.
>>
>>
>> Today I got some free time and proceed to profile the issue, it
>> showed
>> ~10x more time in function 'shr-render-td-1' vs emacs v30.1.
>>
>> As this function is not changed since time ago I've bisected the
>> problem,
>> which showed that the commit
>> #eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5
>> was the culprit:
>>
>> [machine] /h/_/l/d/emacs.bug > git bisect good
>> eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5 is the first bad
>> commit
>> commit eab14d68b2e72b9a6b8b0cc67c9667c2bfbed4f5
>> Author: Gerd Möllmann <gerd.moellmann <at> gmail.com>
>> Make sure to initialize glyph::frame to NULL (bug#77039)
>> * src/dispnew.c (adjust_glyph_matrix): Clear glyph
>> memory when
>> enlarging window-system window glyph matrices.
>> src/dispnew.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>>
>> If I comment out the two lines added in this commit, problem
>> disappears.
>>
>> I've read bug #77039 comment but it's way off my understanding.
>>
>>
>> But looking deeper into the problem, it is related with my own
>> theme,
>> which hides mode-line of non-active windows by setting its height
>> to a small value:
>>
>> (mode-line-inactive ((((type tty)) (:background "#222222"
>> :foreground
>> ,elms-fg :height 0.1))
>> (((type graphic)) (:background ,elms-bg
>> :foreground ,elms-fg :height 0.1))))
>>
>>
>> If remove that height attribute (or set it to a bigger value such
>> as 0.6) the issue disappears.
>
> Gerd, any comments or suggestions?
Please try if this helps:
[xxx.diff (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]
The hypothesis behind this would be: The rendering apparently leads to
increasing glyph matrix sizes; maybe it does something with fonts, no
idea. The memset clears all glyphs which I can only imagine to play a
role when we somewhere in the display code compare desired and current
glyphs, and that fails with the memset and didn't fail without it. Where
that might be I have no idea.
Anyway, with the loop in my diff it should be as before, and
glyph::frame is unused in the window-system case, so...
This bug report was last modified 27 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.