unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* infinite loop with show-paren-mode turned on
@ 2003-07-20  7:29 Satyaki Das
  2003-07-21 19:39 ` Richard Stallman
  0 siblings, 1 reply; 10+ messages in thread
From: Satyaki Das @ 2003-07-20  7:29 UTC (permalink / raw)



Emacs from CVS, updated about half an hour back, goes into an
infinite loop if show-paren-mode is turned on. To reproduce this
perform the following steps:

  (1) Start emacs with:
        emacs -q --no-site-file

  (2) In the running emacs do:

        M-: (show-paren-mode 1) RET
        M-x replace-string RET {} RET 0 RET
        M-x replace-string RET M-p M-p C-e

      At this point Emacs enters into an infinite loop.

I ran it in gdb and the backtrace is attached at the end of the
email. For me this is completely reproducable and happens both in
X and in the terminal.

Satyaki


$ gdb ./emacs
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
DISPLAY = :0.0
TERM = xterm
Breakpoint 1 at 0x8103fda: file emacs.c, line 417.
Breakpoint 2 at 0x80e679c: file xterm.c, line 7829.
(gdb) run -q --no-site-file
Starting program: /usr/local/garnome/emacs/src/emacs -q --no-site-file
 
Program received signal SIGTSTP, Stopped (user).
overlays_at (pos=18, extend=0, vec_ptr=0xbfffbdb4, len_ptr=0xbfffbdb8, next_ptr=0xbfffbdbc, prev_ptr=0x0, change_req=0) at buffer.c:2509
2509          startpos = OVERLAY_POSITION (start);
(gdb) bt
#0  overlays_at (pos=18, extend=0, vec_ptr=0xbfffbdb4, len_ptr=0xbfffbdb8, next_ptr=0xbfffbdbc, prev_ptr=0x0, change_req=0) at buffer.c:2509
#1  0x080de052 in face_at_buffer_position (w=0x856cef0, pos=18, region_beg=-1, region_end=-1, endptr=0xbfffbe58, limit=-1073758796, mouse=0) at xfaces.c:7232
#2  0x0809211a in handle_face_prop (it=0xbfffc1c0) at xdisp.c:2780
#3  0x08091c3a in handle_stop (it=0xbfffc1c0) at xdisp.c:2506
#4  0x0809584d in next_element_from_buffer (it=0xbfffc1c0) at xdisp.c:5318
#5  0x08094d30 in get_next_display_element (it=0xbfffc1c0) at xdisp.c:4670
#6  0x08095aab in move_it_in_display_line_to (it=0xbfffc1c0, to_charpos=19, to_x=-1, op=8) at xdisp.c:5485
#7  0x08095d88 in move_it_to (it=0xbfffc1c0, to_charpos=19, to_x=-1, to_y=-1, to_vpos=-1, op=8) at xdisp.c:5674
#8  0x08097f58 in resize_mini_window (w=0x856cef0, exact_p=0) at xdisp.c:7184
#9  0x0809bc6b in redisplay_internal (preserve_echo_area=1) at xdisp.c:9737
#10 0x08111d3e in detect_input_pending_run_timers (do_display=1) at keyboard.c:9913
#11 0x0818e05d in wait_reading_process_input (time_limit=30, microsecs=0, read_kbd=268435455, do_display=1) at process.c:4116
#12 0x080877d1 in sit_for (sec=30, usec=0, reading=1, display=1, initial_display=0) at dispnew.c:6247
#13 0x081096e2 in read_char (commandflag=1, nmaps=2, maps=0xbfffcc60, prev_event=405653084, used_mouse_menu=0xbfffcc98) at keyboard.c:2720
#14 0x0810fea1 in read_key_sequence (keybuf=0xbfffcdc0, bufsize=30, prompt=405653084, dont_downcase_last=0, can_return_switch_frame=1, fix_current_buffer=1)
    at keyboard.c:8825
#15 0x08106a47 in command_loop_1 () at keyboard.c:1504
#16 0x0815e5ea in internal_condition_case (bfun=0x81068c8 <command_loop_1>, handlers=405764172, hfun=0x81064b8 <cmd_error>) at eval.c:1333
#17 0x081067a2 in command_loop_2 () at keyboard.c:1292
#18 0x0815e189 in internal_catch (tag=138678008, func=0x8106784 <command_loop_2>, arg=405653084) at eval.c:1094
#19 0x0810670e in command_loop () at keyboard.c:1263
#20 0x08106294 in recursive_edit_1 () at keyboard.c:987
#21 0x08128580 in read_minibuf (map=1479440664, initial=405653084, prompt=1214949576, backup_n=0, expflag=0, histvar=407891996, histpos=0, defalt=405653084,
    allow_props=0, inherit_input_method=1) at minibuf.c:657
#22 0x08128dbe in Fread_from_minibuffer (prompt=945215604, initial_contents=405653084, keymap=1479440664, read=405653084, hist=407891996, default_value=405653084,
    inherit_input_method=405653132) at minibuf.c:942
#23 0x08160142 in Ffuncall (nargs=8, args=0xbfffd244) at eval.c:2740
#24 0x08187c24 in Fbyte_code (bytestr=407892044, vector=7, maxdepth=-1073753536) at bytecode.c:710
#25 0x081603ef in funcall_lambda (fun=1210590100, nargs=2, arg_vector=0xbfffd310) at eval.c:2911
#26 0x081602be in apply_lambda (fun=1210590100, args=405653084, eval_flag=1) at eval.c:2833
#27 0x0815f5ac in Feval (form=1210590100) at eval.c:2136
#28 0x0815deb1 in Flet (args=1479029468) at eval.c:920
#29 0x0815f89c in Feval (form=1210700392) at eval.c:2025
#30 0x0815ca48 in Fcall_interactively (function=407892428, record_flag=405653132, keys=1211033704) at callint.c:377
#31 0x08111702 in Fcommand_execute (cmd=407892428, record_flag=405653132, keys=405653084, special=405653084) at keyboard.c:9724
#32 0x08111a08 in Fexecute_extended_command (prefixarg=405653084) at keyboard.c:9835
#33 0x081600fe in Ffuncall (nargs=2, args=0xbfffd854) at eval.c:2724
#34 0x0815c084 in Fcall_interactively (function=405760580, record_flag=405653084, keys=1211033704) at callint.c:850
#35 0x08111702 in Fcommand_execute (cmd=405760580, record_flag=405653084, keys=405653084, special=405653084) at keyboard.c:9724
#36 0x08106c17 in command_loop_1 () at keyboard.c:1755
#37 0x0815e5ea in internal_condition_case (bfun=0x81068c8 <command_loop_1>, handlers=405764172, hfun=0x81064b8 <cmd_error>) at eval.c:1333
#38 0x081067a2 in command_loop_2 () at keyboard.c:1292
#39 0x0815e189 in internal_catch (tag=138678008, func=0x8106784 <command_loop_2>, arg=405653084) at eval.c:1094
#40 0x08106758 in command_loop () at keyboard.c:1271
#41 0x08106294 in recursive_edit_1 () at keyboard.c:987
#42 0x081063a4 in Frecursive_edit () at keyboard.c:1043
#43 0x08104cdb in main (argc=3, argv=0xbfffdfe4) at emacs.c:1666
#44 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6
(gdb)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-20  7:29 infinite loop with show-paren-mode turned on Satyaki Das
@ 2003-07-21 19:39 ` Richard Stallman
  2003-07-21 20:16   ` Satyaki Das
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Stallman @ 2003-07-21 19:39 UTC (permalink / raw)
  Cc: emacs-devel

Can you please follow the suggestions in etc/DEBUG for how
to debug an infinite loop?  With that info we might make headway.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 19:39 ` Richard Stallman
@ 2003-07-21 20:16   ` Satyaki Das
  2003-07-21 21:03     ` Stefan Monnier
  2003-07-23  7:14     ` Richard Stallman
  0 siblings, 2 replies; 10+ messages in thread
From: Satyaki Das @ 2003-07-21 20:16 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Can you please follow the suggestions in etc/DEBUG for how
> to debug an infinite loop?  With that info we might make headway.

OK, here is more info. I had actually done it earlier but forgot
to attach it to the last mail:

The infinite loop is in the function overlays_at (in buffer.c line
2432). The loop is the for loop starting on line 2501 (the second
for loop in the function) that starts with:

  for (tail = current_buffer->overlays_after; tail; tail = tail->next)

The loop never terminates since current_buffer->overlays_after is
a circular link list as demonstrated by the following gdb snippet:

Program received signal SIGTSTP, Stopped (user).
0x080eaf02 in overlays_at (pos=18, extend=0, vec_ptr=0xbfffc924, len_ptr=0xbfffc928, next_ptr=0xbfffc92c, prev_ptr=0x0, change_req=0) at buffer.c:2509
2509          startpos = OVERLAY_POSITION (start);
(gdb) print current_buffer->overlays_after
$11 = (struct Lisp_Overlay *) 0x8458360
(gdb) print current_buffer->overlays_after->next
$12 = (struct Lisp_Overlay *) 0x84583c4
(gdb) print current_buffer->overlays_after->next->next
$13 = (struct Lisp_Overlay *) 0x8458360
(gdb)


Satyaki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 20:16   ` Satyaki Das
@ 2003-07-21 21:03     ` Stefan Monnier
  2003-07-21 21:14       ` Satyaki Das
                         ` (2 more replies)
  2003-07-23  7:14     ` Richard Stallman
  1 sibling, 3 replies; 10+ messages in thread
From: Stefan Monnier @ 2003-07-21 21:03 UTC (permalink / raw)
  Cc: rms, emacs-devel

> > Can you please follow the suggestions in etc/DEBUG for how
> > to debug an infinite loop?  With that info we might make headway.
> 
> OK, here is more info. I had actually done it earlier but forgot
> to attach it to the last mail:
> 
> The infinite loop is in the function overlays_at (in buffer.c line
> 2432). The loop is the for loop starting on line 2501 (the second
> for loop in the function) that starts with:
> 
>   for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> 
> The loop never terminates since current_buffer->overlays_after is
> a circular link list as demonstrated by the following gdb snippet:

Since I was the last to fiddle with the overlays_after list,
I'm likely to be responsible for that.  But I've missed the beginning
of the thread.

Do you have a recipe to reproduce the problem ?
Also is it a new problem ?
Can you try and see if the problem was due to the change that occured
between 2003-07-08 and 2003-07-10 (I.e. can you reproduce it with
the 2003-07-10 version of CVS and does it disappear with the version
from 2003-07-08) ?


	Stefan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 21:03     ` Stefan Monnier
@ 2003-07-21 21:14       ` Satyaki Das
  2003-07-22 16:17         ` Stefan Monnier
  2003-07-21 21:29       ` Satyaki Das
  2003-07-22  0:09       ` Satyaki Das
  2 siblings, 1 reply; 10+ messages in thread
From: Satyaki Das @ 2003-07-21 21:14 UTC (permalink / raw)
  Cc: rms, emacs-devel

Stefan Monnier <monnier+gnu/emacs@cs.yale.edu> writes:

> Since I was the last to fiddle with the overlays_after list,
> I'm likely to be responsible for that.  But I've missed the beginning
> of the thread.
> 
> Do you have a recipe to reproduce the problem ?

The recipe to see the problem is:

  (1) Start emacs with:
        emacs -q --no-site-file

  (2) In the running emacs do:

        M-: (show-paren-mode 1) RET
        M-x replace-string RET {} RET 0 RET
        M-x replace-string RET M-p M-p C-e

> Also is it a new problem ?

May be not. I have seen a few random hangs in emacs when it was
trying to highlight parens in expressions. But none of them were
repeatable like this one.

> Can you try and see if the problem was due to the change that occured
> between 2003-07-08 and 2003-07-10 (I.e. can you reproduce it with
> the 2003-07-10 version of CVS and does it disappear with the version
> from 2003-07-08) ?

I will try this tonight and report back.

Thanks,
Satyaki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 21:03     ` Stefan Monnier
  2003-07-21 21:14       ` Satyaki Das
@ 2003-07-21 21:29       ` Satyaki Das
  2003-07-22  0:09       ` Satyaki Das
  2 siblings, 0 replies; 10+ messages in thread
From: Satyaki Das @ 2003-07-21 21:29 UTC (permalink / raw)
  Cc: rms, emacs-devel


[Stefan, I am really really sorry to drop the gnu/emacs from the
 email address, which will most probably screw up your mail
 filtering. These days Stanford makes us send email through their
 SMTP servers and that doesn't like the / character.]

Stefan Monnier <monnier+gnu/emacs@cs.yale.edu> writes:

> Since I was the last to fiddle with the overlays_after list,
> I'm likely to be responsible for that.  But I've missed the beginning
> of the thread.
> 
> Do you have a recipe to reproduce the problem ?

The recipe to see the problem is:

  (1) Start emacs with:
        emacs -q --no-site-file

  (2) In the running emacs do:

        M-: (show-paren-mode 1) RET
        M-x replace-string RET {} RET 0 RET
        M-x replace-string RET M-p M-p C-e

> Also is it a new problem ?

May be not. I have seen a few random hangs in emacs when it was
trying to highlight parens in expressions. But none of them were
repeatable like this one.

> Can you try and see if the problem was due to the change that occured
> between 2003-07-08 and 2003-07-10 (I.e. can you reproduce it with
> the 2003-07-10 version of CVS and does it disappear with the version
> from 2003-07-08) ?

I will try this tonight and report back.

Thanks,
Satyaki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 21:03     ` Stefan Monnier
  2003-07-21 21:14       ` Satyaki Das
  2003-07-21 21:29       ` Satyaki Das
@ 2003-07-22  0:09       ` Satyaki Das
  2 siblings, 0 replies; 10+ messages in thread
From: Satyaki Das @ 2003-07-22  0:09 UTC (permalink / raw)
  Cc: rms, emacs-devel

Stefan Monnier <monnier+gnu/emacs@cs.yale.edu> writes:

> Can you try and see if the problem was due to the change that occured
> between 2003-07-08 and 2003-07-10 (I.e. can you reproduce it with
> the 2003-07-10 version of CVS and does it disappear with the version
> from 2003-07-08) ?

I just checked and the problem does appear between those two
dates. The version from 2003-07-08 doesn't have the bug while the
version from 2003-07-10 has it. So I guess you are on the hook
:-).

Satyaki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 21:14       ` Satyaki Das
@ 2003-07-22 16:17         ` Stefan Monnier
  2003-07-22 16:53           ` Satyaki Das
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2003-07-22 16:17 UTC (permalink / raw)
  Cc: emacs-devel, Stefan Monnier, rms

> > Since I was the last to fiddle with the overlays_after list,
> > I'm likely to be responsible for that.  But I've missed the beginning
> > of the thread.
> > 
> > Do you have a recipe to reproduce the problem ?
> 
> The recipe to see the problem is:
> 
>   (1) Start emacs with:
>         emacs -q --no-site-file
> 
>   (2) In the running emacs do:
> 
>         M-: (show-paren-mode 1) RET
>         M-x replace-string RET {} RET 0 RET
>         M-x replace-string RET M-p M-p C-e
> 
> > Also is it a new problem ?
> 
> May be not. I have seen a few random hangs in emacs when it was
> trying to highlight parens in expressions. But none of them were
> repeatable like this one.
> 
> > Can you try and see if the problem was due to the change that occured
> > between 2003-07-08 and 2003-07-10 (I.e. can you reproduce it with
> > the 2003-07-10 version of CVS and does it disappear with the version
> > from 2003-07-08) ?
> 
> I will try this tonight and report back.

I've just installed a patch in minibuf.c that could fix the problem.
Can you try it again ?


	Stefan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-22 16:17         ` Stefan Monnier
@ 2003-07-22 16:53           ` Satyaki Das
  0 siblings, 0 replies; 10+ messages in thread
From: Satyaki Das @ 2003-07-22 16:53 UTC (permalink / raw)


Stefan Monnier <monnier+gnu/emacs@cs.yale.edu> writes:

> I've just installed a patch in minibuf.c that could fix the problem.
> Can you try it again ?

I tried it and the fix works.

Thanks,
Satyaki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: infinite loop with show-paren-mode turned on
  2003-07-21 20:16   ` Satyaki Das
  2003-07-21 21:03     ` Stefan Monnier
@ 2003-07-23  7:14     ` Richard Stallman
  1 sibling, 0 replies; 10+ messages in thread
From: Richard Stallman @ 2003-07-23  7:14 UTC (permalink / raw)
  Cc: emacs-devel

Thanks.  That might get us started.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2003-07-23  7:14 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-07-20  7:29 infinite loop with show-paren-mode turned on Satyaki Das
2003-07-21 19:39 ` Richard Stallman
2003-07-21 20:16   ` Satyaki Das
2003-07-21 21:03     ` Stefan Monnier
2003-07-21 21:14       ` Satyaki Das
2003-07-22 16:17         ` Stefan Monnier
2003-07-22 16:53           ` Satyaki Das
2003-07-21 21:29       ` Satyaki Das
2003-07-22  0:09       ` Satyaki Das
2003-07-23  7:14     ` Richard Stallman

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).