Subject: Re: bug#55672: 29.0.50; Emacs crashes when calling start-process-shell-command xdg-open with process-connection-type set to nil

From: Ihor Radchenko <[email-masked]>
Date: Fri, 27 May 2022 15:45:59 +0800

Po Lu <[email-masked]> writes:

> Ihor Radchenko <[email-masked]> writes:
>> I am experiencing Emacs crashes/flickering on Linux with the
>> following:
>
> Then please show a backtrace from such a crash generated by gdb.

After compiling Emacs with the following configure flags:
./configure --enable-checking='yes,glyphs'
--enable-check-lisp-object-type CFLAGS='-O0 -g3'
--without-compress-install --without-hesiod --without-pop
--with-file-notification=inotify --with-pdumper --enable-acl --with-dbus
--with-modules --without-gameuser --with-libgmp --without-gpm
--with-native-compilation --with-json --without-kerberos
--without-kerberos5 --without-lcms2 --with-xml2 --without-mailutils
--with-selinux --without-sqlite3 --with-gnutls --without-libsystemd
--with-threads --with-wide-int --with-zlib --with-sound=oss --with-x
--without-pgtk --without-ns --without-gconf --without-gsettings
--without-toolkit-scroll-bars --with-xpm --with-xft --with-cairo
--with-harfbuzz --without-libotf --without-m17n-flt --with-x-toolkit=no
--with-gif --with-jpeg --with-png --with-rsvg --with-tiff --without-webp
--with-imagemagick --with-dumping=pdumper

I got the following backtrace after waiting for deferred native-comp to
finish and executing
(let ((process-connection-type nil))
  (start-process-shell-command "1" nil "xdg-open ~/.bashrc"))
multiple times in scratch buffer:

> gdb --args ./emacs -Q -l ~/bug.el
GNU gdb (Gentoo 12.1 vanilla) 12.1
Copyright (C) 2022 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-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
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"...
Reading symbols from ./emacs...
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from terminal]
DISPLAY = :0
TERM = xterm-kitty
Breakpoint 1 at 0x2083b5: file emacs.c, line 420.
Breakpoint 2 at 0x1cc1d1: file xterm.c, line 21573.
(gdb) run
Starting program: /home/yantar92/Git/emacs/src/emacs -Q -l /home/yantar92/bug.el
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff049d640 (LWP 17839)]
[Detaching after vfork from child process 17907] <- flickering
[Detaching after vfork from child process 18197] <- flickering
[Detaching after vfork from child process 18326] <- flickering
[Detaching after vfork from child process 18419] <- flickering
[Detaching after vfork from child process 18542] <- flickering
[Detaching after vfork from child process 18654]

Thread 1 "emacs" hit Breakpoint 2, x_error_quitter (display=0x555559323390, event=0x7fffffffa210) at xterm.c:21573
21573	{
(gdb) 
(gdb) 
quit
A debugging session is active.

	Inferior 1 [process 17832] will be killed.

Quit anyway? (y or n) y

Best,
Ihor