* emacs-21.1.94 crash in gnus on Windows @ 2010-03-15 23:40 Andy Moreton 2010-03-16 10:33 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Andy Moreton @ 2010-03-15 23:40 UTC (permalink / raw) To: emacs-devel Hi, I've built 21.1.94 pretest on WinXP SP3 with MinGW gcc, and I'm seeing a repeatable crash in gnus. Running emacs under gdb I managed to capture a crash, with the following results: Program received signal SIGSEGV, Segmentation fault. 0x0102ef33 in pos_visible_p (w=0x2fa6e00, charpos=0x22fa, x=0x82eef8, y=0x82eef4, rtop=0x82ef08, rbot=0x82ef04, rowh=0x82ef00, vpos=0x82eefc) at xdisp.c:1397 1397 && (!BUFFERP (glyph->object) (gdb) warning: frame 02FA6400 (emacs@aji *Group*) obscured warning: obscured frame 02FA6400 (emacs@aji *Group*) found to be visible bt #0 0x0102ef33 in pos_visible_p (w=0x2fa6e00, charpos=0x22fa, x=0x82eef8, y=0x82eef4, rtop=0x82ef08, rbot=0x82ef04, rowh=0x82ef00, vpos=0x82eefc) at xdisp.c:1397 #1 0x010f62d8 in Fpos_visible_in_window_p (pos=0x8be8, window=0x2fa6e05, partially=0x2ba7802) at window.c:357 #2 0x010228b1 in Ffuncall (nargs=0x3, args=0x82f010) at eval.c:3030 #3 0x01113471 in Fbyte_code (bytestr=0x3904201, vector=0x3aacc05, maxdepth=0x10) at bytecode.c:680 #4 0x01022fae in funcall_lambda (fun=0x3ab08c5, nargs=0x0, arg_vector=0x82f2c8) at eval.c:3211 #5 0x01022a86 in Ffuncall (nargs=0x1, args=0x82f2c4) at eval.c:3070 #6 0x01113471 in Fbyte_code (bytestr=0x39182e1, vector=0x3aac405, maxdepth=0x10) at bytecode.c:680 #7 0x01022fae in funcall_lambda (fun=0x3ab6125, nargs=0x1, arg_vector=0x82f574) at eval.c:3211 #8 0x01022a86 in Ffuncall (nargs=0x2, args=0x82f570) at eval.c:3070 #9 0x01113471 in Fbyte_code (bytestr=0x3ab7831, vector=0x3abad05, maxdepth=0x14) at bytecode.c:680 #10 0x01022fae in funcall_lambda (fun=0x3abbae5, nargs=0x1, arg_vector=0x82f884) at eval.c:3211 #11 0x01022a86 in Ffuncall (nargs=0x2, args=0x82f880) at eval.c:3070 #12 0x01117b8a in Fcall_interactively (function=0x3a6f6d2, record_flag=0x2ba7802, keys=0x2bacb05) at callint.c:869 #13 0x010228b1 in Ffuncall (nargs=0x4, args=0x82fb50) at eval.c:3030 #14 0x0102244f in call3 (fn=0x2bcc5ca, arg1=0x3a6f6d2, arg2=0x2ba7802, arg3=0x2ba7802) at eval.c:2850 #15 0x01014d20 in Fcommand_execute (cmd=0x3a6f6d2, record_flag=0x2ba7802, keys=0x2ba7802, special=0x2ba7802) at keyboard.c:10507 #16 0x010076b0 in command_loop_1 () at keyboard.c:1904 #17 0x01020549 in internal_condition_case (bfun=0x100625a <command_loop_1>, handlers=0x2bb54da, hfun=0x1005c3b <cmd_error>) at eval.c:1490 #18 0x01005fb3 in command_loop_2 () at keyboard.c:1360 #19 0x0102009a in internal_catch (tag=0x2bb51b2, func=0x1005f8e <command_loop_2>, arg=0x2ba7802) at eval.c:1226 #20 0x01005f6c in command_loop () at keyboard.c:1339 #21 0x0100585e in recursive_edit_1 () at keyboard.c:954 #22 0x010059c7 in Frecursive_edit () at keyboard.c:1016 #23 0x010028c5 in main (argc=0x1, argv=0xa44418) at emacs.c:1833 Lisp Backtrace: "pos-visible-in-window-p" (0x82f014) "gnus-summary-recenter" (0x82f2c8) "gnus-summary-display-article" (0x82f574) "gnus-summary-next-page" (0x82f884) "call-interactively" (0x82fb54) (gdb) Please let me know what other info/testing is needed to help fix this. AndyM ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-15 23:40 emacs-21.1.94 crash in gnus on Windows Andy Moreton @ 2010-03-16 10:33 ` Eli Zaretskii 2010-03-16 12:53 ` Andy Moreton 0 siblings, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-16 10:33 UTC (permalink / raw) To: Andy Moreton; +Cc: emacs-devel > From: Andy Moreton <andrewjmoreton@gmail.com> > Date: Mon, 15 Mar 2010 23:40:27 +0000 > > I've built 21.1.94 pretest on WinXP SP3 with MinGW gcc, and I'm seeing > a repeatable crash in gnus. Running emacs under gdb I managed to capture > a crash, with the following results: > > Program received signal SIGSEGV, Segmentation fault. > 0x0102ef33 in pos_visible_p (w=0x2fa6e00, charpos=0x22fa, x=0x82eef8, y=0x82eef4, rtop=0x82ef08, > rbot=0x82ef04, rowh=0x82ef00, vpos=0x82eefc) at xdisp.c:1397 > 1397 && (!BUFFERP (glyph->object) Thank you for your report. > Please let me know what other info/testing is needed to help fix this. First, please file a bug report with this information. Second, please type "bt full" and post the results. Third, if this is an optimized build, please build Emacs without optimizations, and when the crash happens again, please type "bt full" and send the results. Finally, could you tell what kind of text is at character position (in this case, 0x22fa) with which pos_visible_p is called when it crashes? Are there any unusual text properties there, like invisible text, ellipsis (which stands for hidden text), or something similar? Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 10:33 ` Eli Zaretskii @ 2010-03-16 12:53 ` Andy Moreton 2010-03-16 15:26 ` David Kastrup 2010-03-16 19:47 ` Eli Zaretskii 0 siblings, 2 replies; 20+ messages in thread From: Andy Moreton @ 2010-03-16 12:53 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel On 16/03/2010 10:33, Eli Zaretskii wrote: >> From: Andy Moreton<andrewjmoreton@gmail.com> >> Date: Mon, 15 Mar 2010 23:40:27 +0000 >> >> I've built 21.1.94 pretest on WinXP SP3 with MinGW gcc, and I'm seeing >> a repeatable crash in gnus. Running emacs under gdb I managed to capture >> a crash, with the following results: >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x0102ef33 in pos_visible_p (w=0x2fa6e00, charpos=0x22fa, x=0x82eef8, y=0x82eef4, rtop=0x82ef08, >> rbot=0x82ef04, rowh=0x82ef00, vpos=0x82eefc) at xdisp.c:1397 >> 1397&& (!BUFFERP (glyph->object) > > Thank you for your report. > >> Please let me know what other info/testing is needed to help fix this. > > First, please file a bug report with this information. I've sent a bug report (from another machine after recreating the crash). > Second, please type "bt full" and post the results. > > Third, if this is an optimized build, please build Emacs without > optimizations, and when the crash happens again, please type "bt full" > and send the results. > > Finally, could you tell what kind of text is at character position > (in this case, 0x22fa) with which pos_visible_p is called when it > crashes? Are there any unusual text properties there, like invisible > text, ellipsis (which stands for hidden text), or something similar? emacs was configured on both machines with "--no-opt". I've added details of the crash in the bug report below. Program received signal SIGSEGV, Segmentation fault. 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, y=0x82f0c0, rtop=0x82f0d8, rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 1396 for (; glyph < end (gdb) warning: reader_thread.SetEvent failed with 6 for fd -1 warning: reader_thread.SetEvent failed with 6 for fd -1 warning: reader_thread.SetEvent failed with 6 for fd -1 warning: reader_thread.SetEvent failed with 6 for fd -1 warning: reader_thread.SetEvent failed with 6 for fd -1 bt full Reading in symbols for window.c...done. Reading in symbols for eval.c...done. Reading in symbols for bytecode.c...done. Reading in symbols for callint.c...done. Reading in symbols for keyboard.c...done. #0 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, y=0x82f0c0, rtop=0x82f0d8, rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 row = 0x380a098 glyph = 0x38d0020 end = 0x38d0ea0 x = 0x0 window = 0x307c805 prop = 0x33fb62a top_y = 0x62 it_method = GET_FROM_BUFFER window_top_y = 0xe top_x = 0x333 bottom_y = 0x70 it = { window = 0x307c805, w = 0x307c800, f = 0x307c000, method = GET_FROM_BUFFER, stop_charpos = 0x719, end_charpos = 0x719, s = 0x0, string_nchars = 0x0, region_beg_charpos = 0xffffffff, region_end_charpos = 0xffffffff, redisplay_end_trigger_charpos = 0x0, multibyte_p = 0x1, header_line_p = 0x1, string_from_display_prop_p = 0x0, ellipsis_p = 0x0, avoid_cursor_p = 0x0, dp = 0x48b4e00, dpvec = 0x0, dpend = 0x13da13c, dpvec_char_len = 0x0, dpvec_face_id = 0xffffffff, saved_face_id = 0x0, ctl_chars = {0x0 <repeats 16 times>}, start = { pos = { charpos = 0x1, bytepos = 0x1 }, overlay_string_index = 0xffffffff, string_pos = { charpos = 0xffffffff, bytepos = 0xffffffff }, dpvec_index = 0xffffffff }, current = { pos = { charpos = 0x719, bytepos = 0x759 }, overlay_string_index = 0xffffffff, string_pos = { charpos = 0xffffffff, bytepos = 0xffffffff }, dpvec_index = 0xffffffff }, n_overlay_strings = 0x0, overlay_strings = {0x0 <repeats 16 times>}, string_overlays = {0x0 <repeats 16 times>}, string = 0x2b36802, from_overlay = 0x0, stack = {{ string = 0x0, string_nchars = 0x0, end_charpos = 0x0, stop_charpos = 0x0, cmp_it = { stop_pos = 0x0, id = 0x0, ch = 0x0, lookback = 0x0, nglyphs = 0x0, nchars = 0x0, nbytes = 0x0, from = 0x0, to = 0x0, width = 0x0 }, face_id = 0x0, u = { image = { object = 0x0, slice = { x = 0x0, y = 0x0, width = 0x0, height = 0x0 }, image_id = 0x0 }, comp = { object = 0x0 }, stretch = { object = 0x0 } }, position = { charpos = 0x0, bytepos = 0x0 }, current = { pos = { charpos = 0x0, bytepos = 0x0 }, overlay_string_index = 0x0, string_pos = { charpos = 0x0, bytepos = 0x0 }, dpvec_index = 0x0 }, from_overlay = 0x0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, multibyte_p = 0x0, string_from_display_prop_p = 0x0, display_ellipsis_p = 0x0, avoid_cursor_p = 0x0, line_wrap = TRUNCATE, voffset = 0x0, space_width = 0x0, font_height = 0x0 }, { string = 0x0, string_nchars = 0x0, end_charpos = 0x0, stop_charpos = 0x0, cmp_it = { stop_pos = 0x0, id = 0x0, ch = 0x0, lookback = 0x0, nglyphs = 0x0, nchars = 0x0, nbytes = 0x0, from = 0x0, to = 0x0, width = 0x0 }, face_id = 0x0, u = { image = { object = 0x0, slice = { x = 0x0, y = 0x0, width = 0x0, height = 0x0 }, image_id = 0x0 }, comp = { object = 0x0 }, stretch = { object = 0x0 } }, position = { charpos = 0x0, bytepos = 0x0 }, current = { pos = { charpos = 0x0, bytepos = 0x0 }, overlay_string_index = 0x0, string_pos = { charpos = 0x0, bytepos = 0x0 }, dpvec_index = 0x0 }, from_overlay = 0x0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, multibyte_p = 0x0, string_from_display_prop_p = 0x0, display_ellipsis_p = 0x0, avoid_cursor_p = 0x0, line_wrap = TRUNCATE, voffset = 0x0, space_width = 0x0, font_height = 0x0 }, { string = 0x0, string_nchars = 0x0, end_charpos = 0x0, stop_charpos = 0x0, cmp_it = { stop_pos = 0x0, id = 0x0, ch = 0x0, lookback = 0x0, nglyphs = 0x0, nchars = 0x0, nbytes = 0x0, from = 0x0, to = 0x0, width = 0x0 }, face_id = 0x0, u = { image = { object = 0x0, slice = { x = 0x0, y = 0x0, width = 0x0, height = 0x0 }, image_id = 0x0 }, comp = { object = 0x0 }, stretch = { object = 0x0 } }, position = { charpos = 0x0, bytepos = 0x0 }, current = { pos = { charpos = 0x0, bytepos = 0x0 }, overlay_string_index = 0x0, string_pos = { charpos = 0x0, bytepos = 0x0 }, dpvec_index = 0x0 }, from_overlay = 0x0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, multibyte_p = 0x0, string_from_display_prop_p = 0x0, display_ellipsis_p = 0x0, avoid_cursor_p = 0x0, line_wrap = TRUNCATE, voffset = 0x0, space_width = 0x0, font_height = 0x0 }, { string = 0x0, string_nchars = 0x0, end_charpos = 0x0, stop_charpos = 0x0, cmp_it = { stop_pos = 0x0, id = 0x0, ch = 0x0, lookback = 0x0, nglyphs = 0x0, nchars = 0x0, nbytes = 0x0, from = 0x0, to = 0x0, width = 0x0 }, face_id = 0x0, u = { image = { object = 0x0, slice = { x = 0x0, y = 0x0, width = 0x0, height = 0x0 }, image_id = 0x0 }, comp = { object = 0x0 }, stretch = { object = 0x0 } }, position = { charpos = 0x0, bytepos = 0x0 }, current = { pos = { charpos = 0x0, bytepos = 0x0 }, overlay_string_index = 0x0, string_pos = { charpos = 0x0, bytepos = 0x0 }, dpvec_index = 0x0 }, from_overlay = 0x0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, multibyte_p = 0x0, string_from_display_prop_p = 0x0, display_ellipsis_p = 0x0, avoid_cursor_p = 0x0, line_wrap = TRUNCATE, voffset = 0x0, space_width = 0x0, font_height = 0x0 }}, sp = 0x0, selective = 0x0, what = IT_CHARACTER, face_id = 0x0, selective_display_ellipsis_p = 0x0, ctl_arrow_p = 0x1, face_box_p = 0x0, start_of_box_run_p = 0x0, end_of_box_run_p = 0x0, overlay_strings_at_end_processed_p = 0x0, ignore_overlay_strings_at_pos_p = 0x0, glyph_not_available_p = 0x0, starts_in_middle_of_char_p = 0x0, face_before_selective_p = 0x0, constrain_row_ascent_descent_p = 0x0, line_wrap = TRUNCATE, base_face_id = 0x0, c = 0xa, len = 0x1, cmp_it = { stop_pos = 0x719, id = 0xffffffff, ch = 0xfffffffe, lookback = 0x0, nglyphs = 0x0, nchars = 0x0, nbytes = 0x0, from = 0x0, to = 0x0, width = 0x0 }, char_to_display = 0x20, image_id = 0x0, slice = { x = 0x2b36802, y = 0x2b36802, width = 0x2b36802, height = 0x2b36802 }, space_width = 0x2b36802, voffset = 0x0, tab_width = 0x8, font_height = 0x2b36802, object = 0x48b4005, position = { charpos = 0x718, bytepos = 0x758 }, truncation_pixel_width = 0x0, continuation_pixel_width = 0x0, first_visible_x = 0x0, last_visible_x = 0x333, last_visible_y = 0x134, extra_line_spacing = 0x0, max_extra_line_spacing = 0x0, override_ascent = 0xffffffff, override_descent = 0x0, override_boff = 0x0, glyph_row = 0x380a098, area = TEXT_AREA, nglyphs = 0x1, pixel_width = 0x7, ascent = 0xb, descent = 0x3, max_ascent = 0xb, max_descent = 0x3, phys_ascent = 0xb, phys_descent = 0x3, max_phys_ascent = 0xb, max_phys_descent = 0x3, current_x = 0x333, continuation_lines_width = 0x0, current_y = 0x62, first_vpos = 0x1, vpos = 0x6, hpos = 0x75, left_user_fringe_bitmap = 0x0, right_user_fringe_bitmap = 0x0, left_user_fringe_face_id = 0x0, right_user_fringe_face_id = 0x0 } top = { charpos = 0x1, bytepos = 0x1 } visible_p = 0x1 old_buffer = 0x0 #1 0x010d0859 in Fpos_visible_in_window_p (pos=0x16b4, window=0x307c805, partially=0x2b36802) at window.c:352 w = 0x307c800 posint = 0x5ad buf = 0x48b4000 top = { charpos = 0x1, bytepos = 0x1 } in_window = 0x2b36802 rtop = 0x48b4000 rbot = 0x2b6d0f0 rowh = 0x2b638c2 vpos = 0x119bf77 fully_p = 0x1 x = 0x1 y = 0x48b4000 #2 0x010234f7 in Ffuncall (nargs=0x3, args=0x82f1b0) at eval.c:3030 fun = 0x138e5fd original_fun = 0x2b69c92 funcar = 0x1 numargs = 0x2 lisp_numargs = 0x10a6d98 val = 0x4 backtrace = { next = 0x82f380, function = 0x82f1b0, args = 0x82f1b4, nargs = 0x2, evalargs = 0x0, debug_on_exit = 0x0 } internal_args = 0x82f110 i = 0x3 #3 0x0116962f in Fbyte_code (bytestr=0x37e15b1, vector=0x3988605, maxdepth=0x10) at bytecode.c:680 count = 0xd op = 0x2 vectorp = 0x3988608 bytestr_length = 0xae stack = { pc = 0x33c6c06 "„†", top = 0x82f1b8, bottom = 0x82f1b0, byte_string = 0x37e15b1, byte_string_start = 0x33c6b90 "\b…", constants = 0x3988605, next = 0x82f4f0 } top = 0x82f1b0 result = 0x0 #4 0x01023be1 in funcall_lambda (fun=0x39a4005, nargs=0x0, arg_vector=0x82f3e8) at eval.c:3211 val = 0x6e44 syms_left = 0x2b36802 next = 0x2b8f582 count = 0xd i = 0x0 optional = 0x0 rest = 0x0 #5 0x010236c0 in Ffuncall (nargs=0x1, args=0x82f3e4) at eval.c:3070 fun = 0x39a4005 original_fun = 0x399bc02 funcar = 0x395c3a6 numargs = 0x0 lisp_numargs = 0x101a6d7 val = 0x6e44 backtrace = { next = 0x82f5b0, function = 0x82f3e4, args = 0x82f3e8, nargs = 0x0, evalargs = 0x0, debug_on_exit = 0x0 } internal_args = 0x82f3e8 i = 0x3c40ea3 #6 0x0116962f in Fbyte_code (bytestr=0x37f4ee1, vector=0x39aae05, maxdepth=0x10) at bytecode.c:680 count = 0xd op = 0x0 vectorp = 0x39aae08 bytestr_length = 0x73 stack = { pc = 0x33c8060 "ˆ\016\030ƒi", top = 0x82f3e4, bottom = 0x82f3e0, byte_string = 0x37f4ee1, byte_string_start = 0x33c800c "Æ\b!ƒ\021", constants = 0x39aae05, next = 0x82f730 } top = 0x82f3e4 result = 0x0 #7 0x01023be1 in funcall_lambda (fun=0x39a9885, nargs=0x1, arg_vector=0x82f614) at eval.c:3211 val = 0x2b36802 syms_left = 0x2b36802 next = 0x399bf1a count = 0xb i = 0x1 optional = 0x1 rest = 0x0 #8 0x010236c0 in Ffuncall (nargs=0x2, args=0x82f610) at eval.c:3070 fun = 0x39a9885 original_fun = 0x399bf02 funcar = 0x2b6919b numargs = 0x1 lisp_numargs = 0x101a6d7 val = 0x82f5f8 backtrace = { next = 0x82f7f0, function = 0x82f610, args = 0x82f614, nargs = 0x1, evalargs = 0x0, debug_on_exit = 0x0 } internal_args = 0x2b36802 i = 0x3a8cc93 #9 0x0116962f in Fbyte_code (bytestr=0x37f8691, vector=0x39a3a05, maxdepth=0x14) at bytecode.c:680 count = 0x8 op = 0x1 vectorp = 0x39a3a08 bytestr_length = 0xf8 stack = { pc = 0x33c869a "ˆ\202ñ", top = 0x82f614, bottom = 0x82f610, byte_string = 0x37f8691, byte_string_start = 0x33c8628 "p\020Æ ˆÇ`È\"‰\031ƒ\022", constants = 0x39a3a05, next = 0x0 } top = 0x82f610 result = 0x82f4f4 #10 0x01023be1 in funcall_lambda (fun=0x39a9265, nargs=0x1, arg_vector=0x82f8a4) at eval.c:3211 val = 0x0 syms_left = 0x2b36802 next = 0x2b60c4a count = 0x5 i = 0x1 optional = 0x1 rest = 0x0 #11 0x010236c0 in Ffuncall (nargs=0x2, args=0x82f8a0) at eval.c:3070 fun = 0x39a9265 original_fun = 0x3967f7a funcar = 0x2b36802 numargs = 0x1 lisp_numargs = 0x1005b99 val = 0x82f838 backtrace = { next = 0x82fab0, function = 0x82f8a0, args = 0x82f8a4, nargs = 0x1, evalargs = 0x0, debug_on_exit = 0x0 } internal_args = 0x82f808 i = 0x2b36802 #12 0x01168b17 in Fcall_interactively (function=0x3967f7a, record_flag=0x2b36802, keys=0x2b3bb05) at callint.c:869 val = 0x2cadb45 args = 0x82f8a0 visargs = 0x82f880 specs = 0x37fb191 filter_specs = 0x37fb191 teml = 0x11f25dd up_event = 0x2b36802 enable = 0x2b36802 speccount = 0x3 next_event = 0x1 prefix_arg = 0x2b36802 string = 0x82f8c0 "P" tem = 0x13a6b5c "" varies = 0x82f860 i = 0x2 j = 0x1 count = 0x1 foo = 0x3a73dce prompt1 = '\000' <repeats 99 times> tem1 = 0x0 arg_from_tty = 0x0 gcpro1 = { next = 0x2b41e42, var = 0x2b36802, nvars = 0x2b36802 } gcpro2 = { next = 0x2b41e42, var = 0x2b41522, nvars = 0x82f9b8 } gcpro3 = { next = 0x2bcb366, var = 0x2b41522, nvars = 0x2 } gcpro4 = { next = 0x2bcb37e, var = 0x2b36802, nvars = 0x2 } gcpro5 = { next = 0x4905268, var = 0x2b36802, nvars = 0x2b36802 } key_count = 0x1 record_then_fail = 0x0 save_this_command = 0x3967f7a save_last_command = 0x3967fda save_this_original_command = 0x3967f7a save_real_this_command = 0x3967f7a #13 0x010234f7 in Ffuncall (nargs=0x4, args=0x82fb20) at eval.c:3030 fun = 0x139132d original_fun = 0x2b5b5ca funcar = 0x2b57b33 numargs = 0x3 lisp_numargs = 0x101ac15 val = 0x82fb18 backtrace = { next = 0x0, function = 0x82fb20, args = 0x82fb24, nargs = 0x3, evalargs = 0x0, debug_on_exit = 0x0 } internal_args = 0x82fb24 i = 0x2b41a12 #14 0x0102308f in call3 (fn=0x2b5b5ca, arg1=0x3967f7a, arg2=0x2b36802, arg3=0x2b36802) at eval.c:2850 ret_ungc_val = 0x102422a gcpro1 = { next = 0x35fc086, var = 0x2b36802, nvars = 0x4 } args = {0x2b5b5ca, 0x3967f7a, 0x2b36802, 0x2b36802} #15 0x01014f36 in Fcommand_execute (cmd=0x3967f7a, record_flag=0x2b36802, keys=0x2b36802, special=0x2b36802) at keyboard.c:10507 final = 0x39a9265 tem = 0x2b36802 prefixarg = 0x2b36802 #16 0x0100787b in command_loop_1 () at keyboard.c:1904 scount = 0x2 cmd = 0x3967f7a lose = 0x82fcd8 keybuf = {0x80, 0x144, 0x82fc98, 0x1197215, 0x1000, 0x1bc, 0x30a8, 0x2b54a00, 0x2, 0x0, 0x2, 0x2, 0x0, 0x2, 0x82fde0, 0x0, 0x0, 0x82fcb4, 0x82fb50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b36802, 0x2c0a702} i = 0x1 prev_modiff = 0x62 prev_buffer = 0x48b4000 already_adjusted = 0x0 #17 0x01020fc4 in internal_condition_case (bfun=0x10061fd <command_loop_1>, handlers=0x2b444da, hfun=0x1005bee <cmd_error>) at eval.c:1490 val = 0x31f77de c = { tag = 0x2b36802, val = 0x2b36802, next = 0x82fde0, gcpro = 0x0, jmp = {0x82fda8, 0x7ffde000, 0x65002e, 0x650078, 0x82fcdc, 0x1020f5c, 0x82ffe0, 0x0, 0x82fdd8, 0x3, 0x1, 0x82fde4, 0x77c30065, 0x0, 0x1, 0xa452f0}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0x0, pdlcount = 0x2, poll_suppress_count = 0x0, interrupt_input_blocked = 0x0, byte_stack = 0x0 } h = { handler = 0x2b444da, var = 0x2b36802, chosen_clause = 0x82fde4, tag = 0x82fd20, next = 0x0 } #18 0x01005f62 in command_loop_2 () at keyboard.c:1360 val = 0x0 #19 0x01020ab5 in internal_catch (tag=0x2b441b2, func=0x1005f3f <command_loop_2>, arg=0x2b36802) at eval.c:1226 c = { tag = 0x2b441b2, val = 0x2b36802, next = 0x0, gcpro = 0x0, jmp = {0x82fe58, 0x7ffde000, 0x65002e, 0x650078, 0x82fdcc, 0x1020aa6, 0x82ffe0, 0x0, 0x2b69aea, 0x2b691cb, 0x2b36802, 0x2b40000, 0x2f2a5f4, 0x2b36802, 0x82fe48, 0x2b691cb}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0x0, pdlcount = 0x2, poll_suppress_count = 0x0, interrupt_input_blocked = 0x0, byte_stack = 0x0 } #20 0x01005f18 in command_loop () at keyboard.c:1339 No locals. #21 0x0100580a in recursive_edit_1 () at keyboard.c:954 count = 0x1 val = 0x82feb0 #22 0x0100596e in Frecursive_edit () at keyboard.c:1016 count = 0x0 buffer = 0x2b36802 #23 0x010027c6 in main (argc=0x1, argv=0xa42678) at emacs.c:1833 dummy = 0x7ffde000 stack_bottom_variable = 0x7f do_initial_setlocale = 0x1 skip_args = 0x0 no_loadup = 0x0 junk = 0x0 dname_arg = 0x0 Lisp Backtrace: "pos-visible-in-window-p" (0x82f1b4) "gnus-summary-recenter" (0x82f3e8) "gnus-summary-display-article" (0x82f614) "gnus-summary-next-page" (0x82f8a4) "call-interactively" (0x82fb24) (gdb) (gdb) (gdb) frame #0 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, y=0x82f0c0, rtop=0x82f0d8, rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 1396 for (; glyph < end (gdb) p rowh $1 = (int *) 0x82f0d0 (gdb) prow y=14 x=0 pwid=819 a+d=11+3=14 phys=11+3=14 vis=14 L=0 T=117 R=0 start=1 end=122 DISP TRUNC:R (gdb) p w $2 = (struct window *) 0x307c800 (gdb) pwin Window 1 *Summary nntp+news.gmane.org:gmane.text.xml.schema.devel* start=1 end:pos=0 vpos=3 vscroll=0 cursor: y=14 x=273 vpos=1 hpos=39 phys: y=14 x=273 vpos=1 hpos=39 ON blk=OFF (gdb) p glyph $3 = (struct glyph *) 0x38d0020 (gdb) pg STRETCH[0+0] pos=0 w=5 a+d=0+0 face=47 vof=909 N/A OVL [ slice=24,909,0,0 (gdb) -------------------------------------------------------------------------------- With charpos=0x5ad in the trace above, I ran gnus again and opened the summary buffer for the same group. Doing 'M-x goto-char 1453' puts point on '...' in the summary buffer, and 'M-x describe char' shows: character: C-j (10, #o12, #xa) preferred charset: ascii (ASCII (ISO646 IRV)) code point: 0x0A syntax: which means: whitespace buffer code: #x0A file code: #x0A (encoded by coding system utf-8-dos) display: by this font (glyph code) uniscribe:-outline-DejaVu Sans Mono-normal-normal-normal-mono-12-*-*-*-c-*-iso8859-1 (#x03) Character code properties: customize what to show name: <control> old-name: LINE FEED (LF) general-category: Cc (Other, Control) There is an overlay here: From 1453 to 1816 evaporate t invisible gnus-sum There are text properties here: gnus-number 7068 -------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 12:53 ` Andy Moreton @ 2010-03-16 15:26 ` David Kastrup 2010-03-16 20:34 ` Andy Moreton 2010-03-16 19:47 ` Eli Zaretskii 1 sibling, 1 reply; 20+ messages in thread From: David Kastrup @ 2010-03-16 15:26 UTC (permalink / raw) To: emacs-devel Andy Moreton <andrewjmoreton@googlemail.com> writes: > On 16/03/2010 10:33, Eli Zaretskii wrote: >>> From: Andy Moreton<andrewjmoreton@gmail.com> >>> Date: Mon, 15 Mar 2010 23:40:27 +0000 >>> >>> I've built 21.1.94 pretest on WinXP SP3 with MinGW gcc, and I'm seeing >>> a repeatable crash in gnus. Running emacs under gdb I managed to capture >>> a crash, with the following results: If it is really 21.1.94, it is rather old. Can't you build a newer version? -- David Kastrup ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 15:26 ` David Kastrup @ 2010-03-16 20:34 ` Andy Moreton 0 siblings, 0 replies; 20+ messages in thread From: Andy Moreton @ 2010-03-16 20:34 UTC (permalink / raw) To: emacs-devel On Tue 16 Mar 2010, David Kastrup wrote: > Andy Moreton <andrewjmoreton@googlemail.com> writes: > >> On 16/03/2010 10:33, Eli Zaretskii wrote: >>>> From: Andy Moreton<andrewjmoreton@gmail.com> >>>> Date: Mon, 15 Mar 2010 23:40:27 +0000 >>>> >>>> I've built 21.1.94 pretest on WinXP SP3 with MinGW gcc, and I'm seeing >>>> a repeatable crash in gnus. Running emacs under gdb I managed to capture >>>> a crash, with the following results: > > If it is really 21.1.94, it is rather old. Can't you build a newer version? Typo - its 23.1.94.1 (the latest pretest tarball). AndyM ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 12:53 ` Andy Moreton 2010-03-16 15:26 ` David Kastrup @ 2010-03-16 19:47 ` Eli Zaretskii 2010-03-16 20:42 ` Andy Moreton 1 sibling, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-16 19:47 UTC (permalink / raw) To: Andy Moreton; +Cc: emacs-devel > Date: Tue, 16 Mar 2010 12:53:51 +0000 > From: Andy Moreton <andrewjmoreton@googlemail.com> > CC: emacs-devel@gnu.org > > > First, please file a bug report with this information. > > I've sent a bug report (from another machine after recreating the crash). Didn't see it yet. So I'm responding here, for the time being. > emacs was configured on both machines with "--no-opt". I've added details of > the crash in the bug report below. > > Program received signal SIGSEGV, Segmentation fault. > 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, > y=0x82f0c0, rtop=0x82f0d8, > rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 > 1396 for (; glyph < end Hmm, that's a strange place to get hit by SIGSEGV. Can you try to see what exactly caused the crash? When in doubt, I usually disassemble the vicinity of the address where it crashed (0x01030355 in this case), find the instruction that crashed, and then compare the disassembly to the source to find which source line the failed instruction came from. The GDB command "info line" might help in the initial estimation of the source line to which the failed address belongs. Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 19:47 ` Eli Zaretskii @ 2010-03-16 20:42 ` Andy Moreton 2010-03-16 21:49 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Andy Moreton @ 2010-03-16 20:42 UTC (permalink / raw) To: emacs-devel On Tue 16 Mar 2010, Eli Zaretskii wrote: >> Date: Tue, 16 Mar 2010 12:53:51 +0000 >> From: Andy Moreton <andrewjmoreton@googlemail.com> >> CC: emacs-devel@gnu.org >> >> > First, please file a bug report with this information. >> >> I've sent a bug report (from another machine after recreating the crash). > > Didn't see it yet. So I'm responding here, for the time being. Details at http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5730 >> emacs was configured on both machines with "--no-opt". I've added details of >> the crash in the bug report below. >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, >> y=0x82f0c0, rtop=0x82f0d8, >> rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 >> 1396 for (; glyph < end > > Hmm, that's a strange place to get hit by SIGSEGV. Can you try to see > what exactly caused the crash? When in doubt, I usually disassemble > the vicinity of the address where it crashed (0x01030355 in this > case), find the instruction that crashed, and then compare the > disassembly to the source to find which source line the failed > instruction came from. The GDB command "info line" might help in the > initial estimation of the source line to which the failed address > belongs. I'll try to reproduce it and report back if I can shed any further light. I haven't supplied any command line arguments when running under gdb - do I need to use "-Q" to get something you can reproduce ? AndyM ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 20:42 ` Andy Moreton @ 2010-03-16 21:49 ` Eli Zaretskii 2010-03-20 12:19 ` Andreas Schwab 0 siblings, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-16 21:49 UTC (permalink / raw) To: Andy Moreton; +Cc: emacs-devel > From: Andy Moreton <andrewjmoreton@gmail.com> > Date: Tue, 16 Mar 2010 20:42:02 +0000 > > >> Program received signal SIGSEGV, Segmentation fault. > >> 0x01030355 in pos_visible_p (w=0x307c800, charpos=0x5ad, x=0x82f0c4, > >> y=0x82f0c0, rtop=0x82f0d8, > >> rbot=0x82f0d4, rowh=0x82f0d0, vpos=0x82f0cc) at xdisp.c:1396 > >> 1396 for (; glyph < end > > > > Hmm, that's a strange place to get hit by SIGSEGV. Can you try to see > > what exactly caused the crash? When in doubt, I usually disassemble > > the vicinity of the address where it crashed (0x01030355 in this > > case), find the instruction that crashed, and then compare the > > disassembly to the source to find which source line the failed > > instruction came from. The GDB command "info line" might help in the > > initial estimation of the source line to which the failed address > > belongs. > > I'll try to reproduce it and report back if I can shed any further > light. I haven't supplied any command line arguments when running under > gdb - do I need to use "-Q" to get something you can reproduce ? I doubt that this will help: it's hard to use Gnus with absolutely no customizations, especially on Windows. For now, I'm trying to understand what object causes the crash, and why. That might give more ideas. Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-16 21:49 ` Eli Zaretskii @ 2010-03-20 12:19 ` Andreas Schwab 2010-03-20 15:45 ` Andreas Schwab 0 siblings, 1 reply; 20+ messages in thread From: Andreas Schwab @ 2010-03-20 12:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Andy Moreton, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > For now, I'm trying to understand what object causes the crash, and > why. That might give more ideas. I have seen exactly the same crash. It appears to be some issue with GC, because glyph.object was overwritten with string data. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 12:19 ` Andreas Schwab @ 2010-03-20 15:45 ` Andreas Schwab 2010-03-20 16:20 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Andreas Schwab @ 2010-03-20 15:45 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Andy Moreton, emacs-devel I appears to happen when the last line in a buffer is made invisible with an elipsis spec (like the gnus-sum spec). Apparently the code is accessing an uninitialized glyph row. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 15:45 ` Andreas Schwab @ 2010-03-20 16:20 ` Eli Zaretskii 2010-03-20 16:24 ` Andreas Schwab 2010-03-20 16:29 ` Eli Zaretskii 2 siblings, 0 replies; 20+ messages in thread From: Eli Zaretskii @ 2010-03-20 16:20 UTC (permalink / raw) To: Andreas Schwab; +Cc: andrewjmoreton, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org > Date: Sat, 20 Mar 2010 16:45:45 +0100 > > I appears to happen when the last line in a buffer is made invisible > with an elipsis spec (like the gnus-sum spec). Apparently the > code is accessing an uninitialized glyph row. So it does not appear to be related to GC? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 15:45 ` Andreas Schwab 2010-03-20 16:20 ` Eli Zaretskii @ 2010-03-20 16:24 ` Andreas Schwab 2010-03-20 16:31 ` Eli Zaretskii 2010-03-24 21:34 ` Chong Yidong 2010-03-20 16:29 ` Eli Zaretskii 2 siblings, 2 replies; 20+ messages in thread From: Andreas Schwab @ 2010-03-20 16:24 UTC (permalink / raw) To: cyd; +Cc: Eli Zaretskii, Andy Moreton, emacs-devel This is fundamentally broken. move_it_to never produces glyphs, so the complete glyph row is uninitialized. This was first broken by this change: commit 9d73ed0ef33ba0502c03e546a09d175ab35fdc75 Author: Chong Yidong <cyd@stupidchicken.com> Date: Sat Jan 26 01:00:44 2008 +0000 (pos_visible_p): Handle the case where charpos falls on invisible text covered with an ellipsis. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 16:24 ` Andreas Schwab @ 2010-03-20 16:31 ` Eli Zaretskii 2010-03-24 13:50 ` Andy Moreton 2010-03-24 21:34 ` Chong Yidong 1 sibling, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-20 16:31 UTC (permalink / raw) To: Andreas Schwab; +Cc: cyd, andrewjmoreton, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org, Eli Zaretskii <eliz@gnu.org> > Date: Sat, 20 Mar 2010 17:24:06 +0100 > > This is fundamentally broken. move_it_to never produces glyphs, so the > complete glyph row is uninitialized. Right, thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 16:31 ` Eli Zaretskii @ 2010-03-24 13:50 ` Andy Moreton 0 siblings, 0 replies; 20+ messages in thread From: Andy Moreton @ 2010-03-24 13:50 UTC (permalink / raw) To: emacs-devel On Sat 20 Mar 2010, Eli Zaretskii wrote: >> From: Andreas Schwab <schwab@linux-m68k.org> >> Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org, Eli Zaretskii <eliz@gnu.org> >> Date: Sat, 20 Mar 2010 17:24:06 +0100 >> >> This is fundamentally broken. move_it_to never produces glyphs, so the >> complete glyph row is uninitialized. > > Right, thanks. After looking at more gdb traces, I also see the glpyh being overwritten with string data, so Andreas is seeing the same problem. Can we have a fix for this in the next pretest please ? AndyM ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 16:24 ` Andreas Schwab 2010-03-20 16:31 ` Eli Zaretskii @ 2010-03-24 21:34 ` Chong Yidong 2010-03-25 4:14 ` Eli Zaretskii 1 sibling, 1 reply; 20+ messages in thread From: Chong Yidong @ 2010-03-24 21:34 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Andy Moreton, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: > This is fundamentally broken. move_it_to never produces glyphs, so the > complete glyph row is uninitialized. This was first broken by this > change: > > commit 9d73ed0ef33ba0502c03e546a09d175ab35fdc75 > Author: Chong Yidong <cyd@stupidchicken.com> > Date: Sat Jan 26 01:00:44 2008 +0000 > > (pos_visible_p): Handle the case where charpos falls on > invisible text covered with an ellipsis. Yes, this patch is wrong. Looking through the archives, it seems to have been meant to address the problem at http://lists.gnu.org/archive/html/emacs-devel/2008-01/msg00945.html However, looking at that recipe, it seems the problem is actually handled by my 2009-01-10 (it_method == GET_FROM_DISPLAY_VECTOR) change instead. So either my 2008-01-26 change was bogus all along, or some other change in the meantime made it bogus. I've reverted it in the branch; thanks for investigating. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-24 21:34 ` Chong Yidong @ 2010-03-25 4:14 ` Eli Zaretskii 2010-03-25 16:35 ` Chong Yidong 0 siblings, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-25 4:14 UTC (permalink / raw) To: Chong Yidong; +Cc: andrewjmoreton, schwab, emacs-devel > From: Chong Yidong <cyd@stupidchicken.com> > Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org, > Eli Zaretskii <eliz@gnu.org> > Date: Wed, 24 Mar 2010 17:34:14 -0400 > > However, looking at that recipe, it seems the problem is actually > handled by my 2009-01-10 (it_method == GET_FROM_DISPLAY_VECTOR) change > instead. So either my 2008-01-26 change was bogus all along, or some > other change in the meantime made it bogus. > > I've reverted it in the branch; thanks for investigating. But the part that you left in the code also uses it.glyph_row, which is garbage after a call to move_it_to. There's a single use of it.glyph_row->x before the call to PRODUCE_GLYPHS (&it2), and I think that needs to be fixed as well, because it potentially dereferences a bad pointer. Or did I miss something? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-25 4:14 ` Eli Zaretskii @ 2010-03-25 16:35 ` Chong Yidong 2010-03-25 19:51 ` Eli Zaretskii 0 siblings, 1 reply; 20+ messages in thread From: Chong Yidong @ 2010-03-25 16:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: andrewjmoreton, schwab, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > But the part that you left in the code also uses it.glyph_row, which > is garbage after a call to move_it_to. There's a single use of > it.glyph_row->x before the call to PRODUCE_GLYPHS (&it2), and I think > that needs to be fixed as well, because it potentially dereferences a > bad pointer. > > Or did I miss something? I don't see the failure condition. This branch handles the special case of charpos == 1 or charpos above the top of the window. Since start_display initialized the iterator using the desired matrix of the window, it.glyph_row should always be valid. Or am I confused? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-25 16:35 ` Chong Yidong @ 2010-03-25 19:51 ` Eli Zaretskii 0 siblings, 0 replies; 20+ messages in thread From: Eli Zaretskii @ 2010-03-25 19:51 UTC (permalink / raw) To: Chong Yidong; +Cc: andrewjmoreton, schwab, emacs-devel > From: Chong Yidong <cyd@stupidchicken.com> > Cc: schwab@linux-m68k.org, andrewjmoreton@gmail.com, emacs-devel@gnu.org > Date: Thu, 25 Mar 2010 12:35:05 -0400 > > Eli Zaretskii <eliz@gnu.org> writes: > > > But the part that you left in the code also uses it.glyph_row, which > > is garbage after a call to move_it_to. There's a single use of > > it.glyph_row->x before the call to PRODUCE_GLYPHS (&it2), and I think > > that needs to be fixed as well, because it potentially dereferences a > > bad pointer. > > > > Or did I miss something? > > I don't see the failure condition. This branch handles the special case > of charpos == 1 or charpos above the top of the window. Since > start_display initialized the iterator using the desired matrix of the > window, it.glyph_row should always be valid. > > Or am I confused? it.glyph_row is indeed initialized in start_display. But are you sure it.glyph_row->x is set correctly? move_it_to does not produce glyphs in glyph_row, so who computes glyph_row->x ? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 15:45 ` Andreas Schwab 2010-03-20 16:20 ` Eli Zaretskii 2010-03-20 16:24 ` Andreas Schwab @ 2010-03-20 16:29 ` Eli Zaretskii 2010-03-20 16:46 ` Andreas Schwab 2 siblings, 1 reply; 20+ messages in thread From: Eli Zaretskii @ 2010-03-20 16:29 UTC (permalink / raw) To: Andreas Schwab; +Cc: andrewjmoreton, emacs-devel > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org > Date: Sat, 20 Mar 2010 16:45:45 +0100 > > I appears to happen when the last line in a buffer is made invisible > with an elipsis spec (like the gnus-sum spec). Last line in a buffer or last line on display? Lines that are not displayed should not be subject to any processing during redisplay. > Apparently the code is accessing an uninitialized glyph row. Do you mean that in the code below if (TEXT_PROP_MEANS_INVISIBLE (prop) == 2) { struct glyph_row *row = it.glyph_row; struct glyph *glyph = row->glyphs[TEXT_AREA]; struct glyph *end = glyph + row->used[TEXT_AREA]; int x = row->x; for (; glyph < end && (!BUFFERP (glyph->object) || glyph->charpos < charpos); glyph++) x += glyph->pixel_width; top_x = x; } it.glyph_row points to uninitialized memory? That would be very strange, since start_display and move_it_to, called just above this, already worked on that glyph row. Did I miss something? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: emacs-21.1.94 crash in gnus on Windows 2010-03-20 16:29 ` Eli Zaretskii @ 2010-03-20 16:46 ` Andreas Schwab 0 siblings, 0 replies; 20+ messages in thread From: Andreas Schwab @ 2010-03-20 16:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: andrewjmoreton, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Andreas Schwab <schwab@linux-m68k.org> >> Cc: Andy Moreton <andrewjmoreton@gmail.com>, emacs-devel@gnu.org >> Date: Sat, 20 Mar 2010 16:45:45 +0100 >> >> I appears to happen when the last line in a buffer is made invisible >> with an elipsis spec (like the gnus-sum spec). > > Last line in a buffer or last line on display? There is an invisible overlay over the last line spanning from the previous newline until before the last newline. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2010-03-25 19:51 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-03-15 23:40 emacs-21.1.94 crash in gnus on Windows Andy Moreton 2010-03-16 10:33 ` Eli Zaretskii 2010-03-16 12:53 ` Andy Moreton 2010-03-16 15:26 ` David Kastrup 2010-03-16 20:34 ` Andy Moreton 2010-03-16 19:47 ` Eli Zaretskii 2010-03-16 20:42 ` Andy Moreton 2010-03-16 21:49 ` Eli Zaretskii 2010-03-20 12:19 ` Andreas Schwab 2010-03-20 15:45 ` Andreas Schwab 2010-03-20 16:20 ` Eli Zaretskii 2010-03-20 16:24 ` Andreas Schwab 2010-03-20 16:31 ` Eli Zaretskii 2010-03-24 13:50 ` Andy Moreton 2010-03-24 21:34 ` Chong Yidong 2010-03-25 4:14 ` Eli Zaretskii 2010-03-25 16:35 ` Chong Yidong 2010-03-25 19:51 ` Eli Zaretskii 2010-03-20 16:29 ` Eli Zaretskii 2010-03-20 16:46 ` Andreas Schwab
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).