Subject: bug#18036: closed (Re: bug#18036: 24.4.50; Too large fringe width causes hang in redisplay)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 16 Jul 2014 18:44:03 +0000

Your bug report

#18036: 24.4.50; Too large fringe width causes hang in redisplay

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
18036: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18036
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#18036: 24.4.50; Too large fringe width causes hang in redisplay
From: Eli Zaretskii <[email-masked]>
To: Dmitry Antipov <[email-masked]>
Cc: [email-masked]
Date: Wed, 16 Jul 2014 21:42:49 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Date: Wed, 16 Jul 2014 21:47:09 +0400
> From: Dmitry Antipov <[email-masked]>
> 
> Recently I erroneously set left-fringe-width to some large number
> (don't remember an exact value), and got infloop in redisplay afterwards:
> 
> #0  0x000000000045578a in move_it_to (it=0x7fff7386b590, to_charpos=192, to_x=-1, to_y=-1, to_vpos=-1, op=8)
>      at ../../trunk/src/xdisp.c:9319
> #1  0x0000000000455af0 in move_it_vertically_backward (it=0x7fff7386d090, dy=306) at ../../trunk/src/xdisp.c:9400
> #2  0x000000000046bdf2 in redisplay_window (window=..., just_this_one_p=false) at ../../trunk/src/xdisp.c:16475
> #3  0x0000000000462d28 in redisplay_window_0 (window=...) at ../../trunk/src/xdisp.c:14247
> #4  0x0000000000609711 in internal_condition_case_1 (bfun=0x462ce6 <redisplay_window_0>, arg=..., handlers=...,
>      hfun=0x462cb5 <redisplay_window_error>) at ../../trunk/src/eval.c:1373
> #5  0x0000000000462c93 in redisplay_windows (window=...) at ../../trunk/src/xdisp.c:14227
> #6  0x0000000000461aed in redisplay_internal () at ../../trunk/src/xdisp.c:13826
> #7  0x000000000045f830 in redisplay () at ../../trunk/src/xdisp.c:13112
> #8  0x000000000056af5c in read_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fff7386f4bf, end_time=0x0)
>      at ../../trunk/src/keyboard.c:2560
> #9  0x000000000057a593 in read_key_sequence (keybuf=0x7fff7386f6a0, bufsize=30, prompt=..., dont_downcase_last=false,
>      can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../trunk/src/keyboard.c:9084
> #10 0x0000000000567f1e in command_loop_1 () at ../../trunk/src/keyboard.c:1438
> #11 0x00000000006095a0 in internal_condition_case (bfun=0x567b5c <command_loop_1>, handlers=..., hfun=0x56732c <cmd_error>)
>      at ../../trunk/src/eval.c:1349
> #12 0x00000000005677fa in command_loop_2 (ignore=...) at ../../trunk/src/keyboard.c:1169
> #13 0x0000000000608a23 in internal_catch (tag=..., func=0x5677d7 <command_loop_2>, arg=...) at ../../trunk/src/eval.c:1113
> #14 0x00000000005677ae in command_loop () at ../../trunk/src/keyboard.c:1148
> #15 0x0000000000566e58 in recursive_edit_1 () at ../../trunk/src/keyboard.c:769
> #16 0x0000000000567028 in Frecursive_edit () at ../../trunk/src/keyboard.c:840
> #17 0x0000000000564f2f in main (argc=4, argv=0x7fff7386fb28) at ../../trunk/src/emacs.c:1650
> 
> Recipe to reproduce is very simple:
> 
> ./src/emacs -Q --eval '(progn (setq left-fringe-width 1000) (switch-to-buffer "test") (kill-buffer))'

Thanks, this is now fixed in the emacs-24 branch (r117381).

Subject: 24.4.50; Too large fringe width causes hang in redisplay
From: Dmitry Antipov <[email-masked]>
To: [email-masked]
Date: Wed, 16 Jul 2014 21:47:09 +0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Recently I erroneously set left-fringe-width to some large number
(don't remember an exact value), and got infloop in redisplay afterwards:

#0  0x000000000045578a in move_it_to (it=0x7fff7386b590, to_charpos=192, to_x=-1, to_y=-1, to_vpos=-1, op=8)
     at ../../trunk/src/xdisp.c:9319
#1  0x0000000000455af0 in move_it_vertically_backward (it=0x7fff7386d090, dy=306) at ../../trunk/src/xdisp.c:9400
#2  0x000000000046bdf2 in redisplay_window (window=..., just_this_one_p=false) at ../../trunk/src/xdisp.c:16475
#3  0x0000000000462d28 in redisplay_window_0 (window=...) at ../../trunk/src/xdisp.c:14247
#4  0x0000000000609711 in internal_condition_case_1 (bfun=0x462ce6 <redisplay_window_0>, arg=..., handlers=...,
     hfun=0x462cb5 <redisplay_window_error>) at ../../trunk/src/eval.c:1373
#5  0x0000000000462c93 in redisplay_windows (window=...) at ../../trunk/src/xdisp.c:14227
#6  0x0000000000461aed in redisplay_internal () at ../../trunk/src/xdisp.c:13826
#7  0x000000000045f830 in redisplay () at ../../trunk/src/xdisp.c:13112
#8  0x000000000056af5c in read_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fff7386f4bf, end_time=0x0)
     at ../../trunk/src/keyboard.c:2560
#9  0x000000000057a593 in read_key_sequence (keybuf=0x7fff7386f6a0, bufsize=30, prompt=..., dont_downcase_last=false,
     can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../trunk/src/keyboard.c:9084
#10 0x0000000000567f1e in command_loop_1 () at ../../trunk/src/keyboard.c:1438
#11 0x00000000006095a0 in internal_condition_case (bfun=0x567b5c <command_loop_1>, handlers=..., hfun=0x56732c <cmd_error>)
     at ../../trunk/src/eval.c:1349
#12 0x00000000005677fa in command_loop_2 (ignore=...) at ../../trunk/src/keyboard.c:1169
#13 0x0000000000608a23 in internal_catch (tag=..., func=0x5677d7 <command_loop_2>, arg=...) at ../../trunk/src/eval.c:1113
#14 0x00000000005677ae in command_loop () at ../../trunk/src/keyboard.c:1148
#15 0x0000000000566e58 in recursive_edit_1 () at ../../trunk/src/keyboard.c:769
#16 0x0000000000567028 in Frecursive_edit () at ../../trunk/src/keyboard.c:840
#17 0x0000000000564f2f in main (argc=4, argv=0x7fff7386fb28) at ../../trunk/src/emacs.c:1650

Recipe to reproduce is very simple:

./src/emacs -Q --eval '(progn (setq left-fringe-width 1000) (switch-to-buffer "test") (kill-buffer))'

This recipe works for all X-aware configurations on GNU/Linux.

Dmitry