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

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

bug#18403: 24.4.50; emacsclient sometimes hangs on exit with Lucid GUI c


From: Dmitry Antipov
Subject: bug#18403: 24.4.50; emacsclient sometimes hangs on exit with Lucid GUI client
Date: Mon, 08 Sep 2014 18:18:31 +0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0

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





reply via email to

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