[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 23.0.60; restarting X causes emacsclient display bugs
From: |
Dan Nicolaescu |
Subject: |
Re: 23.0.60; restarting X causes emacsclient display bugs |
Date: |
Sun, 03 Feb 2008 06:12:59 -0800 |
Tom Rauchenwald <address@hidden> writes:
> Hi,
>
> I try running emacs inside screen, and open frames to it with emacsclient.
> This works fine, until I need to restart the X server for whatever
> reason. newly created X frames don't update properly when scrolling
> (part of the text stays), the mode-line faces are not right
> (background is black) and the modeline isn't cleared before it
> updates, so after switching a few buffers only garbage is in it.
>
> To reproduce:
> 1) start emacs in a detached screen
> screen -dmS emacsserver emacs -nw -Q --eval '(setq server-name "foo")'
> -f server-start
> 2) open an X frame
> emacsclient -s foo -c -d :0
> 3) close the X frame and restart X
> 4) open an X frame (the first try always fails for me, so you may need
> to do it twice
> emacsclient -s foo -c -d :0
>
> This frame shows various redisplay problems, for example when browsing
> through a buffer with C-n (here only half of the screen is updated,
> but it seems to be connected to scoll-conservatively).
> Note that tty frames (emacsclient -t) work fine.
>
> Can anyone reproduce this? What other information do you need?
Thank you. Here's a simpler way to reproduce this:
emacs -Q -nw -f server-start
from another xterm:
emacsclient -c -d :0
from yet another xterm:
xkill
and click on the X11 frame created by emacsclient
(gdb) bt
#0 internal_condition_case_2 (bfun=0x81699d0 <Frun_hook_with_args>, nargs=2,
args=0xbfba9384, handlers=137657705, hfun=0x805d5d0 <delete_frame_handler>)
at /home/dann/emacs/src/eval.c:1568
#1 0x0805def1 in Fdelete_frame (frame=146496652, force=137657705)
at /home/dann/emacs/src/frame.c:1412
#2 0x080d8fb1 in x_connection_closed (dpy=0x858e9c8,
error_message=<value optimized out>)
at /home/dann/emacs/src/xterm.c:8054
#3 0x080d906b in x_io_error_quitter (display=0x858e9c8)
at /home/dann/emacs/src/xterm.c:8202
#4 0x00826fc2 in _XIOError () from /usr/lib/libX11.so.6
#5 0x0082dbb9 in ?? () from /usr/lib/libX11.so.6
#6 0x0082df9f in _XEventsQueued () from /usr/lib/libX11.so.6
#7 0x008176d2 in XPending () from /usr/lib/libX11.so.6
#8 0x080d90fe in XTread_socket (terminal=0x85d3898, expected=1,
hold_quit=0xbfba9c64)
at /home/dann/emacs/src/xterm.c:7366
#9 0x08105adf in read_avail_input (expected=1)
at /home/dann/emacs/src/keyboard.c:7110
#10 0x08105c0a in handle_async_input ()
at /home/dann/emacs/src/keyboard.c:7340
#11 0x08105dd1 in input_available_signal (signo=29)
at /home/dann/emacs/src/keyboard.c:7382
#12 <signal handler called>
#13 0x00110402 in __kernel_vsyscall ()
#14 0x00cbb5bd in ___newselect_nocancel () from /lib/libc.so.6
#15 0x08195325 in select_wrapper (n=1, rfd=0x0, wfd=0xbfbaa1e8, xfd=0x0,
tmo=0xbfbaa318)
at /home/dann/emacs/src/process.c:4240
#16 0x08198530 in wait_reading_process_output (time_limit=30, microsecs=0,
read_kbd=-1,
do_display=1, wait_for_cell=137657657, wait_proc=0x0, just_wait_proc=0)
at /home/dann/emacs/src/process.c:4610
#17 0x08052ce0 in sit_for (timeout=240, reading=1, do_display=1)
at /home/dann/emacs/src/dispnew.c:6608
#18 0x0810af8d in read_char (commandflag=1, nmaps=2, maps=0xbfbaa5f0,
prev_event=137657657, used_mouse_menu=0xbfbaa698, end_time=0x0)
at /home/dann/emacs/src/keyboard.c:2969
#19 0x0810ceca in read_key_sequence (keybuf=0xbfbaa734, bufsize=30,
prompt=137657657,
dont_downcase_last=0, can_return_switch_frame=1, fix_current_buffer=1)
at /home/dann/emacs/src/keyboard.c:9460
#20 0x0810ed63 in command_loop_1 ()
at /home/dann/emacs/src/keyboard.c:1655
#21 0x08166ed2 in internal_condition_case (bfun=0x810ebc0 <command_loop_1>,
handlers=137701849, hfun=0x8109140 <cmd_error>)
at /home/dann/emacs/src/eval.c:1494
#22 0x081085b3 in command_loop_2 ()
at /home/dann/emacs/src/keyboard.c:1370
#23 0x08166f8a in internal_catch (tag=137696697, func=0x8108590
<command_loop_2>,
arg=137657657) at /home/dann/emacs/src/eval.c:1230
#24 0x08108fa7 in command_loop ()
at /home/dann/emacs/src/keyboard.c:1349
#25 0x0810930a in recursive_edit_1 ()
at /home/dann/emacs/src/keyboard.c:958
#26 0x08109441 in Frecursive_edit ()
at /home/dann/emacs/src/keyboard.c:1020
#27 0x080feb87 in main (argc=3, argv=0xbfbaae34)
at /home/dann/emacs/src/emacs.c:1793
The abort is because of this code in internal_condition_case_2:
#if HAVE_X_WINDOWS
if (x_catching_errors ())
abort ();
#endif
x_connection_closed does an:
x_catch_errors (dpy);
but the condition that x_catching_errors looks for is different.
Can someone that knows this code please look at this?