GNU bug report logs - #13007
24.3.50; emacs_backtrace.txt

Previous Next

Package: emacs;

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

Date: Tue, 27 Nov 2012 06:26:02 UTC

Severity: normal

Merged with 13012, 13020

Found in version 24.3.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: Dmitry Antipov <dmantipov <at> yandex.ru>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 13007 <at> debbugs.gnu.org, lekktu <at> gmail.com, drew.adams <at> oracle.com
Subject: bug#13007: 24.3.50; emacs_backtrace.txt
Date: Thu, 29 Nov 2012 21:23:37 +0400
On 11/29/2012 08:46 PM, Eli Zaretskii wrote:

> For starters, can you tell what triggered the assertion violation in
> Juanma's case?  IOW, how did we wind up in a situation where (AFAIU)
> the selected window displays a buffer other than the current one?

IIUC, here is the sequence:

Function set_window_buffer (W, B, ...) is called where W is selected_window
and XBUFFER (B) != current_buffer. This function temporary sets current
buffer to XBUFFER (B) to run hooks, and then restore old current_buffer [1].
So, on exit we have XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer,
and these gets _finally_ synchronized only when read_key_sequence is called with
fix_current_buffer == true [2]. If redisplay is invoked between [1] and [2],
its routines may see the condition which was eassert'ed; _finally_ means
that some redisplay routines may do the synchronization temporary and
then restore original value of current buffer (see pos_visible_p for example).

Dmitry






This bug report was last modified 9 years and 199 days ago.

Previous Next


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