emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Multiple runs of menu-bar-update-hook


From: Marshall, Simon
Subject: RE: Multiple runs of menu-bar-update-hook
Date: Fri, 11 Aug 2006 10:28:19 +0100

>     You can see that both calls have come via redisplay(); 
>     the difference is
>     their callers.  (Of course both runs of the hook are 
>     unnecessary, they have
>     been carried out because windows_or_buffers_changed = 1.) 
> 
> Normally, windows_or_buffers_changed gets cleared near the 
> end of redisplay_internal.  Did the first call to 
> redisplay_internal do that?
> If not, why not?
> 
> If it did that, where did it get set again before the second 
> call to redisplay?

Well, debugging gets a bit weird here.  I had to debug it from a second X
session, rather than in the same X session in which the debugged emacs is
displayed.  Otherwise, having the watchpoint seemed to interfere with the
sequence of events somehow, and the first break in update_menu_bar() never
occurred.

Anyhow, with the usual breakpoints wherever the hook is run, and mouse-1 at
point in the selected-frame where the buffer is shown in the other frame, I
get:

(gdb) watch windows_or_buffers_changed
Hardware watchpoint 6: windows_or_buffers_changed
(gdb) c
Continuing.
Hardware watchpoint 6: windows_or_buffers_changed

Old value = 0
New value = 1
0x001b0868 in modify_overlay (buf=0x481c00, start=27, end=27) at
buffer.c:3654
(gdb) list
3649         we must do other windows.  */
3650      if (buf != XBUFFER (XWINDOW (selected_window)->buffer))
3651        windows_or_buffers_changed = 1;
3652      /* If multiple windows show this buffer, we must do other windows.
*/
3653      else if (buffer_shared > 1)
3654        windows_or_buffers_changed = 1;
3655      /* If we modify an overlay at the end of the buffer, we cannot
3656         be sure that window end is still valid.  */
3657      else if (end >= ZV && start <= ZV)
3658        windows_or_buffers_changed = 1;
(gdb) p buffer_shared
$1 = 2
(gdb) where
#0  0x001b0868 in modify_overlay (buf=0x481c00, start=27, end=27) at
buffer.c:3654
#1  0x001b0f9c in Fmove_overlay (overlay=5796370, beg=216, end=216,
buffer=4725764) at buffer.c:3744
#2  0x0024ab58 in Ffuncall (nargs=4, args=0xffbedaf8) at eval.c:2992
#3  0x002a2cb8 in Fbyte_code (bytestr=3724931, vector=3724948, maxdepth=32)
at bytecode.c:679
#4  0x0024b5b8 in funcall_lambda (fun=3724876, nargs=4,
arg_vector=0xffbeddc4) at eval.c:3169
#5  0x0024ad30 in Ffuncall (nargs=5, args=0xffbeddc0) at eval.c:3028
#6  0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#7  0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#8  0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#9  0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#10 0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#11 0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#12 0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#13 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#14 0x0017b290 in command_loop_1 () at keyboard.c:1790
#15 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#16 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#17 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#18 0x00178d50 in command_loop () at keyboard.c:1305
#19 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#20 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#21 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"move-overlay" (0x587212)
"mouse-move-drag-overlay" (0x587212)
"mouse-drag-track" (0x67e525)
"mouse-drag-region" (0x67e525)
"call-interactively" (0x737301)
(gdb) c
Continuing.

Breakpoint 5, update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0)
at xdisp.c:9195
(gdb) where
#0  update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0) at
xdisp.c:9195
#1  0x000806ac in prepare_menu_bars () at xdisp.c:9073
#2  0x00085810 in redisplay_internal (preserve_echo_area=1) at xdisp.c:10902
#3  0x0008745c in redisplay_preserve_echo_area (from_where=6) at
xdisp.c:11512
#4  0x001809cc in tracking_off (old_value=4687873) at keyboard.c:3474
#5  0x0024bf70 in unbind_to (count=27, value=4687873) at eval.c:3337
#6  0x00180a80 in Ftrack_mouse (args=3725805) at keyboard.c:3499
#7  0x00248fe8 in Feval (form=3725797) at eval.c:2260
#8  0x00244430 in Fprogn (args=3725789) at eval.c:435
#9  0x0024b554 in funcall_lambda (fun=3725773, nargs=0,
arg_vector=0xffbeddc4) at eval.c:3162
#10 0x0024ae14 in Ffuncall (nargs=1, args=0xffbeddc0) at eval.c:3039
#11 0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#12 0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#13 0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#14 0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#15 0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#16 0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#17 0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#18 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#19 0x0017b290 in command_loop_1 () at keyboard.c:1790
#20 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#21 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#22 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#23 0x00178d50 in command_loop () at keyboard.c:1305
#24 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#25 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#26 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"track-mouse" (0x38d9ed)
0x38d9cd Lisp type 5
"mouse-drag-track" (0x67e525)
"mouse-drag-region" (0x67e525)
"call-interactively" (0x737301)
(gdb) c
Continuing.

Breakpoint 5, update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0)
at xdisp.c:9195
(gdb) where
#0  update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0) at
xdisp.c:9195
#1  0x000806ac in prepare_menu_bars () at xdisp.c:9073
#2  0x00085810 in redisplay_internal (preserve_echo_area=0) at xdisp.c:10902
#3  0x00083ecc in redisplay () at xdisp.c:10491
#4  0x0017dba4 in read_char (commandflag=1, nmaps=2, maps=0xffbee3d8,
prev_event=4687873, used_mouse_menu=0xffbee52c, end_time=0x0) at
keyboard.c:2555
#5  0x0018dd50 in read_key_sequence (keybuf=0xffbee6d8, bufsize=30,
prompt=4687873, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:8902
#6  0x00179668 in command_loop_1 () at keyboard.c:1535
#7  0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#8  0x00178dd8 in command_loop_2 () at keyboard.c:1326
#9  0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#10 0x00178d50 in command_loop () at keyboard.c:1305
#11 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#12 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#13 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794
(gdb) c
Continuing.
Hardware watchpoint 6: windows_or_buffers_changed

Old value = 1
New value = 0
redisplay_internal (preserve_echo_area=0) at xdisp.c:11409
(gdb) where
#0  redisplay_internal (preserve_echo_area=0) at xdisp.c:11409
#1  0x00083ecc in redisplay () at xdisp.c:10491
#2  0x0017dba4 in read_char (commandflag=1, nmaps=2, maps=0xffbee3d8,
prev_event=4687873, used_mouse_menu=0xffbee52c, end_time=0x0) at
keyboard.c:2555
#3  0x0018dd50 in read_key_sequence (keybuf=0xffbee6d8, bufsize=30,
prompt=4687873, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:8902
#4  0x00179668 in command_loop_1 () at keyboard.c:1535
#5  0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#6  0x00178dd8 in command_loop_2 () at keyboard.c:1326
#7  0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#8  0x00178d50 in command_loop () at keyboard.c:1305
#9  0x00178280 in recursive_edit_1 () at keyboard.c:1003
#10 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#11 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794
(gdb) c
Continuing.

The first break in update_menu_bar() isn't quite the same C or Lisp
backtrace as before, although possibly that is because the sequence of
events was slightly different (since I did not have to move the mouse from
the debugged emacs to the debugging emacs).  Otherwise, it seems the same as
before where the sequence is (a) set windows_or_buffers_changed while
evaling Lisp, (b) run hook while redisplay while tracking the mouse, (c) run
hook while redisplay at top-level, (d) reset windows_or_buffers_changed
while redisplay at top-level.

In trying to anwswer your question as to why redisplay_internal() did not
reset windows_or_buffers_changed, I tried breakpoints in various places in
redisplay_internal() and redisplay().  This proved difficult, as it was not
easy to put a breakpoint where it would not repeatedly be triggered.  In the
end, I did not use any extra breakpoints, but the same breakpoints and
mouse-1 as with the above backtrace gave me:

Hardware watchpoint 6: windows_or_buffers_changed

Old value = 0
New value = 1
0x001b0868 in modify_overlay (buf=0x481c00, start=34, end=34) at
buffer.c:3654
(gdb) list
3649         we must do other windows.  */
3650      if (buf != XBUFFER (XWINDOW (selected_window)->buffer))
3651        windows_or_buffers_changed = 1;
3652      /* If multiple windows show this buffer, we must do other windows.
*/
3653      else if (buffer_shared > 1)
3654        windows_or_buffers_changed = 1;
3655      /* If we modify an overlay at the end of the buffer, we cannot
3656         be sure that window end is still valid.  */
3657      else if (end >= ZV && start <= ZV)
3658        windows_or_buffers_changed = 1;
(gdb) p buffer_shared
$5 = 2
(gdb) where
#0  0x001b0868 in modify_overlay (buf=0x481c00, start=34, end=34) at
buffer.c:3654
#1  0x001b0f9c in Fmove_overlay (overlay=5796370, beg=272, end=272,
buffer=4725764) at buffer.c:3744
#2  0x0024ab58 in Ffuncall (nargs=4, args=0xffbedaf8) at eval.c:2992
#3  0x002a2cb8 in Fbyte_code (bytestr=3724931, vector=3724948, maxdepth=32)
at bytecode.c:679
#4  0x0024b5b8 in funcall_lambda (fun=3724876, nargs=4,
arg_vector=0xffbeddc4) at eval.c:3169
#5  0x0024ad30 in Ffuncall (nargs=5, args=0xffbeddc0) at eval.c:3028
#6  0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#7  0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#8  0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#9  0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#10 0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#11 0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#12 0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#13 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#14 0x0017b290 in command_loop_1 () at keyboard.c:1790
#15 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#16 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#17 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#18 0x00178d50 in command_loop () at keyboard.c:1305
#19 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#20 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#21 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"move-overlay" (0x587212)
"mouse-move-drag-overlay" (0x587212)
"mouse-drag-track" (0x553c05)
"mouse-drag-region" (0x553c05)
"call-interactively" (0x737301)
(gdb) c
Continuing.

Breakpoint 5, update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0)
at xdisp.c:9195
(gdb) where
#0  update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0) at
xdisp.c:9195
#1  0x000806ac in prepare_menu_bars () at xdisp.c:9073
#2  0x00085810 in redisplay_internal (preserve_echo_area=1) at xdisp.c:10902
#3  0x0008745c in redisplay_preserve_echo_area (from_where=6) at
xdisp.c:11512
#4  0x001809cc in tracking_off (old_value=4687873) at keyboard.c:3474
#5  0x0024bf70 in unbind_to (count=27, value=4687873) at eval.c:3337
#6  0x00180a80 in Ftrack_mouse (args=3725805) at keyboard.c:3499
#7  0x00248fe8 in Feval (form=3725797) at eval.c:2260
#8  0x00244430 in Fprogn (args=3725789) at eval.c:435
#9  0x0024b554 in funcall_lambda (fun=3725773, nargs=0,
arg_vector=0xffbeddc4) at eval.c:3162
#10 0x0024ae14 in Ffuncall (nargs=1, args=0xffbeddc0) at eval.c:3039
#11 0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#12 0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#13 0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#14 0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#15 0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#16 0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#17 0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#18 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#19 0x0017b290 in command_loop_1 () at keyboard.c:1790
#20 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#21 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#22 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#23 0x00178d50 in command_loop () at keyboard.c:1305
#24 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#25 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#26 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"track-mouse" (0x38d9ed)
0x38d9cd Lisp type 5
"mouse-drag-track" (0x553c05)
"mouse-drag-region" (0x553c05)
"call-interactively" (0x737301)
(gdb) c
Continuing.
Hardware watchpoint 6: windows_or_buffers_changed

Old value = 1
New value = 0
redisplay_internal (preserve_echo_area=1) at xdisp.c:11409
(gdb) where
#0  redisplay_internal (preserve_echo_area=1) at xdisp.c:11409
#1  0x0008745c in redisplay_preserve_echo_area (from_where=6) at
xdisp.c:11512
#2  0x001809cc in tracking_off (old_value=4687873) at keyboard.c:3474
#3  0x0024bf70 in unbind_to (count=27, value=4687873) at eval.c:3337
#4  0x00180a80 in Ftrack_mouse (args=3725805) at keyboard.c:3499
#5  0x00248fe8 in Feval (form=3725797) at eval.c:2260
#6  0x00244430 in Fprogn (args=3725789) at eval.c:435
#7  0x0024b554 in funcall_lambda (fun=3725773, nargs=0,
arg_vector=0xffbeddc4) at eval.c:3162
#8  0x0024ae14 in Ffuncall (nargs=1, args=0xffbeddc0) at eval.c:3039
#9  0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#10 0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#11 0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#12 0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#13 0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#14 0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#15 0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#16 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#17 0x0017b290 in command_loop_1 () at keyboard.c:1790
#18 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#19 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#20 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#21 0x00178d50 in command_loop () at keyboard.c:1305
#22 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#23 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#24 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"track-mouse" (0x38d9ed)
0x38d9cd Lisp type 5
"mouse-drag-track" (0x553c05)
"mouse-drag-region" (0x553c05)
"call-interactively" (0x737301)
(gdb) c
Continuing.
Hardware watchpoint 6: windows_or_buffers_changed

Old value = 0
New value = 1
0x001b0868 in modify_overlay (buf=0x481c00, start=34, end=34) at
buffer.c:3654
(gdb) where
#0  0x001b0868 in modify_overlay (buf=0x481c00, start=34, end=34) at
buffer.c:3654
#1  0x001b14b0 in Fdelete_overlay (overlay=5796370) at buffer.c:3818
#2  0x0024aaa4 in Ffuncall (nargs=2, args=0xffbeddc0) at eval.c:2982
#3  0x002a2cb8 in Fbyte_code (bytestr=3725379, vector=3725396, maxdepth=48)
at bytecode.c:679
#4  0x0024b5b8 in funcall_lambda (fun=3725324, nargs=2,
arg_vector=0xffbee094) at eval.c:3169
#5  0x0024ad30 in Ffuncall (nargs=3, args=0xffbee090) at eval.c:3028
#6  0x002a2cb8 in Fbyte_code (bytestr=3724235, vector=3724252, maxdepth=40)
at bytecode.c:679
#7  0x0024b5b8 in funcall_lambda (fun=3724196, nargs=1,
arg_vector=0xffbee384) at eval.c:3169
#8  0x0024ad30 in Ffuncall (nargs=2, args=0xffbee380) at eval.c:3028
#9  0x00243528 in Fcall_interactively (function=7566081,
record_flag=4687873, keys=4747268) at callint.c:880
#10 0x00190a7c in Fcommand_execute (cmd=7566081, record_flag=4687873,
keys=4687873, special=4687873) at keyboard.c:9797
#11 0x0017b290 in command_loop_1 () at keyboard.c:1790
#12 0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#13 0x00178dd8 in command_loop_2 () at keyboard.c:1326
#14 0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#15 0x00178d50 in command_loop () at keyboard.c:1305
#16 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#17 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#18 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794

Lisp Backtrace:
"delete-overlay" (0x587212)
"mouse-drag-track" (0x553c05)
"mouse-drag-region" (0x553c05)
"call-interactively" (0x737301)
(gdb) c
Continuing.

Breakpoint 5, update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0)
at xdisp.c:9195
(gdb) where
#0  update_menu_bar (f=0x6d9200, save_match_data=0, hooks_run=0) at
xdisp.c:9195
#1  0x000806ac in prepare_menu_bars () at xdisp.c:9073
#2  0x00085810 in redisplay_internal (preserve_echo_area=0) at xdisp.c:10902
#3  0x00083ecc in redisplay () at xdisp.c:10491
#4  0x0017dba4 in read_char (commandflag=1, nmaps=2, maps=0xffbee3d8,
prev_event=4687873, used_mouse_menu=0xffbee52c, end_time=0x0) at
keyboard.c:2555
#5  0x0018dd50 in read_key_sequence (keybuf=0xffbee6d8, bufsize=30,
prompt=4687873, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:8902
#6  0x00179668 in command_loop_1 () at keyboard.c:1535
#7  0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#8  0x00178dd8 in command_loop_2 () at keyboard.c:1326
#9  0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#10 0x00178d50 in command_loop () at keyboard.c:1305
#11 0x00178280 in recursive_edit_1 () at keyboard.c:1003
#12 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#13 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794
(gdb) c
Continuing.
Hardware watchpoint 6: windows_or_buffers_changed

Old value = 1
New value = 0
redisplay_internal (preserve_echo_area=0) at xdisp.c:11409
(gdb) where
#0  redisplay_internal (preserve_echo_area=0) at xdisp.c:11409
#1  0x00083ecc in redisplay () at xdisp.c:10491
#2  0x0017dba4 in read_char (commandflag=1, nmaps=2, maps=0xffbee3d8,
prev_event=4687873, used_mouse_menu=0xffbee52c, end_time=0x0) at
keyboard.c:2555
#3  0x0018dd50 in read_key_sequence (keybuf=0xffbee6d8, bufsize=30,
prompt=4687873, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:8902
#4  0x00179668 in command_loop_1 () at keyboard.c:1535
#5  0x00246eb4 in internal_condition_case (bfun=0x17910c <command_loop_1>,
handlers=4752009, hfun=0x178734 <cmd_error>) at eval.c:1469
#6  0x00178dd8 in command_loop_2 () at keyboard.c:1326
#7  0x00246644 in internal_catch (tag=4746241, func=0x178dac
<command_loop_2>, arg=4687873) at eval.c:1210
#8  0x00178d50 in command_loop () at keyboard.c:1305
#9  0x00178280 in recursive_edit_1 () at keyboard.c:1003
#10 0x001784e0 in Frecursive_edit () at keyboard.c:1064
#11 0x001760a4 in main (argc=2, argv=0xffbeecb4) at emacs.c:1794
(gdb) c

This time, the sequence is (a) set windows_or_buffers_changed while evaling
Lisp, (b) run hook while redisplay while tracking the mouse, (c) reset
windows_or_buffers_changed while tracking the mouse, (d) set
windows_or_buffers_changed, (e) run hook while redisplay at top-level.

Does this help any?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]