The original issue of the hanging emacsclient with Lucid is fixed in trunk, bzr r117565. I am closing this bug. Thank you. On Mon, Sep 8, 2014 at 3:33 PM, Christoph wrote: > One other thing I noticed: > > after quitting the GUI frame, Ctrl-C to break the "waiting" loop and > reconnecting with a terminal emacsclient, the *Messages* buffer shows the > following error: > > server-delete-client: X protocol error: BadFont (invalid Font parameter) > on protocol request 46 > > Not sure if that helps at all. > > On Mon, Sep 8, 2014 at 8:18 AM, Dmitry Antipov > wrote: > >> On 09/08/2014 05:44 PM, Paul Eggert wrote: >> >> I cannot reproduce this new problem on Ubuntu 14.04, configuring trunk >>> bzr 117843 --with-x-toolkit=lucid. >>> x_delete_terminal calls XtCloseDisplay, and then calls emacs_close >>> (dpyinfo->connection), and >>> the 'close' returns 0. >>> >>> Perhaps you configured with some other toolkit? That might explain the >>> discrepancy. >>> >> >> No, this is Lucid but with your revert patch applied. >> >> Does it fix things for you if you add a line 'dpyinfo->connection = -1;' >>> after the existing line >>> 'dpyinfo->display = 0;' in xterm.c's x_connection_closed? Though that >>> might cause a file descriptor >>> leak; I'm not fully following what's going on here, since I can't >>> reproduce the new problem. >>> >> >> No, because x_connection_closed is not called. >> >> There is another example of a debugging session, clearly showing >> double-close problem: >> >> ;; 1) Run ./src/emacs -Q --daemon >> ;; 2) Run ./lib-src/emacsclient -c >> ;; 3) Attach gdb -p to daemon process >> >> (gdb) b close >> Breakpoint 1 at 0x3290ce6c10: close. (4 locations) >> (gdb) b x_connection_closed >> Breakpoint 2 at 0x541d10: file ../../trunk/src/xterm.c, line 8425. >> (gdb) b die >> Breakpoint 3 at 0x5f6d05: file ../../trunk/src/alloc.c, line 7116. >> (gdb) c >> Continuing. >> >> ;; 4) C-x C-c in emacsclient frame >> >> Breakpoint 1, close () at ../sysdeps/unix/syscall-template.S:81 >> 81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) >> (gdb) n >> close () at ../sysdeps/unix/syscall-template.S:82 >> 82 ret >> (gdb) >> xcb_disconnect (c=0x13825e0) at xcb_conn.c:320 >> 320 pthread_mutex_destroy(&c->iolock); >> (gdb) p c->fd ;; X >> connection fd is 8 >> $1 = 8 >> (gdb) c >> Continuing. >> >> Breakpoint 1, close () at ../sysdeps/unix/syscall-template.S:81 >> 81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) >> (gdb) n >> 83 T_PSEUDO_END (SYSCALL_SYMBOL) >> (gdb) >> posix_close (fd=8, flag=1) at ../../trunk/src/sysdep.c:2386 ;; >> We're closing X connection fd again >> 2386 } >> (gdb) c >> >> Continuing. >> Breakpoint 3, die (msg=0x717274 "errno != EBADF || fd < 0", file=0x7170e0 >> "../../trunk/src/sysdep.c", line=2408) >> at ../../trunk/src/alloc.c:7116 >> 7116 fprintf (stderr, "\r\n%s:%d: Emacs fatal error: assertion >> failed: %s\r\n", >> (gdb) bt 6 >> #0 0x00000000005f6d05 in die (msg=0x717274 "errno != EBADF || fd < 0", >> file=0x7170e0 "../../trunk/src/sysdep.c", line=2408) >> at ../../trunk/src/alloc.c:7116 >> #1 0x0000000000598480 in emacs_close (fd=8) at >> ../../trunk/src/sysdep.c:2408 ;; This is it >> #2 0x000000000054784b in x_delete_terminal (terminal=0xfa0218) at >> ../../trunk/src/xterm.c:11382 >> #3 0x000000000051f8b6 in Fdelete_terminal (terminal=..., force=...) at >> ../../trunk/src/terminal.c:348 >> #4 0x00000000004290ba in delete_frame (frame=..., force=...) at >> ../../trunk/src/frame.c:1691 >> #5 0x0000000000429630 in Fdelete_frame (frame=..., force=...) at >> ../../trunk/src/frame.c:1801 >> >> Dmitry >> > >