Subject: bug#76091: closed (Re: bug#76091: 31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a))

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 07 Feb 2025 19:44:02 +0000

Your bug report

#76091: 31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a)

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76091: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76091
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76091: 31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a)
From: Pip Cet <[email-masked]>
To: Gerd Möllmann <[email-masked]>
Cc: [email-masked], Gregor Zattler <[email-masked]>, Helmut Eller <[email-masked]>, Eli Zaretskii <[email-masked]>
Date: Fri, 07 Feb 2025 19:43:18 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Gerd Möllmann <[email-masked]> writes:

>>> Well, yes.  I'll split it up into individual patches, so we can review
>>> them one by one?
>>
>> Not necessary, but thanks.
>
> I'm through. Except for the shrinking case that you already mentioned I haven't found other problems.
>
> So LGTM.

Thanks!

Hope I didn't break anything, but I just pushed the series.  Please feel
free to revert or fix as appropriate!

Gregor, I believe this should fix the bug you originally saw (the second
bug you saw when building without optimization has also been fixed), so
I'm optimistically closing this report.  If you run into any further
issues, please open a new bug or reopen this one if it looks quite
similar :-)

Thanks again for the report, please keep them coming!

Pip

Subject: 31.0.50; festure/igc: buffer.h:829: Emacs fatal error: assertion failed: BUFFERP (a)
From: Gregor Zattler <[email-masked]>
To: [email-masked]
Date: Thu, 06 Feb 2025 13:49:30 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Dear Emacs developers, I don't know if
this failed assertion is due to using
MPS as GC.

I played along with pdf-tools and
org-noter when it happened.

This time I built with a current
checkout of feature/igc.

GDB output even further below.

The crashed session is still in GDB.

HTH, Gregor

In GNU Emacs 31.0.50 (build 3,
 x86_64-pc-linux-gnu, cairo version
 1.16.0) of 2025-02-06 built on no
Repository revision: aa915b0c87e42444ee5426744df18c3b15ac0cf5
Repository branch: feature/igc
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure
 --infodir=/usr/share/info/emacs
 --with-json
 --with-file-notification=yes
 --with-libsystemd --with-cairo
 --with-x=yes --with-x-toolkit=no
 --without-toolkit-scroll-bars
 --without-gsettings
 --enable-check-lisp-object-type
 --enable-checking=yes,glyphs
 --with-native-compilation=yes
 --with-mps=yes 'CFLAGS=-ggdb3 -O3
 -ffile-prefix-map=/home/grfz/src/emacs-igc=. -fstack-protector-strong
 -Wformat -Werror=format-security
 -fno-omit-frame-pointer'
 'CPPFLAGS=-I/home/grfz/mps-artifacts
 -Wdate-time -D_FORTIFY_SOURCE=2'
 'LDFLAGS=-L/home/grfz/mps-artifacts
 -Wl,-z,relro''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP
GNUTLS GPM HARFBUZZ JPEG LCMS2 LIBOTF
LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT
MODULES MPS NATIVE_COMP NOTIFY INOTIFY
OLDXMENU PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF WEBP X11 XDBE XIM
XINPUT2 XPM ZLIB

Important settings:
  value of $LC_ALL:
  value of $LC_COLLATE: de_DE.utf8
  value of $LC_CTYPE: de_DE.utf8
  value of $LC_MESSAGES: POSIX
  value of $LC_MONETARY: de_DE.utf8
  value of $LC_NUMERIC: de_DE.utf8
  value of $LC_TIME: de_DE.utf8
  value of $LANG: de_DE.utf8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  rainbow-delimiters-mode: t
  winner-mode: t
  which-key-mode: t
  savehist-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  delete-selection-mode: t
  minibuffer-depth-indicate-mode: t
  which-function-mode: t
  windmove-mode: t
  xterm-mouse-mode: t
  key-chord-mode: t
  mail-abbrevs-mode: t
  find-function-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
~/src/notmuch/emacs/notmuch-address hides /home/grfz/.config/emacs/elisp/notmuch-address
/home/grfz/src/ol-notmuch/ol-notmuch hides /home/grfz/.config/emacs/elisp/ol-notmuch
/home/grfz/.config/emacs/elpa-31.0/magit-4.2.0/magit-autorevert hides /home/grfz/.config/emacs/elpa-31.0/magit-section-4.2.0/magit-autorevert
~/src/notmuch/emacs/notmuch-lib hides /usr/local/share/emacs/site-lisp/notmuch-lib
~/src/notmuch/emacs/coolj hides /usr/local/share/emacs/site-lisp/coolj
~/src/notmuch/emacs/notmuch-address hides /usr/local/share/emacs/site-lisp/notmuch-address
~/src/notmuch/emacs/notmuch-hello hides /usr/local/share/emacs/site-lisp/notmuch-hello
~/src/notmuch/emacs/notmuch-parser hides /usr/local/share/emacs/site-lisp/notmuch-parser
~/src/notmuch/emacs/notmuch-show hides /usr/local/share/emacs/site-lisp/notmuch-show
~/src/notmuch/emacs/notmuch-wash hides /usr/local/share/emacs/site-lisp/notmuch-wash
~/src/notmuch/emacs/notmuch-draft hides /usr/local/share/emacs/site-lisp/notmuch-draft
~/src/notmuch/emacs/notmuch-tree hides /usr/local/share/emacs/site-lisp/notmuch-tree
~/src/notmuch/emacs/notmuch-version hides /usr/local/share/emacs/site-lisp/notmuch-version
~/src/notmuch/emacs/notmuch-jump hides /usr/local/share/emacs/site-lisp/notmuch-jump
~/src/notmuch/emacs/notmuch-company hides /usr/local/share/emacs/site-lisp/notmuch-company
~/src/notmuch/emacs/notmuch hides /usr/local/share/emacs/site-lisp/notmuch
~/src/notmuch/emacs/notmuch-crypto hides /usr/local/share/emacs/site-lisp/notmuch-crypto
~/src/notmuch/emacs/notmuch-compat hides /usr/local/share/emacs/site-lisp/notmuch-compat
~/src/notmuch/emacs/notmuch-maildir-fcc hides /usr/local/share/emacs/site-lisp/notmuch-maildir-fcc
~/src/notmuch/emacs/notmuch-tag hides /usr/local/share/emacs/site-lisp/notmuch-tag
~/src/notmuch/emacs/notmuch-message hides /usr/local/share/emacs/site-lisp/notmuch-message
~/src/notmuch/emacs/notmuch-print hides /usr/local/share/emacs/site-lisp/notmuch-print
~/src/notmuch/emacs/notmuch-mua hides /usr/local/share/emacs/site-lisp/notmuch-mua
~/src/notmuch/emacs/notmuch-query hides /usr/local/share/emacs/site-lisp/notmuch-query
/home/grfz/.config/emacs/elpa-31.0/transient-0.8.4/transient hides /home/grfz/src/emacs-igc/lisp/transient
/home/grfz/.config/emacs/elpa-31.0/idlwave-6.5.1/idlw-shell hides /home/grfz/src/emacs-igc/lisp/obsolete/idlw-shell
/home/grfz/.config/emacs/elpa-31.0/idlwave-6.5.1/idlwave hides /home/grfz/src/emacs-igc/lisp/obsolete/idlwave
/home/grfz/.config/emacs/elpa-31.0/idlwave-6.5.1/idlw-toolbar hides /home/grfz/src/emacs-igc/lisp/obsolete/idlw-toolbar
/home/grfz/.config/emacs/elpa-31.0/idlwave-6.5.1/idlw-help hides /home/grfz/src/emacs-igc/lisp/obsolete/idlw-help
/home/grfz/.config/emacs/elpa-31.0/idlwave-6.5.1/idlw-complete-structtag hides /home/grfz/src/emacs-igc/lisp/obsolete/idlw-complete-structtag

Features:
(shadow sort orgalist ecomplete
mail-extr tramp trampver
tramp-integration files-x tramp-message
tramp-compat shell tramp-loaddefs
emacsbug add-log rainbow-delimiters
winner which-key ol-notmuch notmuch
notmuch-tree notmuch-jump notmuch-hello
notmuch-show notmuch-print
notmuch-crypto notmuch-mua
notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address
notmuch-company notmuch-parser
notmuch-wash diff-mode track-changes
coolj goto-addr icalendar diary-lib
diary-loaddefs notmuch-tag crm
notmuch-lib notmuch-version
notmuch-compat hl-line compat
org-contrib org-crypt org-protocol
org-clock ob-plantuml gnus-alias advice
savehist auth-source-pass holidays
holiday-loaddefs ws-butler delsel
modus-operandi-theme modus-themes
mb-depth which-func imenu windmove
xt-mouse edmacro kmacro key-chord comp
comp-cstr warnings comp-run comp-common
wcheck-mode oc-basic cl-extra help-mode
org-element org-persist org-id
org-refile org-element-ast inline
avl-tree generator ol-eww eww vtable
mule-util url-queue mm-url ol-rmail
ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime
smime gnutls dig gnus-sum shr pixel-fill
kinsoku url-file svg dom gnus-group
gnus-undo gnus-start gnus-dbus dbus xml
gnus-cloud nnimap nnmail mail-source
utf7 nnoo parse-time gnus-spec gnus-int
gnus-range message sendmail yank-media
puny rfc822 mml mml-sec epa derived epg
rfc6068 epg-config mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader
gnus-util text-property-search
mail-utils range mm-util mail-prsvr
ol-docview doc-view filenotify jka-compr
image-mode exif dired dired-loaddefs
ol-bibtex bibtex iso8601 ol-bbdb ol-w3m
ol-doi org-link-doi org ob ob-ref ob-lob
ob-table ob-exp org-macro org-pcomplete
pcomplete org-list org-footnote
org-faces org-entities time-date
noutline outline ob-emacs-lisp org-table
org-loaddefs thingatpt find-func
cal-menu calendar cal-loaddefs ob-tangle
ol org-src sh-script rx smie treesit
executable org-keys oc ob-comint comint
ansi-osc ansi-color ring ob-core
org-cycle org-fold org-fold-core
org-compat ob-eval org-version org-macs
format-spec use-package
use-package-ensure use-package-delight
use-package-diminish
use-package-bind-key bind-key easy-mmode
use-package-core async-autoloads
csv-mode-autoloads debbugs-autoloads
dired-git-info-autoloads
git-timemachine-autoloads
hyperbole-autoloads kotl-autoloads hact
set hhist idlwave-autoloads
key-chord-autoloads magit-autoloads
pcase magit-section-autoloads
dash-autoloads minibuffer-line-autoloads
org-contrib-autoloads
org-noter-autoloads org-autoloads
orgalist-autoloads paredit-autoloads
pdf-tools-autoloads finder-inf
rainbow-delimiters-autoloads
tablist-autoloads transient-autoloads
wcheck-mode-autoloads info
with-editor-autoloads
ws-butler-autoloads package browse-url
xdg url url-proxy url-privacy url-expand
url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util
mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core
cl-macs password-cache json subr-x map
byte-opt gv bytecomp byte-compile
url-vars cus-edit pp cus-load icons
wid-edit cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd
touch-screen tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer
select scroll-bar mouse jit-lock
font-lock syntax font-core
term/tty-colors frame minibuffer nadvice
seq simple cl-generic indonesian
philippine 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 emoji-zwj charscript
charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray
oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp
files window text-properties overlay
sha1 md5 base64 format env code-pages
mule custom widget keymap
hashtable-print-readable backquote
threads dbusbind inotify lcms2
dynamic-setting font-render-setting
cairo xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames
native-compile mps emacs)

Memory information:
((conses 24 0 0) (symbols 56 0 0) (strings 40 0 0) (string-bytes 1 0)
 (vectors 24 0) (vector-slots 8 0 0) (floats 24 0 0) (intervals 64 0 0)
 (buffers 992 0))

+run --debug-init -xrm --init-directory="${USER_EMACS_DIRECTORY}" --fg-daemon="${EMACS_SERVER_NAME}"
Starting program: /home/grfz/src/emacs-igc/src/emacs --debug-init -xrm --init-directory="${USER_EMACS_DIRECTORY}" --fg-daemon="${EMACS_SERVER_NAME}"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Detaching after vfork from child process 1490619]
[Detaching after vfork from child process 1490620]
[Detaching after vfork from child process 1490621]
[Detaching after vfork from child process 1490622]
[Detaching after vfork from child process 1490625]
[Detaching after vfork from child process 1490626]
[Detaching after vfork from child process 1490692]
[Detaching after vfork from child process 1490694]
[Detaching after vfork from child process 1490695]

Program received signal SIGSEGV, Segmentation fault.
[... 155 such lines deleted ...]
Program received signal SIGSEGV, Segmentation fault.
[Detaching after vfork from child process 1490698]
[Detaching after vfork from child process 1491454]
[Detaching after vfork from child process 1491455]
[Detaching after vfork from child process 1491584]
[Detaching after vfork from child process 1491838]

Program received signal SIGSEGV, Segmentation fault.
[... plenty such deleted ...]
Program received signal SIGSEGV, Segmentation fault.
[Detaching after vfork from child process 1491900]
[Detaching after vfork from child process 1491901]
[Detaching after vfork from child process 1491903]
[Detaching after vfork from child process 1491904]
[Detaching after vfork from child process 1491915]
[Detaching after vfork from child process 1491916]
[Detaching after vfork from child process 1491917]

Program received signal SIGSEGV, Segmentation fault.
[... 40 such lines deleted ...]
Program received signal SIGSEGV, Segmentation fault.
[Detaching after vfork from child process 1491919]
[Detaching after vfork from child process 1492526]
[Detaching after vfork from child process 1492561]
[Detaching after vfork from child process 1492564]
[Detaching after vfork from child process 1492565]
[Detaching after vfork from child process 1492566]

Program received signal SIGSEGV, Segmentation fault.
[... 190 such lines deleted ...]
Program received signal SIGSEGV, Segmentation fault.
[Detaching after vfork from child process 1492570]
[Detaching after vfork from child process 1492572]
[Detaching after vfork from child process 1493673]

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.

Program received signal SIGSEGV, Segmentation fault.
[Detaching after vfork from child process 1496065]
[Detaching after vfork from child process 1496066]
[Detaching after vfork from child process 1497149]

Program received signal SIGSEGV, Segmentation fault.
[... 158 such lines deleted ...]
Program received signal SIGSEGV, Segmentation fault.

Breakpoint 1, terminate_due_to_signal (sig=sig@entry=6, backtrace_limit=backtrace_limit@entry=2147483647) at ./src/emacs.c:425
425	{
+bt
#0  terminate_due_to_signal (sig=sig@entry=6, backtrace_limit=backtrace_limit@entry=2147483647) at ./src/emacs.c:425
#1  0x00005555555b8f5b in die (msg=msg@entry=0x5555559b40d0 "BUFFERP (a)", file=file@entry=0x5555559b40c7 "buffer.h", line=line@entry=829) at ./src/alloc.c:7683
#2  0x00005555555a0bda in XBUFFER (a=Python Exception <class 'gdb.error'>: value has been optimized out
) at ./src/buffer.h:829
#3  0x00005555555a4370 in XBUFFER (a=Python Exception <class 'gdb.error'>: value has been optimized out
) at ./src/xdisp.c:17024
#4  prepare_menu_bars () at ./src/xdisp.c:14041
#5  redisplay_internal () at ./src/xdisp.c:17103
#6  0x000055555564ec75 in redisplay () at ./src/xdisp.c:16675
#7  0x000055555577b9a5 in read_char (commandflag=1, map=Python Exception <class 'gdb.error'>: value has been optimized out
, map@entry=XIL(0x7fffc31bd02b), prev_event=Python Exception <class 'gdb.error'>: value has been optimized out
, used_mouse_menu=used_mouse_menu@entry=0x7fffffffc9bb, end_time=end_time@entry=0x0) at ./src/keyboard.c:2683
#8  0x000055555577e03b in read_key_sequence (keybuf=keybuf@entry=0x7fffffffcb20, prompt=Python Exception <class 'gdb.error'>: value has been optimized out
, prompt@entry=XIL(0), dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, disable_text_conversion_p=<optimized out>) at ./src/keyboard.c:10790
#9  0x000055555577fd67 in command_loop_1 () at ./src/lisp.h:1184
#10 0x000055555581e7a6 in internal_condition_case (bfun=bfun@entry=0x55555577fb10 <command_loop_1>, handlers=handlers@entry=XIL(0xa8), hfun=hfun@entry=0x555555763cd0 <cmd_error>) at ./src/eval.c:1623
#11 0x000055555576290e in command_loop_2 (handlers=handlers@entry=XIL(0xa8)) at ./src/keyboard.c:1174
#12 0x000055555581e52f in internal_catch (tag=tag@entry=XIL(0x15498), func=func@entry=0x5555557628e0 <command_loop_2>, arg=Python Exception <class 'gdb.error'>: value has been optimized out
, arg@entry=XIL(0xa8)) at ./src/eval.c:1302
#13 0x00005555557628a9 in command_loop () at ./src/lisp.h:1184
#14 0x000055555576f3e5 in recursive_edit_1 () at ./src/keyboard.c:760
#15 0x000055555576f795 in Frecursive_edit () at ./src/keyboard.c:843
#16 0x00005555555d1f77 in main (argc=5, argv=<optimized out>) at ./src/emacs.c:2580
++set $bt = backtrace_top ()
++if backtrace_p ($bt)
+++echo \n

+++echo Lisp Backtrace:\n
Lisp Backtrace:
+++xbacktrace
++++set $bt = backtrace_top ()
++++while backtrace_p ($bt)
+++++set $fun = backtrace_function ($bt)
+++++xgettype $fun
++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++set $bugfix = $fun.i
++++++set $type = (enum Lisp_Type) (USE_LSB_TAG ? (EMACS_INT) $bugfix & (1 << GCTYPEBITS) - 1 : (EMACS_UINT) $bugfix >> VALBITS)
+++++if $type == Lisp_Symbol
++++++xprintsym $fun
+++++++xsymname $fun
++++++++xgetsym $fun
+++++++++xgetptr $fun
++++++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++++++set $bugfix = $fun.i
++++++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++++++set $ptr = ((struct Lisp_Symbol *) ((char *) &lispsym + $ptr))
++++++++set $symname = $ptr->u.s.name
+++++++xgetptr $symname
++++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++++set $bugfix = $symname.i
++++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++++if $ptr != 0
++++++++set $sym_name = (struct Lisp_String *) $ptr
++++++++xprintstr $sym_name
+++++++++if (! $arg0)
++++++++++set $data = (char *) $sym_name->u.s.data
++++++++++set $strsize = ($sym_name->u.s.size_byte < 0) ? ($sym_name->u.s.size & ~ARRAY_MARK_FLAG) : $sym_name->u.s.size_byte
++++++++++if $strsize == 0
+++++++++++output ($sym_name->u.s.size > 1000) ? 0 : ($data[0])@($strsize)
"redisplay_internal (C function)"++++++printf " (0x%x)\n", backtrace_args ($bt)
 (0x0)
+++++set $bt = backtrace_next ($bt)
+xbacktrace
++set $bt = backtrace_top ()
++while backtrace_p ($bt)
+++set $fun = backtrace_function ($bt)
+++xgettype $fun
++++if (CHECK_LISP_OBJECT_TYPE)
+++++set $bugfix = $fun.i
++++set $type = (enum Lisp_Type) (USE_LSB_TAG ? (EMACS_INT) $bugfix & (1 << GCTYPEBITS) - 1 : (EMACS_UINT) $bugfix >> VALBITS)
+++if $type == Lisp_Symbol
++++xprintsym $fun
+++++xsymname $fun
++++++xgetsym $fun
+++++++xgetptr $fun
++++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++++set $bugfix = $fun.i
++++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++++set $ptr = ((struct Lisp_Symbol *) ((char *) &lispsym + $ptr))
++++++set $symname = $ptr->u.s.name
+++++xgetptr $symname
++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++set $bugfix = $symname.i
++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++if $ptr != 0
++++++set $sym_name = (struct Lisp_String *) $ptr
++++++xprintstr $sym_name
+++++++if (! $arg0)
++++++++set $data = (char *) $sym_name->u.s.data
++++++++set $strsize = ($sym_name->u.s.size_byte < 0) ? ($sym_name->u.s.size & ~ARRAY_MARK_FLAG) : $sym_name->u.s.size_byte
++++++++if $strsize == 0
+++++++++output ($sym_name->u.s.size > 1000) ? 0 : ($data[0])@($strsize)
"redisplay_internal (C function)"++++printf " (0x%x)\n", backtrace_args ($bt)
 (0x0)
+++set $bt = backtrace_next ($bt)
+bt full
#0  terminate_due_to_signal (sig=sig@entry=6, backtrace_limit=backtrace_limit@entry=2147483647) at ./src/emacs.c:425
#1  0x00005555555b8f5b in die (msg=msg@entry=0x5555559b40d0 "BUFFERP (a)", file=file@entry=0x5555559b40c7 "buffer.h", line=line@entry=829) at ./src/alloc.c:7683
#2  0x00005555555a0bda in XBUFFER (a=Python Exception <class 'gdb.error'>: value has been optimized out
) at ./src/buffer.h:829
#3  0x00005555555a4370 in XBUFFER (a=Python Exception <class 'gdb.error'>: value has been optimized out
) at ./src/xdisp.c:17024
        f = <optimized out>
        tail = Python Exception <class 'gdb.error'>: value has been optimized out

        frame = Python Exception <class 'gdb.error'>: value has been optimized out

        all_windows = <optimized out>
        some_windows = <optimized out>
        w = <optimized out>
        sw = <optimized out>
        must_finish = <optimized out>
        match_p = <optimized out>
        tlbufpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        tlendpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        number_of_visible_frames = <optimized out>
        sf = <optimized out>
        polling_stopped_here = <optimized out>
        tail = Python Exception <class 'gdb.error'>: value has been optimized out

        frame = Python Exception <class 'gdb.error'>: value has been optimized out

        hscroll_retries = <optimized out>
        garbaged_frame_retries = <optimized out>
        consider_all_windows_p = <optimized out>
        update_miniwindow_p = <optimized out>
        previous_frame = <optimized out>
        current_matrices_cleared = <optimized out>
        new_count = <optimized out>
#4  prepare_menu_bars () at ./src/xdisp.c:14041
        f = <optimized out>
        tail = Python Exception <class 'gdb.error'>: value has been optimized out

        frame = Python Exception <class 'gdb.error'>: value has been optimized out

        all_windows = <optimized out>
        some_windows = <optimized out>
        w = <optimized out>
        sw = <optimized out>
        must_finish = <optimized out>
        match_p = <optimized out>
        tlbufpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        tlendpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        number_of_visible_frames = <optimized out>
        sf = <optimized out>
        polling_stopped_here = <optimized out>
        tail = Python Exception <class 'gdb.error'>: value has been optimized out

        frame = Python Exception <class 'gdb.error'>: value has been optimized out

        hscroll_retries = <optimized out>
        garbaged_frame_retries = <optimized out>
        consider_all_windows_p = <optimized out>
        update_miniwindow_p = <optimized out>
        previous_frame = <optimized out>
        current_matrices_cleared = <optimized out>
        new_count = <optimized out>
#5  redisplay_internal () at ./src/xdisp.c:17103
        w = <optimized out>
        sw = <optimized out>
        must_finish = <optimized out>
        match_p = <optimized out>
        tlbufpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        tlendpos = {
          charpos = <optimized out>,
          bytepos = <optimized out>
        }
        number_of_visible_frames = <optimized out>
        sf = <optimized out>
        polling_stopped_here = <optimized out>
        tail = Python Exception <class 'gdb.error'>: value has been optimized out

        frame = Python Exception <class 'gdb.error'>: value has been optimized out

        hscroll_retries = <optimized out>
        garbaged_frame_retries = <optimized out>
        consider_all_windows_p = <optimized out>
        update_miniwindow_p = <optimized out>
        previous_frame = <optimized out>
        current_matrices_cleared = <optimized out>
        new_count = <optimized out>
#6  0x000055555564ec75 in redisplay () at ./src/xdisp.c:16675
#7  0x000055555577b9a5 in read_char (commandflag=1, map=Python Exception <class 'gdb.error'>: value has been optimized out
, map@entry=XIL(0x7fffc31bd02b), prev_event=Python Exception <class 'gdb.error'>: value has been optimized out
, used_mouse_menu=used_mouse_menu@entry=0x7fffffffc9bb, end_time=end_time@entry=0x0) at ./src/keyboard.c:2683
        echo_current = false
        c = XIL(0xc20b1d08)
        local_getcjmp = {{
            __jmpbuf = {0, 1, 140737488340544, 93824995805383, 140736458492269, 0, 140736562946003, 56448},
            __mask_was_saved = -14784,
            __saved_mask = {
              __val = {0, 56448, 0, 140736465790707, 140736652710968, 140737488340640, 93824995805383, 56448, 8589919984, 140737488340640, 0, 56448, 140737488340720, 140736448845896, 140736448845901, 140737488340912}
            }
          }}
        save_jump = {{
            __jmpbuf = {140736448845901, 93824995842824, 140736448845896, 140737488340768, 140736448845896, 0, 0, 93824995066752},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93824995065784, 444559, 7269376900467383552, 0, 128, 0, 0, 93824996979680, 140736448845901, 140736405658160, 140736633644704, 140737488340848, 93824995062785, 6, 140736633643803, 140737488341024}
            }
          }}
        tem = Python Exception <class 'gdb.error'>: value has been optimized out

        save = Python Exception <class 'gdb.error'>: value has been optimized out

        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555556039310
        c_volatile = XIL(0)
#8  0x000055555577e03b in read_key_sequence (keybuf=keybuf@entry=0x7fffffffcb20, prompt=Python Exception <class 'gdb.error'>: value has been optimized out
, prompt@entry=XIL(0), dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, disable_text_conversion_p=<optimized out>) at ./src/keyboard.c:10790
        interrupted_kboard = 0x555556039310
        interrupted_frame = 0x7fffc20b1d08
        key = Python Exception <class 'gdb.error'>: value has been optimized out

        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = Python Exception <class 'gdb.error'>: value has been optimized out

        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x7fffc31bd02b)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x7fffe60e78cb),
          map = XIL(0x7fffe60e78cb),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7fffebe4ca73),
          map = XIL(0x7fffebe4ca73),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x7fffe60e78b3),
          map = XIL(0x7fffe60e78b3),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        disabled_conversion = false
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
#9  0x000055555577fd67 in command_loop_1 () at ./src/lisp.h:1184
        cmd = Python Exception <class 'gdb.error'>: value has been optimized out

        keybuf = {XIL(0x7fffc31abc73), make_fixnum(53), make_fixnum(48), XIL(0), XIL(0x5555559db3e0), XIL(0x7fffc20a584d), XIL(0x7fffffffcbc0), XIL(0x5555558205a3), XIL(0x7fffffffcdec), XIL(0x3), XIL(0xc), XIL(0x140b0), XIL(0x38), XIL(0x7fffc20a584d), XIL(0x7fffffffcbc0), XIL(0x7fffffffcc00), XIL(0x60), XIL(0x555555763cd0), XIL(0x7fffffffcdec), XIL(0x7fffffffd4ef), XIL(0x7fffffffcc50), XIL(0x555555763ec7), XIL(0), XIL(0), XIL(0x2aaa78cd6780), XIL(0x7fffc28051bb), XIL(0x7fffda689a9c), XIL(0x2aaa730f4468), XIL(0x7fffffffcc00), XIL(0x5555558205a3)}
        i = <optimized out>
        last_pt = <optimized out>
        prev_modiff = 6292
        prev_buffer = 0x7fffc20a5848
#10 0x000055555581e7a6 in internal_condition_case (bfun=bfun@entry=0x55555577fb10 <command_loop_1>, handlers=handlers@entry=XIL(0xa8), hfun=hfun@entry=0x555555763cd0 <cmd_error>) at ./src/eval.c:1623
        val = make_fixnum(16)
        c = 0x7fffe1d92450
#11 0x000055555576290e in command_loop_2 (handlers=handlers@entry=XIL(0xa8)) at ./src/keyboard.c:1174
#12 0x000055555581e52f in internal_catch (tag=tag@entry=XIL(0x15498), func=func@entry=0x5555557628e0 <command_loop_2>, arg=Python Exception <class 'gdb.error'>: value has been optimized out
, arg@entry=XIL(0xa8)) at ./src/eval.c:1302
        val = make_fixnum(16)
        c = 0x7fffe1d6cd10
#13 0x00005555557628a9 in command_loop () at ./src/lisp.h:1184
#14 0x000055555576f3e5 in recursive_edit_1 () at ./src/keyboard.c:760
        val = Python Exception <class 'gdb.error'>: value has been optimized out

#15 0x000055555576f795 in Frecursive_edit () at ./src/keyboard.c:843
#16 0x00005555555d1f77 in main (argc=5, argv=<optimized out>) at ./src/emacs.c:2580
        stack_bottom_variable = 0x7ffff3e92c60
        old_argc = <optimized out>
        no_loadup = <optimized out>
        junk = 0x0
        dname_arg = 0x7fffffffd551 "EMACS-MPS=yes"
        ch_to_dir = 0x0
        original_pwd = <optimized out>
        dump_mode = <optimized out>
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = <optimized out>
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = <optimized out>
        sockfd = <optimized out>
        module_assertions = <optimized out>
++set $bt = backtrace_top ()
++if backtrace_p ($bt)
+++echo \n

+++echo Lisp Backtrace:\n
Lisp Backtrace:
+++xbacktrace
++++set $bt = backtrace_top ()
++++while backtrace_p ($bt)
+++++set $fun = backtrace_function ($bt)
+++++xgettype $fun
++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++set $bugfix = $fun.i
++++++set $type = (enum Lisp_Type) (USE_LSB_TAG ? (EMACS_INT) $bugfix & (1 << GCTYPEBITS) - 1 : (EMACS_UINT) $bugfix >> VALBITS)
+++++if $type == Lisp_Symbol
++++++xprintsym $fun
+++++++xsymname $fun
++++++++xgetsym $fun
+++++++++xgetptr $fun
++++++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++++++set $bugfix = $fun.i
++++++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++++++set $ptr = ((struct Lisp_Symbol *) ((char *) &lispsym + $ptr))
++++++++set $symname = $ptr->u.s.name
+++++++xgetptr $symname
++++++++if (CHECK_LISP_OBJECT_TYPE)
+++++++++set $bugfix = $symname.i
++++++++set $ptr = (EMACS_INT) $bugfix & VALMASK
+++++++if $ptr != 0
++++++++set $sym_name = (struct Lisp_String *) $ptr
++++++++xprintstr $sym_name
+++++++++if (! $arg0)
++++++++++set $data = (char *) $sym_name->u.s.data
++++++++++set $strsize = ($sym_name->u.s.size_byte < 0) ? ($sym_name->u.s.size & ~ARRAY_MARK_FLAG) : $sym_name->u.s.size_byte
++++++++++if $strsize == 0
+++++++++++output ($sym_name->u.s.size > 1000) ? 0 : ($data[0])@($strsize)
"redisplay_internal (C function)"++++++printf " (0x%x)\n", backtrace_args ($bt)
 (0x0)
+++++set $bt = backtrace_next ($bt)
+i reg
rax            0x42                66
rbx            0x5555556069a0      93824992962976
rcx            0x0                 0
rdx            0x0                 0
rsi            0x7fffffff          2147483647
rdi            0x6                 6
rbp            0x7fffffffae30      0x7fffffffae30
rsp            0x7fffffffae28      0x7fffffffae28
r8             0x0                 0
r9             0x73                115
r10            0x0                 0
r11            0x202               514
r12            0x5555556716d0      93824993400528
r13            0x7fffc20a5848      140736448845896
r14            0x0                 0
r15            0x6e633             452147
rip            0x5555555b1385      0x5555555b1385 <terminate_due_to_signal>
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0