Subject: Re: bug#55726: 28.1; emacs becomes unresponsive to input

From: "Jay Berkenbilt" <[email-masked]>
Date: Sat, 18 Jun 2022 15:38:09 -0400

The issue finally happened again. I was exiting M-x ediff-revision. I
think ediff definitely seems to increase the odds.

> On Mon, May 30, 2022, at 9:57 AM, Eli Zaretskii wrote:
> > > Cc: [email-masked]
> > > Date: Mon, 30 May 2022 08:58:26 -0400
> > > From: "Jay Berkenbilt" <[email-masked]>
> > >
> >> . . .
> > >
> > > My emacs is built from source using default configure options, so I was
> > > able to attach my running emacs process in gdb and get a stack trace.
> > > Here is the stack trace:
> > >
> > > . . .
> >
> > This says that Emacs's main thread is just waiting for input, either
> > from the keyboard or from any other sources, like the window-system or
> > subprocesses.
> >
> > If this session is still alive under GDB, please type this command:
> >
> >   (gdb) thread apply all bt
> >
> > and show the output -- it will tell us what the other threads are
> > doing.  If you already killed that session, then do the above next
> > time it happens.

Attaching to process 3403
[New LWP 3410]
[New LWP 3503]
[New LWP 3621]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
pselect64_syscall (sigmask=<optimized out>, timeout=<optimized out>, exceptfds=0x0, writefds=0x7ffdfac20990, readfds=0x7ffdfac20910, nfds=19) at ../sysdeps/unix/sysv/linux/pselect.c:34
34	../sysdeps/unix/sysv/linux/pselect.c: No such file or directory.

Thread 4 (Thread 0x7f7bf0917640 (LWP 3621) "dconf worker"):
#0  0x00007f7bf6427d7f in __GI___poll (fds=0x55c3d85854c0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f7bf7bcc696 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f7bf7b753c3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f7bf0a3133d in  () at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
#4  0x00007f7bf7ba6a41 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f7bf63a3b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#6  0x00007f7bf6435a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 3 (Thread 0x7f7bf12bd640 (LWP 3503) "gdbus"):
#0  0x00007f7bf6427d7f in __GI___poll (fds=0x55c3d843aea0, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f7bf7bcc696 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f7bf7b77293 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f7bf7dd2c1a in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#4  0x00007f7bf7ba6a41 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f7bf63a3b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#6  0x00007f7bf6435a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 2 (Thread 0x7f7bf1b36640 (LWP 3410) "gmain"):
#0  0x00007f7bf6427d7f in __GI___poll (fds=0x55c3d8055490, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f7bf7bcc696 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f7bf7b753c3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f7bf7b75411 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f7bf7ba6a41 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f7bf63a3b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#6  0x00007f7bf6435a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 1 (Thread 0x7f7bf358c000 (LWP 3403) "emacs"):
#0  pselect64_syscall (sigmask=<optimized out>, timeout=<optimized out>, exceptfds=0x0, writefds=0x7ffdfac20990, readfds=0x7ffdfac20910, nfds=19) at ../sysdeps/unix/sysv/linux/pselect.c:34
#1  __pselect (nfds=19, readfds=0x7ffdfac20910, writefds=0x7ffdfac20990, exceptfds=0x0, timeout=<optimized out>, sigmask=<optimized out>) at ../sysdeps/unix/sysv/linux/pselect.c:56
#2  0x000055c3d77cf035 in really_call_select (arg=0x7ffdfac20800) at thread.c:596
#3  0x000055c3d77cfe73 in flush_stack_call_func (arg=0x7ffdfac20800, func=0x55c3d77cefc0 <really_call_select>) at /home/ejb/tmp/net/emacs-28.1/src/lisp.h:3834
#4  thread_select (func=<optimized out>, max_fds=max_fds@entry=19, rfds=rfds@entry=0x7ffdfac20910, wfds=wfds@entry=0x7ffdfac20990, efds=efds@entry=0x0, timeout=timeout@entry=0x7ffdfac20f50, sigmask=0x0) at thread.c:628
#5  0x000055c3d77ed8d1 in xg_select (fds_lim=19, rfds=rfds@entry=0x7ffdfac21060, wfds=wfds@entry=0x7ffdfac210e0, efds=efds@entry=0x0, timeout=timeout@entry=0x7ffdfac20f50, sigmask=sigmask@entry=0x0) at xgselect.c:147
#6  0x000055c3d77acb15 in wait_reading_process_output (time_limit=time_limit@entry=0, nsecs=nsecs@entry=0, read_kbd=read_kbd@entry=-1, do_display=true, wait_for_cell=wait_for_cell@entry=0x0, wait_proc=wait_proc@entry=0x0, just_wait_proc=0) at process.c:5591
#7  0x000055c3d76ede6c in kbd_buffer_get_event (end_time=0x0, used_mouse_menu=0x7ffdfac218eb, kbp=<synthetic pointer>) at keyboard.c:3926
#8  read_event_from_main_queue (used_mouse_menu=0x7ffdfac218eb, local_getcjmp=0x7ffdfac214f0, end_time=0x0) at keyboard.c:2198
#9  read_decoded_event_from_main_queue (used_mouse_menu=<optimized out>, prev_event=<optimized out>, local_getcjmp=<optimized out>, end_time=<optimized out>) at keyboard.c:2262
#10 read_char (commandflag=1, map=0x55c3d96ec313, prev_event=0x0, used_mouse_menu=0x7ffdfac218eb, end_time=0x0) at keyboard.c:2892
#11 0x000055c3d76f04d4 in read_key_sequence (keybuf=<optimized out>, prompt=0x0, dont_downcase_last=<optimized out>, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=<optimized out>) at keyboard.c:9635
#12 0x000055c3d76f1e9c in command_loop_1 () at keyboard.c:1392
#13 0x000055c3d7761a47 in internal_condition_case (bfun=bfun@entry=0x55c3d76f1ca0 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x55c3d76e8490 <cmd_error>) at eval.c:1450
#14 0x000055c3d76e24be in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1133
#15 0x000055c3d7761989 in internal_catch (tag=tag@entry=0xe850, func=func@entry=0x55c3d76e2490 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1181
#16 0x000055c3d76e2459 in command_loop () at keyboard.c:1111
#17 0x000055c3d76e8080 in recursive_edit_1 () at keyboard.c:720
#18 0x000055c3d76e83d9 in Frecursive_edit () at keyboard.c:803
#19 0x000055c3d75f7054 in main (argc=1, argv=<optimized out>) at emacs.c:2354
Detaching from program: /usr/local/emacs-28.1/bin/emacs-28.1, process 3403
[Inferior 1 (process 3403) detached]

> It is also important to know whether Emacs is stuck or inflooping.  Do
> you happen to know if it was using the CPU while in this state?  The
> strategy to dig into the problem depends on whether Emacs hangs (which
> might mean some kind of deadlock), or infloops in some code.

It was hanging. CPU was 0% on all the threads.

The suggestion of running emacsclient -t to save state was very
helpful. I used emacsclient -t, M-x desktop-save, M-x kill-emacs. Then
I started a new emacs and did M-x desktop-read to restore my previous
state.