GNU bug report logs - #17524
24.4.50; emacs_backtrace.txt

Previous Next

Package: emacs;

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

Date: Sun, 18 May 2014 21:52:02 UTC

Severity: important

Tags: moreinfo

Found in version 24.4.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: Michael Heerdegen <michael_heerdegen <at> web.de>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 17524 <at> debbugs.gnu.org
Subject: bug#17524: 24.4.50; emacs_backtrace.txt
Date: Fri, 23 May 2014 00:46:45 +0200
[Message part 1 (text/plain, inline)]
Hello,

Hope I did what you meant.  This is what I tried:

[xfns.c.patch (text/x-diff, inline)]
*** /tmp/ediff3444YHS	2014-05-23 00:42:39.365203371 +0200
--- /home/micha/software/emacs/src/xfns.c	2014-05-23 00:17:59.787938756 +0200
***************
*** 2694,2699 ****
--- 2694,2710 ----
      {
  #if defined GLYPH_DEBUG && defined ENABLE_CHECKING
        struct x_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
+       
+       /* If the frame's image cache refcount is still the same as our
+ 	 private shadow variable, it means we are unwinding a frame
+ 	 for which we didn't yet call init_frame_faces, where the
+ 	 refcount is incremented.  Therefore, we increment it here, so
+ 	 that free_frame_faces, called in x_free_frame_resources
+ 	 below, will not mistakenly decrement the counter that was not
+ 	 incremented yet to account for this new frame.  */
+       if (FRAME_IMAGE_CACHE (f) != NULL
+ 	  && FRAME_IMAGE_CACHE (f)->refcount == image_cache_refcount)
+ 	FRAME_IMAGE_CACHE (f)->refcount++;
  #endif
  
        x_free_frame_resources (f);
***************
*** 2702,2708 ****
  #if defined GLYPH_DEBUG && defined ENABLE_CHECKING
        /* Check that reference counts are indeed correct.  */
        eassert (dpyinfo->reference_count == dpyinfo_refcount);
!       eassert (dpyinfo->terminal->image_cache->refcount == image_cache_refcount);
  #endif
        return Qt;
      }
--- 2713,2720 ----
  #if defined GLYPH_DEBUG && defined ENABLE_CHECKING
        /* Check that reference counts are indeed correct.  */
        eassert (dpyinfo->reference_count == dpyinfo_refcount);
!       eassert (dpyinfo->terminal->image_cache != NULL
!                && dpyinfo->terminal->image_cache->refcount == image_cache_refcount);
  #endif
        return Qt;
      }
[Message part 3 (text/plain, inline)]
Was that correct?  In any case, it crashed again:

[bt (application/octet-stream, inline)]
[Message part 5 (text/plain, inline)]

Michael.

This bug report was last modified 10 years and 363 days ago.

Previous Next


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