|
From: | Jason Rumney |
Subject: | bug#891: 23.0.60; Emacs aborts after buffer-swap-text |
Date: | Fri, 05 Sep 2008 07:06:57 +0800 |
User-agent: | Thunderbird 2.0.0.16 (Windows/20080708) |
merge 891 716 reassign 716 emacs reassign 805 emacs thanks Stephen Berman wrote:
1. emacs -Q 2. Load the library tabbar.el, available from http://emhacks.cvs.sourceforge.net/emhacks/emhacks/tabbar.el?revision=1.69&view=markup 3. M-x tabbar-mode 4. M-: (buffer-swap-text (get-buffer "*Messages*")) 5. C-c C-right (tabbar-forward) ==> Emacs aborts
This seems to be the same bug as has been happening with tar-mode on Windows since tar-mode was changed to use buffer-swap-text. So the underlying bug is not platform specific after all. Do you also get crashes when opening tar files in Emacs?
The full backtrace is below. According to the Lisp backtrace, the abort occurs during or after switch-to-buffer. Yet typing C-x b after step 4 above does not make Emacs abort. Moreover, when I directly call any of the tabbar.el functions listed in the backtrace and step through them with edebug, this also fails to make Emacs abort. Yet the above recipeis reliably reproducible.(Since the abort occurs in unshow_buffer, my guess, based on a comment at line 8314 of xdisp.c, is that switch-to-buffer needs to have something like the code in with_echo_area_buffer that changes w->pointm. I guess this would go after the call to Fset_buffer in switch-to-buffer, but I don't know how to write the code.)
Can this be done in Fbuffer_swap_text, rather than expecting other code to clean up after the fact? Some of the crashes I've seen while debugging this have not involved switch-to-buffer, so there are probably many other locations where this clean up code needs to go if it can't be done in Fbuffer_swap_text for some reason.
[Prev in Thread] | Current Thread | [Next in Thread] |