Package: emacs;
Reported by: Michael Kleehammer <michael <at> kleehammer.com>
Date: Fri, 27 Apr 2012 20:15:02 UTC
Severity: normal
Found in version 24.0.95.1
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Eli Zaretskii <eliz <at> gnu.org> Cc: tracker <at> debbugs.gnu.org Subject: bug#11367: closed (24.0.95.1 Crash: Windows 7 using egg) Date: Sun, 29 Apr 2012 17:33:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sun, 29 Apr 2012 20:30:31 +0300 with message-id <83397m78eg.fsf <at> gnu.org> and subject line Re: bug#11367: 24.0.95.1 Crash: Windows 7 using egg has caused the debbugs.gnu.org bug report #11367, regarding 24.0.95.1 Crash: Windows 7 using egg to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 11367: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11367 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Michael Kleehammer <michael <at> kleehammer.com> To: bug-gnu-emacs <at> gnu.org Subject: 24.0.95.1 Crash: Windows 7 using egg Date: Fri, 27 Apr 2012 15:03:51 -0500[Message part 3 (text/plain, inline)]I can pretty consistently crash 24.0.95.1 (and could some previous pre-releases). Since I am on Windows, I'm not sure how to help debug this. How can I generate a useful stack trace for this? The step that crashes is to add a new file to egg (the emacs git interface). The steps to reproduce are: * Create an empty repository. * Create file1, add, and commit with our without egg. * Create 2 new files. * Run egg-status on the directory which will show 2 untracked files. * Put the cursor on the first untracked file and press 's' to stage it. After the crash, the file is staged, so the error is probably during the refresh of the status, but I am not sure. Is there anything else I can do to test this? I'm using msysgit: git version 1.7.7.msysgit.1 I am an admin on this box. The information from report-emacs-bug (which I can't use because I can't send email from it) is below. Note that the recent input is not useful since this is a new instance. In GNU Emacs 24.0.95.1 (i386-mingw-nt6.1.7601) of 2012-04-02 on MARVIN Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --with-gcc (4.6) --no-opt --enable-checking --cflags -ID:/devel/emacs/libs/libXpm-3.5.8/include -ID:/devel/emacs/libs/libXpm-3.5.8/src -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include -ID:/devel/emacs/libs/giflib-4.1.4-1/include -ID:/devel/emacs/libs/jpeg-6b-4/include -ID:/devel/emacs/libs/tiff-3.8.2-1/include -ID:/devel/emacs/libs/gnutls-3.0.9/include' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: ENU value of $XMODIFIERS: nil locale-coding-system: cp1252 default enable-multibyte-characters: t Major mode: Text Minor modes in effect: shell-dirtrack-mode: t diff-auto-refine-mode: t global-undo-tree-mode: t undo-tree-mode: t iswitchb-mode: t cua-mode: t which-function-mode: t show-paren-mode: t icomplete-mode: t global-auto-revert-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t unify-8859-on-decoding-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-x v e r s i o n <return> M-x r e p o r t - e m <tab> <return> Recent messages: Loading ~/.emacs.d/init-05-cmode...done Loading ~/.emacs.d/init-05-dired...done Loading ~/.emacs.d/init-05-python...done Loading ~/.emacs.d/init-05-sql...done Loading ~/.emacs.d/init-07-compilation...done Loading ~/.emacs.d/init-07-modes...done Loading ~/.emacs.d/init-09-bindings...done Loading c:/Users/Michael/.emacs.d/init-99-local.el (source)...done For information about GNU Emacs and the GNU system, type C-h C-a. GNU Emacs 24.0.95.1 (i386-mingw-nt6.1.7601) of 2012-04-02 on MARVIN Load-path shadows: ~/.emacs.d/custom hides c:/bin/emacs/lisp/custom ~/.emacs.d/misc/python hides c:/bin/emacs/lisp/progmodes/python Features: (shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils server windmove tramp tramp-compat auth-source eieio byte-opt bytecomp byte-compile cconv macroexp assoc gnus-util mm-util mail-prsvr password-cache shell pcomplete format-spec tramp-loaddefs ack-emacs thingatpt egg edmacro kmacro derived diff-mode easy-mmode ffap ediff-merg ediff-diff ediff-wind ediff-help ediff-util ediff-mult ediff-init ediff electric cl python-21 python dired-x easymenu dired compile comint regexp-opt ansi-color ring undo-tree uniquify iswitchb avoid cua-base browse-kill-ring+ browse-kill-ring advice help-fns advice-preload whitespace align2 align icomplete+ which-func imenu paren icomplete autorevert cus-start cus-load time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process multi-tty emacs) Michael Kleehammer[Message part 4 (text/html, inline)]
[Message part 5 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org> To: michael <at> kleehammer.com Cc: 11367-done <at> debbugs.gnu.org Subject: Re: bug#11367: 24.0.95.1 Crash: Windows 7 using egg Date: Sun, 29 Apr 2012 20:30:31 +0300> Date: Sat, 28 Apr 2012 23:44:15 +0300 > From: Eli Zaretskii <eliz <at> gnu.org> > Cc: 11367 <at> debbugs.gnu.org > > > From: Michael Kleehammer <michael <at> kleehammer.com> > > Date: Sat, 28 Apr 2012 14:27:00 -0500 > > > > > I see I will need to install msysgit and debug this locally. Last > > > request: > > > > > > (gdb) p (g-2)->object > > > > $13 = 60228101 > > > > > (gdb) xtype > > > > Lisp_Vectorlike > > PVEC_BUFFER > > > > > (gdb) p it3.object > > > > $14 = 84618657 > > > > > (gdb) xtype > > > > Lisp_String > > Thanks. I've reproduced the problem, and will debug it (probably > tomorrow; gray hair says it's unwise to try fixing redisplay after > 11PM ;-). I think I fixed this (revision 107922 on the emacs-24 branch). The diffs are below, in case you want (and are able) to try them now. Thanks. === modified file 'src/ChangeLog' --- src/ChangeLog 2012-04-24 02:58:26 +0000 +++ src/ChangeLog 2012-04-29 17:19:08 +0000 @@ -1,3 +1,10 @@ +2012-04-29 Eli Zaretskii <eliz <at> gnu.org> + + * xdisp.c (pos_visible_p): If already at a newline from the + display string before the 'while' loop, don't walk back the glyphs + from it3.glyph_row. Solves assertion violation when the display + string begins with a newline (egg.el). (Bug#11367) + 2012-04-24 Chong Yidong <cyd <at> gnu.org> * xselect.c (x_convert_selection): Initialize a pointer (Bug#11315). === modified file 'src/xdisp.c' --- src/xdisp.c 2012-04-23 16:22:23 +0000 +++ src/xdisp.c 2012-04-29 17:19:08 +0000 @@ -1375,6 +1375,7 @@ pos_visible_p (struct window *w, EMACS_I Lisp_Object startpos, endpos; EMACS_INT start, end; struct it it3; + int it3_moved; /* Find the first and the last buffer positions covered by the display string. */ @@ -1431,6 +1432,15 @@ pos_visible_p (struct window *w, EMACS_I begins. */ start_display (&it3, w, top); move_it_to (&it3, -1, 0, top_y, -1, MOVE_TO_X | MOVE_TO_Y); + /* If it3_moved stays zero after the 'while' loop + below, that means we already were at a newline + before the loop (e.g., the display string begins + with a newline), so we don't need to (and cannot) + inspect the glyphs of it3.glyph_row, because + PRODUCE_GLYPHS will not produce anything for a + newline, and thus it3.glyph_row stays at its + stale content it got at top of the window. */ + it3_moved = 0; /* Finally, advance the iterator until we hit the first display element whose character position is CHARPOS, or until the first newline from the @@ -1442,6 +1452,7 @@ pos_visible_p (struct window *w, EMACS_I if (IT_CHARPOS (it3) == charpos || ITERATOR_AT_END_OF_LINE_P (&it3)) break; + it3_moved = 1; set_iterator_to_next (&it3, 0); } top_x = it3.current_x - it3.pixel_width; @@ -1452,7 +1463,8 @@ pos_visible_p (struct window *w, EMACS_I display string, move back over the glyphs produced from the string, until we find the rightmost glyph not from the string. */ - if (IT_CHARPOS (it3) != charpos && EQ (it3.object, string)) + if (it3_moved + && IT_CHARPOS (it3) != charpos && EQ (it3.object, string)) { struct glyph *g = it3.glyph_row->glyphs[TEXT_AREA] + it3.glyph_row->used[TEXT_AREA];
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.