Subject: bug#39081: 26.3; Emacs hangs if external SCIM input method is killed

From: Vladimir Nikishkin <[email-masked]>
Date: Sun, 12 Jan 2020 14:40:32 +0800

Below is the thread apply all bt result for a hanged, unoptimized,
Emacs. I attached gdb after start, but before killing SCIM:

lockywolf@delllaptop:~$ pgrep emacs
1437
lockywolf@delllaptop:~$ gdb -p $(pgrep emacs)
/usr/share/gdb/python/gdb/command/prompt.py:48: SyntaxWarning: "is
not" with a literal. Did you mean "!="?
  if self.value is not '':
/usr/share/gdb/python/gdb/command/prompt.py:60: SyntaxWarning: "is
not" with a literal. Did you mean "!="?
  if self.value is not '':
GNU gdb (GDB) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-slackware-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 1437
[New LWP 1438]
[New LWP 1439]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f395c99807e in pselect () from /lib64/libc.so.6
(gdb) thread apply all bt

Thread 3 (Thread 0x7f3959446700 (LWP 1439)):
#0  0x00007f395c995e9f in poll () at /lib64/libc.so.6
#1  0x00007f395e79acee in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f395e79b053 in g_main_loop_run () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f395e9d0666 in  () at /usr/lib64/libgio-2.0.so.0
#4  0x00007f395e7c298d in  () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f395cf6306b in start_thread () at /lib64/libpthread.so.0
#6  0x00007f395c9a172f in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f395a466700 (LWP 1438)):
#0  0x00007f395c995e9f in poll () at /lib64/libc.so.6
#1  0x00007f395e79acee in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f395e79ae0f in g_main_context_iteration () at
/usr/lib64/libglib-2.0.so.0
#3  0x00007f395e79ae61 in  () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f395e7c298d in  () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f395cf6306b in start_thread () at /lib64/libpthread.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#6  0x00007f395c9a172f in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f395af20c80 (LWP 1437)):
#0  0x00007f395c99807e in pselect () at /lib64/libc.so.6
#1  0x00000000005c5bd0 in really_call_select (arg=0x7ffff4d2e960) at
thread.c:586
#2  0x00000000005c66a7 in thread_select (func=<optimized out>,
max_fds=max_fds@entry=20, rfds=rfds@entry=0x7ffff4d2ea10,
wfds=wfds@entry=0x7ffff4d2ea90, efds=efds@entry=0x0,
timeout=timeout@entry=0x7ffff4d2f010, sigmask=0x0) at thread.c:616
#3  0x00000000005e0e34 in xg_select (fds_lim=20,
rfds=rfds@entry=0x7ffff4d2f120, wfds=wfds@entry=0x7ffff4d2f1a0,
efds=efds@entry=0x0, timeout=timeout@entry=0x7ffff4d2f010,
sigmask=sigmask@entry=0x0) at xgselect.c:117
#4  0x00000000005a6db3 in wait_reading_process_output
(time_limit=time_limit@entry=15, nsecs=nsecs@entry=0,
read_kbd=read_kbd@entry=-1, do_display=do_display@entry=true,
wait_for_cell=wait_for_cell@entry=0x0, wait_proc=wait_proc@entry=0x0,
just_wait_proc=0) at process.c:5571
#5  0x000000000042d82f in sit_for (timeout=timeout@entry=0x3e,
reading=reading@e--Type <RET> for more, q to quit, c to continue
without paging--
ntry=true, display_option=display_option@entry=1) at lisp.h:1032
#6  0x00000000005032e8 in read_char (commandflag=1, map=0x3f872e3,
prev_event=0x0, used_mouse_menu=0x7ffff4d2f9db, end_time=0x0) at
lisp.h:1147
#7  0x000000000050380e 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:9553
#8  0x0000000000504e8e in command_loop_1 () at lisp.h:1032
#9  0x0000000000568d37 in internal_condition_case
(bfun=bfun@entry=0x504cb0 <command_loop_1>,
handlers=handlers@entry=0x90, hfun=hfun@entry=0x4fbee0 <cmd_error>) at
eval.c:1355
#10 0x00000000004f6cfc in command_loop_2 (ignore=ignore@entry=0x0) at
lisp.h:1032
#11 0x0000000000568c91 in internal_catch (tag=tag@entry=0xd4d0,
func=func@entry=0x4f6ce0 <command_loop_2>, arg=arg@entry=0x0) at
eval.c:1116
#12 0x00000000004f6ca4 in command_loop () at lisp.h:1032
#13 0x00000000004fbaf6 in recursive_edit_1 () at keyboard.c:714
#14 0x00000000004fbe20 in Frecursive_edit () at keyboard.c:786
#15 0x0000000000423f25 in main (argc=1, argv=0x7ffff4d2fed8) at emacs.c:2054
(gdb)

вс, 12 янв. 2020 г. в 14:34, Eli Zaretskii <[email-masked]>:
>
> On January 12, 2020 8:05:06 AM GMT+02:00, Vladimir Nikishkin <[email-masked]> wrote:
> > Okay, I rebuild Emacs from git with debug information, and after a few
> > attempts, Emacs crashed, printing "This is a GTK bug".
> > I am not sure why optimized Emacs hangs instead of crashing.
> > Maybe this bug can be closed (or maybe there is an interleaving
> > between two bugs)
>
> Please run Emacs under GDB, and when it crashes, please show the backtrace.  I'd like to see the details of this crash, perhaps this is some known problem.  Those details might also explain the difference in behavior between the optimized and debug builds.
>
> Thanks.

-- 
Yours sincerely, Vladimir Nikishkin