GNU bug report logs - #34256
27.0.50; Crash on draw_glyphs()

Previous Next

Package: emacs;

Reported by: Kaushal Modi <kaushal.modi <at> gmail.com>

Date: Wed, 30 Jan 2019 14:32:01 UTC

Severity: normal

Found in version 27.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Kaushal Modi <kaushal.modi <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 34256 <at> debbugs.gnu.org
Subject: bug#34256: 27.0.50; Crash on draw_glyphs()
Date: Mon, 4 Feb 2019 11:03:37 -0500
[Message part 1 (text/plain, inline)]
Hi Eli,

On Fri, Feb 1, 2019 at 3:41 AM Eli Zaretskii <eliz <at> gnu.org> wrote:

> > "redisplay_internal (C function)" (0x0)
>
> Thanks, I think I understand what happened here.  Does the patch below
> fix the problem?  If it doesn't, please repeat the procedure with the
> patched Emacs.
>
> diff --git a/src/frame.h b/src/frame.h
> index ab3efdf..e0dab51 100644
> --- a/src/frame.h
> +++ b/src/frame.h
> @@ -413,6 +413,10 @@ struct frame
>    /* Non-zero if this frame's faces need to be recomputed.  */
>    bool_bf face_change : 1;
>
> +  /* Non-zero if this frame's image cache cannot be freed because the
> +     frame is in the process of being redisplayed.  */
> +  bool_bf inhibit_clear_image_cache : 1;
> +
>    /* Bitfield area ends here.  */
>
>    /* This frame's change stamp, set the last time window change
> diff --git a/src/image.c b/src/image.c
> index 2014860..342b647 100644
> --- a/src/image.c
> +++ b/src/image.c
> @@ -1554,7 +1554,7 @@ clear_image_cache (struct frame *f, Lisp_Object
> filter)
>  {
>    struct image_cache *c = FRAME_IMAGE_CACHE (f);
>
> -  if (c)
> +  if (c && !f->inhibit_clear_image_cache)
>      {
>        ptrdiff_t i, nfreed = 0;
>
> diff --git a/src/xdisp.c b/src/xdisp.c
> index ec8dd86..b43777a 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -14440,7 +14440,17 @@ redisplay_internal (void)
>                 FRAME_TERMINAL (f)->condemn_scroll_bars_hook (f);
>
>               if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
> -               redisplay_windows (FRAME_ROOT_WINDOW (f));
> +               {


Thanks for the patch!

I couldn't apply the patch, so had to apply it manually.

But it works!

I am looking forward to understand in plain terms what this fix did.


Thank you.
[Message part 2 (text/html, inline)]

This bug report was last modified 6 years and 102 days ago.

Previous Next


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