Subject: Re: bug#47284: emacs 26/27 SEGV

From: Tjernlund <[email-masked]>
Date: Thu, 08 Apr 2021 13:52:38 +0200

On Sat, 2021-04-03 at 19:14 -0500, Stefan Kangas wrote:
Tjernlund <[email-masked]> writes:

> File / Revert Buffer in the menu bar over a remote display with ping > 3 ms gives me a SEGV:

What version of Emacs is this?  Could you please include the details

26, 27 and 27.2. All I have tested.

from `report-emacs-bug'?

yes, here goes:
In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
 of 2021-02-13 built on localhost
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Gentoo/Linux

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
tst.s has auto save data; consider M-x recover-this-file
Making completion list... [2 times]

Configured using:
 'configure --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
 --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
 --localstatedir=/var/lib --disable-silent-rules
 --docdir=/usr/share/doc/emacs-27.1-r4
 --htmldir=/usr/share/doc/emacs-27.1-r4/html --libdir=/usr/lib64
 --program-suffix=-emacs-27 --includedir=/usr/include/emacs-27
 --infodir=/usr/share/info/emacs-27 --localstatedir=/var
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --without-compress-install --without-hesiod --without-pop
 --with-file-notification=inotify --with-pdumper --enable-acl
 --with-dbus --without-modules --without-gameuser --with-libgmp
 --with-gpm --with-json --with-kerberos --with-kerberos5 --with-lcms2
 --without-xml2 --without-mailutils --without-selinux --with-gnutls
 --without-libsystemd --with-threads --without-wide-int --with-zlib
 --with-sound=alsa --with-x --without-ns --without-gconf
 --with-gsettings --without-toolkit-scroll-bars --with-gif --with-jpeg
 --with-png --with-rsvg --with-tiff --with-xpm --without-imagemagick
 --with-xft --with-cairo --with-harfbuzz --without-libotf
 --without-m17n-flt --with-x-toolkit=lucid --with-xaw3d
 --with-dumping=pdumper 'CFLAGS=-O2 -pipe -Wno-deprecated-declarations
 -Wno-error' CPPFLAGS= 'LDFLAGS=-Wl,-O1 -Wl,--as-needed''

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB
NOTIFY INOTIFY ACL GNUTLS FREETYPE HARFBUZZ ZLIB LUCID X11 XDBE XIM
THREADS JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Assembler

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
epg-config gnus-util rmail rmail-loaddefs text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
asm-mode tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 46383 8687)
 (symbols 48 6010 1)
 (strings 32 16243 1799)
 (string-bytes 1 515461)
 (vectors 16 10106)
 (vector-slots 8 130705 10640)
 (floats 8 22 43)
 (intervals 56 404 0)
 (buffers 1000 13))

Do you have a recipe to reproduce this, starting from "emacs -Q"?

ssh to remote machine(with X11 DISPLAY preserved back to original machine) over vpn link
 with ping >= 3 ms
emacs -Q tst.txt
change something, then do File/Revert Buffer
SEGV

> (gdb) bt
> #0  0x00007ffff7ddc594 in GetnormalGC (lw=lw@entry=0x555556999670) at Label.c:310
> #1  0x00007ffff7ddcc92 in Initialize (request=<optimized out>, new=0x555556999670, args=<optimized out>,
> num_args=<optimized out>) at Label.c:401
> #2  0x00007ffff7d543b9 in CallInitialize
>     (class=0x7ffff7e19280 <labelClassRec>,
> req_widget=req_widget@entry=0x7fffffffb710,
> new_widget=new_widget@entry=0x555556999670, args=args@entry=0x7fffffffbb80,
> num_args=<optimized out>, num_args@entry=0x4) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:219
> #3  0x00007ffff7d54d30 in xtCreate
>     (name=name@entry=0x7ffff7e06065 "label", class=class@entry=0x0,
> widget_class=widget_class@entry=0x7ffff7e19280 <labelClassRec>,
> parent=parent@entry=0x555556999440, default_screen=0x555555e21bf0,
> args=args@entry=0x7fffffffbb80, num_args=0x4, typed_args=0x0,
> num_typed_args=<optimized out>, parent_constraint_class=0x7ffff7e18ac0
> <dialogClassRec>, post_proc=0x7ffff7d54400 <widgetPostProc>) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:415
> #4  0x00007ffff7d55202 in _XtCreateWidget
>     (name=name@entry=0x7ffff7e06065 "label",
> widget_class=widget_class@entry=0x7ffff7e19280 <labelClassRec>,
> parent=parent@entry=0x555556999440, args=args@entry=0x7fffffffbb80,
> num_args=0x4, typed_args=typed_args@entry=0x0, num_typed_args=<optimized out>)
> at /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:581
> #5  0x00007ffff7d55582 in XtCreateManagedWidget
>     (name=name@entry=0x7ffff7e06065 "label", widget_class=0x7ffff7e19280
> <labelClassRec>, parent=parent@entry=0x555556999440,
> args=args@entry=0x7fffffffbb80, num_args=<optimized out>) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:619
> #6  0x00007ffff7ddae7f in Initialize (request=<optimized out>, new=0x555556999440, args=<optimized out>,
> num_args=<optimized out>) at Dialog.c:176
> #7  0x00007ffff7d543b9 in CallInitialize
>     (class=0x7ffff7e18ac0 <dialogClassRec>,
> req_widget=req_widget@entry=0x7fffffffbda0,
> new_widget=new_widget@entry=0x555556999440, args=args@entry=0x7fffffffc2b0,
> num_args=<optimized out>, num_args@entry=0x0) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:219
> #8  0x00007ffff7d54d30 in xtCreate
>     (name=name@entry=0x5555568f4b50 "Q2BR1", class=class@entry=0x0,
> widget_class=widget_class@entry=0x7ffff7e18ac0 <dialogClassRec>,
> parent=parent@entry=0x55555692ab30, default_screen=0x555555e21bf0,
> args=args@entry=0x7fffffffc2b0, num_args=0x0, typed_args=0x0,
> num_typed_args=<optimized out>, parent_constraint_class=0x0,
> post_proc=0x7ffff7d54400 <widgetPostProc>) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:415
> #9  0x00007ffff7d55202 in _XtCreateWidget
>     (name=name@entry=0x5555568f4b50 "Q2BR1",
> widget_class=widget_class@entry=0x7ffff7e18ac0 <dialogClassRec>,
> parent=parent@entry=0x55555692ab30, args=args@entry=0x7fffffffc2b0,
> num_args=0x0, typed_args=typed_args@entry=0x0, num_typed_args=<optimized out>)
> at /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:581
> #10 0x00007ffff7d55582 in XtCreateManagedWidget
>     (name=name@entry=0x5555568f4b50 "Q2BR1", widget_class=0x7ffff7e18ac0
> <dialogClassRec>, parent=parent@entry=0x55555692ab30,
> args=args@entry=0x7fffffffc2b0, num_args=num_args@entry=0x0) at
> /var/tmp/portage/x11-libs/libXt-1.2.1/work/libXt-1.2.1/src/Create.c:619
> #11 0x0000555555774c37 in make_dialog
>     (name=0x5555568f4b50 "Q2BR1", parent=<optimized out>, pop_up_p=<optimized
> out>, shell_title=0x555555798741 "Question", text_input_slot=<optimized out>,
> radio_box=<optimized out>, list=0x0, left_buttons=0x1, right_buttons=0x1,
> instance=0x5555568f4c90, icon_name=<optimized out>) at lwlib-Xaw.c:553
> #12 0x00005555557758e7 in xaw_create_dialog (instance=<optimized out>) at lwlib-Xaw.c:731
> #13 0x000055555576e867 in instantiate_widget_instance (instance=0x5555568f4c90) at lwlib.c:726
> #14 allocate_widget_instance (pop_up_p=0x1, parent=<optimized out>, info=<optimized out>) at lwlib.c:223
> #15 lw_make_widget (id=<optimized out>, parent=<optimized out>, pop_up_p=<optimized out>) at lwlib.c:770
> #16 0x00005555555f5c41 in create_and_show_dialog (f=0x555555efeea0, first_wv=0x5555568f4ac0) at xmenu.c:1788
> #17 x_dialog_show (title=<optimized out>, error_name=<synthetic pointer>, header=0x0, f=0x555555efeea0) at
> xmenu.c:1940
> #18 xw_popup_dialog (f=0x555555efeea0, header=0x0, contents=<optimized out>) at xmenu.c:2003
> #19 0x00005555556f1256 in Fyes_or_no_p (prompt=0x5555568c8ef4) at lisp.h:1027
> #20 0x00005555556e6873 in Ffuncall (nargs=0x2, args=args@entry=0x7fffffffc748) at eval.c:2795
> #21 0x0000555555717fc8 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>,
> nargs=<optimized out>, args=<optimized out>) at bytecode.c:633
> #22 0x00005555556e67d7 in Ffuncall (nargs=0x3, args=args@entry=0x7fffffffcb50) at eval.c:2809
> #23 0x0000555555717fc8 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>,
> nargs=<optimized out>, args=<optimized out>) at bytecode.c:633
> #24 0x00005555556e67d7 in Ffuncall (nargs=nargs@entry=0x2, args=args@entry=0x7fffffffd008) at eval.c:2809
> #25 0x00005555556e31e1 in Ffuncall_interactively (nargs=0x2, args=0x7fffffffd008) at callint.c:254
> #26 0x00005555556e6873 in Ffuncall (nargs=0x3, args=0x7fffffffd000) at eval.c:2795
> #27 0x00005555556e6c33 in Fapply (nargs=nargs@entry=0x3, args=args@entry=0x7fffffffd000) at eval.c:2382
> #28 0x00005555556e474a in Fcall_interactively (function=0x2aaa9d3fc650, record_flag=0x0, keys=0x7ffff350180d) at
> callint.c:342
> #29 0x00005555556e6873 in Ffuncall (nargs=0x4, args=args@entry=0x7fffffffd0f8) at eval.c:2795
> #30 0x0000555555717fc8 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>,
> nargs=<optimized out>, args=<optimized out>) at bytecode.c:633
> #31 0x00005555556e67d7 in Ffuncall (nargs=0x2, args=0x7fffffffd4a0) at eval.c:2809
> #32 0x00005555556e692a in call1 (fn=fn@entry=0x4320, arg1=<optimized out>) at eval.c:2655
> #33 0x000055555567e728 in command_loop_1 () at lisp.h:1027
> #34 0x00005555556e5b07 in internal_condition_case (bfun=bfun@entry=0x55555567e330 <command_loop_1>, 
> handlers=handlers@entry=0x90, hfun=hfun@entry=0x555555675240 <cmd_error>)
> --Type <RET> for more, q to quit, c to continue without paging--
>     at eval.c:1356
> #35 0x000055555566ff14 in command_loop_2 (ignore=ignore@entry=0x0) at lisp.h:1027
> #36 0x00005555556e5a61 in internal_catch (tag=tag@entry=0xd3e0, func=func@entry=0x55555566fef0 <command_loop_2>, 
> arg=arg@entry=0x0) at eval.c:1117
> #37 0x000055555566febb in command_loop () at lisp.h:1027
> #38 0x0000555555674e56 in recursive_edit_1 () at keyboard.c:714
> #39 0x0000555555675182 in Frecursive_edit () at keyboard.c:786
> #40 0x000055555559bb1f in main (argc=0x2, argv=<optimized out>) at emacs.c:2067