From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: gerd.moellmann@t-online.de (Gerd Moellmann) Newsgroups: gmane.emacs.devel Subject: Re: [spiegel@gnu.org: Re: [Fwd: vc-annotate causes Emacs to die]] Date: 26 Aug 2002 22:25:08 +0200 Sender: emacs-devel-admin@gnu.org Message-ID: <86u1lhe5az.fsf@gerd.free-bsd.org> References: <200208260036.g7Q0aYe12400@wijiji.santafe.edu> <86n0r9vj6i.fsf@gerd.free-bsd.org> <87znv91n8y.fsf@wesley.springies.com> NNTP-Posting-Host: localhost.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: main.gmane.org 1030393566 9322 127.0.0.1 (26 Aug 2002 20:26:06 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Mon, 26 Aug 2002 20:26:06 +0000 (UTC) Cc: rms@gnu.org, emacs-devel@gnu.org, spiegel@gnu.org Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17jQR2-0002Q5-00 for ; Mon, 26 Aug 2002 22:26:04 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 17jQw1-0005Nf-00 for ; Mon, 26 Aug 2002 22:58:05 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17jQSH-0000yt-00; Mon, 26 Aug 2002 16:27:21 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17jQQm-0000tv-00 for emacs-devel@gnu.org; Mon, 26 Aug 2002 16:25:48 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17jQQj-0000tc-00 for emacs-devel@gnu.org; Mon, 26 Aug 2002 16:25:47 -0400 Original-Received: from mailout05.sul.t-online.com ([194.25.134.82]) by monty-python.gnu.org with esmtp (Exim 4.10) id 17jQQe-0000si-00; Mon, 26 Aug 2002 16:25:40 -0400 Original-Received: from fwd08.sul.t-online.de by mailout05.sul.t-online.com with smtp id 17jQQZ-0000ds-0B; Mon, 26 Aug 2002 22:25:35 +0200 Original-Received: from gerd.free-bsd.org (520015515780-0001@[217.230.105.241]) by fwd08.sul.t-online.com with esmtp id 17jQQX-0ApENkC; Mon, 26 Aug 2002 22:25:33 +0200 Original-Received: from gerd.free-bsd.org (localhost [127.0.0.1]) by gerd.free-bsd.org (8.12.5/8.12.5) with ESMTP id g7QKPVss002848; Mon, 26 Aug 2002 22:25:31 +0200 (CEST) (envelope-from gerd.moellmann@t-online.de) Original-Received: (from gerd@localhost) by gerd.free-bsd.org (8.12.5/8.12.5/Submit) id g7QKP8RA002845; Mon, 26 Aug 2002 22:25:08 +0200 (CEST) X-Authentication-Warning: gerd.free-bsd.org: gerd set sender to gerd.moellmann@t-online.de using -f Original-To: Alan Shutko In-Reply-To: <87znv91n8y.fsf@wesley.springies.com> Original-Lines: 60 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 X-Sender: 520015515780-0001@t-dialin.net Errors-To: emacs-devel-admin@gnu.org X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Emacs development discussions. List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.emacs.devel:6930 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:6930 Alan Shutko writes: > gerd.moellmann@t-online.de (Gerd Moellmann) writes: > > > What's the recipe to reproduce this? And with which version of Emacs? > > Here's a recipe. Current CVS Emacs, in the Emacs CVS directory. > > Script started on Mon Aug 26 14:32:50 2002 > [14:32:50] wesley:~/Projects/EmacsBugs/emacs $ pwd > /home/ats/Projects/EmacsBugs/emacs > [14:33:06] wesley:~/Projects/EmacsBugs/emacs $ emacs -q --no-site-file ChangeLog > [In Emacs, hit C-x v g ] Thanks, Alan & Andre. I can reproduce this with Alan's recipe. Until I find time to debug this further, it might be worth using this quich workaround: Index: vc.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/vc.el,v retrieving revision 1.335 diff -c -u -r1.335 vc.el cvs server: conflicting specifications of output style --- vc.el 22 Jul 2002 18:52:04 -0000 1.335 +++ vc.el 26 Aug 2002 20:07:37 -0000 @@ -3219,16 +3219,10 @@ (setq difference (vc-annotate-difference vc-annotate-offset))) (let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map) (cons nil vc-annotate-very-old-color))) - ;; substring from index 1 to remove any leading `#' in the name - (face-name (concat "vc-annotate-face-" (substring (cdr color) 1))) ;; Make the face if not done. - (face (or (intern-soft face-name) - (let ((tmp-face (make-face (intern face-name)))) - (set-face-foreground tmp-face (cdr color)) - (if vc-annotate-background - (set-face-background tmp-face - vc-annotate-background)) - tmp-face))) ; Return the face + (face (nconc (list :foreground (cdr color)) + (when vc-annotate-background + (list :background vc-annotate-background)))) (point (point)) overlay) (forward-line 1) (This uses anonymous faces instead of constructing new named faces. (My personal impression is that using anonymous faces might be preferrable here, anyway.)) The original problem is that one of the set-face-{back,fore}ground calls apparently leads to the face cache being cleared, which leaves redisplay with a nonexistent face referenced from a glyph. When compiled with -DGLYPH_DEBUG, this results in an assertion violation. Under which exact circumstances this face cache clearing happens is not yet clear to me. I think this cannot happen during redisplay, since that is explicitly prevented by setting a flag. Hm.