Package: emacs;
Reported by: Gregory Heytings <gregory <at> heytings.org>
Date: Tue, 5 Jul 2022 08:50:02 UTC
Severity: normal
Done: Gregory Heytings <gregory <at> heytings.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Eli Zaretskii <eliz <at> gnu.org> To: Gregory Heytings <gregory <at> heytings.org> Cc: larsi <at> gnus.org, 56393 <at> debbugs.gnu.org Subject: bug#56393: Actually fix the long lines display bug Date: Sun, 17 Jul 2022 19:00:33 +0300
> Date: Sun, 17 Jul 2022 15:37:08 +0000 > From: Gregory Heytings <gregory <at> heytings.org> > cc: larsi <at> gnus.org, 56393 <at> debbugs.gnu.org > > > > > > I still see a segfault in get_visually_first_element. To reproduce: > > > > emacs -Q > > C-x C-f long-line.xml > > C-u 12 M-g g > > C-s C-q C-j > > > > IOW, go to line 12 and search for a newline. I think this segfaults > > because point is very far from window-start, so the narrowing doesn't > > include the position where get_visually_first_element is called. > > > > Similarly, this also segfaults: > > > > emacs -Q > > C-x C-f long-line.xml > > C-u 15000 M-g c > > C-x 2 > > > > Thanks. I can't reproduce either of these two bugs with a regular build, > both of these recipes produce the expected result. Are these segfaults > due to --enable-checking? No, I don't think so. --enable-checking produces SIGABRT, not SIGSEGV. The segfault happens because it->bidi_it.bytepos is 1, and FETCH_BYTE cannot be called with a zero argument. Here's a relevant portion of a debugging session: Thread 1 received signal SIGSEGV, Segmentation fault. 0x01055028 in get_visually_first_element (it=0x82d250) at xdisp.c:8691 8691 && (FETCH_BYTE (it->bidi_it.bytepos - 1) == '\n' (gdb) bt #0 0x01055028 in get_visually_first_element (it=0x82d250) at xdisp.c:8691 #1 0x010563d4 in next_element_from_buffer (it=0x82d250) at xdisp.c:9149 #2 0x01052bd3 in get_next_display_element (it=0x82d250) at xdisp.c:7786 #3 0x01057166 in move_it_in_display_line_to (it=0x82d250, to_charpos=306655, to_x=0, op=(MOVE_TO_X | MOVE_TO_POS)) at xdisp.c:9574 #4 0x01059ce7 in move_it_to (it=0x82d250, to_charpos=306655, to_x=-1, to_y=543, to_vpos=-1, op=10) at xdisp.c:10245 #5 0x01038364 in pos_visible_p (w=0x75fd640, charpos=306655, x=0x82e23c, y=0x82e238, rtop=0x82e24c, rbot=0x82e248, rowh=0x82e244, vpos=0x82e240) at xdisp.c:1730 #6 0x010ca308 in Fpos_visible_in_window_p (pos=XIL(0), window=XIL(0), partially=XIL(0x30)) at window.c:2000 #7 0x01276489 in funcall_subr (subr=0x173c8c0 <Spos_visible_in_window_p>, numargs=3, args=0x68b0248) at eval.c:3000 #8 0x012e9634 in exec_byte_code (fun=XIL(0xa000000005db8a1c), args_template=768, nargs=3, args=0x68b0208) at bytecode.c:809 #9 0x012769cd in fetch_and_exec_byte_code (fun=XIL(0xa000000005db9bdc), args_template=256, nargs=1, args=0x82ebd0) at eval.c:3045 #10 0x01276f2c in funcall_lambda (fun=XIL(0xa000000005db9bdc), nargs=1, arg_vector=0x82ebd0) at eval.c:3117 #11 0x01275ee2 in funcall_general (fun=XIL(0xa000000005db9bdc), numargs=1, args=0x82ebd0) at eval.c:2908 #12 0x0127623e in Ffuncall (nargs=2, args=0x82ebc8) at eval.c:2958 #13 0x01265666 in Ffuncall_interactively (nargs=2, args=0x82ebc8) at callint.c:291 #14 0x0127687e in funcall_subr (subr=0x1747440 <Sfuncall_interactively>, numargs=2, args=0x82ebc8) at eval.c:3023 #15 0x01275e7b in funcall_general (fun=XIL(0xa000000001747440), numargs=2, args=0x82ebc8) at eval.c:2904 #16 0x0127623e in Ffuncall (nargs=3, args=0x82ebc0) at eval.c:2958 #17 0x01268869 in Fcall_interactively (function=XIL(0x452974c), record_flag=XIL(0), keys=XIL(0xa0000000076986d8)) at callint.c:829 #18 0x01276489 in funcall_subr (subr=0x1747480 <Scall_interactively>, numargs=3, args=0x68b0078) at eval.c:3000 #19 0x012e9634 in exec_byte_code (fun=XIL(0xa000000005dff734), args_template=1025, nargs=1, args=0x82f5b0) at bytecode.c:809 #20 0x012769cd in fetch_and_exec_byte_code (fun=XIL(0xa000000005dff734), args_template=1025, nargs=1, args=0x82f5a8) at eval.c:3045 #21 0x01276f2c in funcall_lambda (fun=XIL(0xa000000005dff734), nargs=1, arg_vector=0x82f5a8) at eval.c:3117 #22 0x01275ee2 in funcall_general (fun=XIL(0xa000000005dff734), numargs=1, args=0x82f5a8) at eval.c:2908 #23 0x0127623e in Ffuncall (nargs=2, args=0x82f5a0) at eval.c:2958 #24 0x0116b50a in call1 (fn=XIL(0x4440), arg1=XIL(0x452974c)) at lisp.h:3239 #25 0x0116f73c in command_loop_1 () at keyboard.c:1510 #26 0x01270662 in internal_condition_case (bfun=0x116eab0 <command_loop_1>, handlers=XIL(0x90), hfun=0x116da7e <cmd_error>) at eval.c:1485 #27 0x0116e51d in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132 #28 0x0126f4e9 in internal_catch (tag=XIL(0xfe70), func=0x116e4e6 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208 #29 0x0116e488 in command_loop () at keyboard.c:1110 #30 0x0116d4de in recursive_edit_1 () at keyboard.c:719 #31 0x0116d77c in Frecursive_edit () at keyboard.c:802 #32 0x011686e6 in main (argc=2, argv=0xa42a10) at emacs.c:2517 Lisp Backtrace: "pos-visible-in-window-p" (0x68b0248) "pos-visible-in-window-group-p" (0x68b01f0) "isearch-update" (0x68b01a0) "isearch-search-and-update" (0x68b0178) "isearch-process-search-string" (0x68b0138) "isearch-process-search-char" (0x68b00d8) "isearch-quote-char" (0x82ebd0) "funcall-interactively" (0x82ebc8) "call-interactively" (0x68b0078) "command-execute" (0x82f5a8) (gdb) p it.bidi_it.bytepos $1 = 1 (gdb) p bob $2 = 293760 (gdb) p it->current $3 = { pos = { charpos = 1, bytepos = 1 }, overlay_string_index = -1, string_pos = { charpos = -1, bytepos = -1 }, dpvec_index = -1 }
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.