* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
@ 2020-11-07 18:39 Amin Bandali
2020-11-07 18:58 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-07 18:39 UTC (permalink / raw)
To: 44506
[-- Attachment #1: Type: text/plain, Size: 412 bytes --]
I noticed today that when trying to open the following message (attached
with John's permission) using Gnus in a terminal emulator or a tty in
GNU/Linux, it results in Emacs quitting with a segfault. I'm also
attaching the result of running `bt full' in GDB after the segfault.
The issue seems related in part to the inclusion of Persian characters
in the message body.
* * *
[-- Attachment #2: Type: message/rfc822, Size: 3811 bytes --]
[-- Attachment #2.1.1: Type: text/plain, Size: 323 bytes --]
>>>>> Amin Bandali <bandali@gnu.org> writes:
> Fingers crossed maybe that's changed now? :-)
If neither want to do it, and it doesn't sound like they do, then I'll meet
with Eli on Zoom, get the year's update from him, take some notes, and then
present them for you at Emacs Conf. :)
مرسی دوستم، John
[-- Attachment #2.1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]
[-- Attachment #3: Type: text/plain, Size: 41 bytes --]
* * *
[-- Attachment #4: bt-full.txt --]
[-- Type: text/plain, Size: 7500 bytes --]
#0 0x0000555555639248 in encode_terminal_code (src=0x7ffff7f61cc0, src_len=src_len@entry=1, coding=coding@entry=0x555555e7ec00) at term.c:564
cmp = 0x0
gstring = 0x0
i = <optimized out>
src_end = 0x7ffff7f61cf0
buf = 0x5555561483a0 ' ' <repeats 94 times>, "John ،متسود یسر", '-' <repeats 39 times>
nchars = 0
nbytes = 0
required = <optimized out>
tbase = 0x0
charset_list = 0x7fffea1f724b
#1 0x0000555555639b66 in tty_write_glyphs (f=<optimized out>, string=<optimized out>, len=<optimized out>) at term.c:773
face_id = 11
conversion_buffer = <optimized out>
coding = 0x555555e7ec00
n = <optimized out>
stringlen = 48
tty = 0x555555e7ee70
#2 0x0000555555597a93 in update_frame_line (f=f@entry=0x555555e35798, vpos=28, updating_menu_p=updating_menu_p@entry=false) at dispnew.c:5089
obody = <optimized out>
nbody = 0x7ffff7f60850
op1 = <optimized out>
op2 = <optimized out>
np1 = <optimized out>
nend = <optimized out>
tem = <optimized out>
osp = <optimized out>
nsp = <optimized out>
begmatch = <optimized out>
endmatch = <optimized out>
olen = 0
nlen = <optimized out>
current_matrix = <optimized out>
desired_matrix = <optimized out>
current_row = <optimized out>
desired_row = <optimized out>
must_write_whole_line_p = <optimized out>
write_spaces_p = <optimized out>
colored_spaces_p = true
#3 0x000055555559a553 in update_frame_1 (f=f@entry=0x555555e35798, force_p=force_p@entry=true, inhibit_id_p=<optimized out>, inhibit_id_p@entry=false, set_cursor_p=set_cursor_p@entry=true, updating_menu_p=updating_menu_p@entry=false)
at dispnew.c:4787
current_matrix = 0x555555e3ddc0
desired_matrix = 0x555555e3dd50
i = 28
pause_p = <optimized out>
preempt_count = 17
#4 0x000055555559d8f7 in update_frame (f=f@entry=0x555555e35798, force_p=true, force_p@entry=false, inhibit_hairy_id_p=inhibit_hairy_id_p@entry=false) at dispnew.c:3246
paused_p = <optimized out>
#5 0x00005555555d594a in redisplay_internal () at xdisp.c:16023
gcscrollbars = <optimized out>
f_redisplay_flag = <optimized out>
f = 0x555555e35798
w = <optimized out>
sw = <optimized out>
fr = <optimized out>
pending = <optimized out>
must_finish = <optimized out>
match_p = <optimized out>
tlbufpos = <optimized out>
tlendpos = <optimized out>
number_of_visible_frames = <optimized out>
sf = <optimized out>
polling_stopped_here = true
tail = 0x555555e3ace3
hscroll_retries = <optimized out>
garbaged_frame_retries = 0
consider_all_windows_p = <optimized out>
update_miniwindow_p = <optimized out>
#6 0x00005555555d77d5 in redisplay () at xdisp.c:15159
#7 0x000055555567c353 in read_char (commandflag=commandflag@entry=1, map=map@entry=0x555556db11a3, prev_event=0x0, used_mouse_menu=used_mouse_menu@entry=0x7fffffffd68b, end_time=end_time@entry=0x0) at keyboard.c:2497
echo_current = false
c = <optimized out>
jmpcount = <optimized out>
local_getcjmp =
{{__jmpbuf = {93825009513893, 93825026478419, 18474, 0, 35328, 93825016046691, 0, 1}, __mask_was_saved = 1451053389, __saved_mask = {__val = {93824994266479, 93825009513888, 140737488344288, 93825009513893, 35328, 0, 93824993873484, 938
25009513888, 160, 73902, 0, 18475, 140737488343904, 93825011634509, 0, 0}}}}
save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
tem = <optimized out>
save = <optimized out>
previous_echo_area_message = 0x0
also_record = 0x0
reread = false
recorded = false
polling_stopped_here = false
orig_kboard = 0x555555e81710
#8 0x000055555567eb31 in read_key_sequence (keybuf=keybuf@entry=0x7fffffffd7a0, prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buff
er@entry=true, prevent_redisplay=prevent_redisplay@entry=false) at keyboard.c:9546
interrupted_kboard = 0x555555e81710
interrupted_frame = 0x555555e35798
key = <optimized out>
used_mouse_menu = false
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
new_binding = <optimized out>
t = 0
echo_start = 0
keys_start = 0
current_binding = 0x555556db11a3
first_unbound = 31
mock_input = 0
used_mouse_menu_history = {false <repeats 30 times>}
fkey = {parent = 0x555555e39f63, map = 0x555555e39f63, start = 0, end = 0}
keytran = {parent = 0x7fffea246523, map = 0x7fffea246523, start = 0, end = 0}
indec = {parent = 0x555555e39f53, map = 0x555555e39f53, start = 0, end = 0}
shift_translated = false
delayed_switch_frame = 0x0
original_uppercase = 0x0
original_uppercase_position = -1
dummyflag = false
fake_prefixed_keys = 0x0
first_event = 0x0
second_event = <optimized out>
#9 0x00005555556803fc in command_loop_1 () at keyboard.c:1354
cmd = <optimized out>
keybuf =
{0x36, 0xfa, 0x126, 0x2aaa94354e18, 0x0, 0x4000000010000000, 0x400000003f000000, 0x555555d994a0 <lispsym>, 0x7fffffffd8b0, 0x5555556ef2ca <eval_sub+586>, 0x4, 0x3400000013, 0x0, 0x0, 0x0, 0x4, 0x5b0000006e, 0x0, 0x555555e74db8, 0x120, 0x7ffff
1aaec40 <main_arena>, 0x5d6fc5937978a300, 0x78, 0x7fffffffd880, 0x0, 0x555555e3a033, 0x0, 0x5555556eccf4 <unbind_to+148>, 0x8, 0x8340}
i = <optimized out>
prev_modiff = 2705
prev_buffer = 0x5555565cf5a0
#10 0x00005555556ec43e in internal_condition_case (bfun=bfun@entry=0x555555680210 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x555555676ed0 <cmd_error>) at eval.c:1359
val = <optimized out>
c = 0x555555e64100
#11 0x0000555555671774 in command_loop_2 (ignore=ignore@entry=0x0) at keyboard.c:1095
val = 0x0
#12 0x00005555556ec3ad in internal_catch (tag=tag@entry=0xd740, func=func@entry=0x555555671750 <command_loop_2>, arg=arg@entry=0x0) at eval.c:1120
val = <optimized out>
c = 0x555555e817e0
#13 0x000055555567170b in command_loop () at keyboard.c:1074
#14 0x0000555555676ae6 in recursive_edit_1 () at keyboard.c:718
val = <optimized out>
#15 0x0000555555676e06 in Frecursive_edit () at keyboard.c:790
buffer = <optimized out>
#16 0x0000555555593e59 in main (argc=2, argv=<optimized out>) at emacs.c:2047
stack_bottom_variable = 0x300000003
no_loadup = false
junk = 0x0
dname_arg = 0x0
ch_to_dir = 0x0
original_pwd = <optimized out>
dump_mode = <optimized out>
skip_args = 1
temacs = 0x0
attempt_load_pdump = <optimized out>
rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615}
lc_all = <optimized out>
sockfd = -1
module_assertions = <optimized out>
[-- Attachment #5: Type: text/plain, Size: 21434 bytes --]
* * *
In GNU Emacs 28.0.50 (build 4, x86_64-pc-linux-gnu, X toolkit, cairo version 1.15.10, Xaw3d scroll bars)
of 2020-11-07 built on langa
Repository revision: 423b6b62296df0558cf16f286dd268e0b49b3bce
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Trisquel GNU/Linux Etiona (9.0)
Configured using:
'configure --without-gconf --without-gsettings --without-gpm
--with-x-toolkit=lucid --with-xaw3d --with-mailutils
--prefix=/data/bandali/u/local'
Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND DBUS GLIB NOTIFY INOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB
TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
PDUMPER LCMS2
Important settings:
value of $LANG: en_CA.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
Major mode: Group
Minor modes in effect:
gnus-topic-mode: t
gnus-undo-mode: t
yas-global-mode: t
yas-minor-mode: t
server-mode: t
global-hl-todo-mode: t
global-page-break-lines-mode: t
pixel-scroll-mode: t
amx-mode: t
counsel-mode: t
ivy-mode: t
recentf-mode: t
save-place-mode: t
savehist-mode: t
show-paren-mode: t
winner-mode: t
display-battery-mode: t
display-time-mode: t
global-auto-revert-mode: t
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
global-prettify-symbols-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
temp-buffer-resize-mode: t
buffer-read-only: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-screen hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-screen
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-lilypond hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-eval hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-eval
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-id hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-id
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-sql hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-sql
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-latex hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-latex
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-w3m hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-w3m
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-mobile hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-mobile
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-scheme hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-scheme
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-calc hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-calc
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-feed hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-feed
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-clojure hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-clojure
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-faces hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-faces
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-shell hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-shell
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-table hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-table
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-eww hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-eww
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-lint hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-lint
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-rmail hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-rmail
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-list hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-list
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-octave hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-octave
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-js hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-js
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-asymptote hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-asymptote
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-python hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-python
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-sed hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-sed
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-element hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-element
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-archive hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-archive
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ebnf hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-mscgen hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-mscgen
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-sqlite hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-capture hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-capture
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ocaml hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ocaml
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-perl hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-perl
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-goto hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-goto
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-makefile hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-makefile
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-irc hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-irc
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-picolisp hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-awk hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-awk
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-mouse hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-mouse
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-eshell hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-eshell
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ruby hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ruby
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-J hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-J
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-attach hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-attach
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-habit hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-habit
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-ascii hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-ascii
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-macs hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-macs
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-io hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-io
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-tempo hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-tempo
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-lisp hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-lisp
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-plot hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-plot
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-org hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-org
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-docview hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-docview
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-bbdb hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-bbdb
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-attach-git hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-attach-git
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-icalendar hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-icalendar
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-emacs-lisp hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ledger hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ledger
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-publish hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-publish
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-ctags hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-ctags
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-odt hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-odt
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-md hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-md
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-entities hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-entities
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-haskell hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-haskell
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-fortran hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-fortran
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-sass hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-sass
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-info hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-info
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-timer hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-timer
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-matlab hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-matlab
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-inlinetask hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-inlinetask
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-gnus hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-gnus
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-groovy hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-groovy
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-eshell hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-eshell
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-datetree hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-datetree
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-plantuml hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-lua hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-lua
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-num hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-num
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-abc hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-abc
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-man hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-man
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-latex hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-latex
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-footnote hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-footnote
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-core hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-core
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-pcomplete hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-pcomplete
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-indent hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-indent
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-macro hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-macro
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-stan hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-stan
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-tangle hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-tangle
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-dot hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-dot
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-loaddefs hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-clock hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-clock
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-forth hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-forth
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-C hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-C
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-shen hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-shen
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-maxima hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-maxima
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-protocol hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-protocol
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-compat hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-compat
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-vala hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-vala
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-keys hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-keys
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-src hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-src
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-java hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-java
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-table hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-table
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-css hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-css
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-hledger hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-hledger
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-bibtex hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-bibtex
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ditaa hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-beamer hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-beamer
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-texinfo hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-colview hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-colview
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-gnuplot hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ol-mhe hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ol-mhe
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-duration hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-duration
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-exp hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-exp
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-org hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-org
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-processing hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-processing
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-coq hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-coq
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-version hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-version
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-lob hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-lob
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-R hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-R
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ox-html hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ox-html
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-agenda hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-agenda
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-install hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-install
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-comint hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-comint
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/ob-ref hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/ob-ref
/home/bandali/.emacs.d/elpa/org-plus-contrib-20201019/org-crypt hides /data/bandali/u/local/share/emacs/28.0.50/lisp/org/org-crypt
Features:
(shadow sort gnus-cite orgalist org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-footnote org-src ob-comint org-pcomplete pcomplete
org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat org-macs
org-loaddefs flyspell ispell mail-extr emacsbug thingatpt gnus-async qp
gnus-ml gnus-topic nndraft nnmh gnutls utf-7 epa-file network-stream nsm
nnfolder nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp
gnus-cache ebdb-gnus gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime
smime dig gnus-sum shr kinsoku svg dom gnus-group gnus-undo gnus-start
gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win ebdb-message
sendmail message rmc puny rfc822 mml mml-sec epa derived epg epg-config
mm-decode mm-bodies mm-encode mail-parse rfc2231 gmm-utils mailheader
ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar
ezimage dframe find-func eieio-base cal-menu calendar cal-loaddefs
timezone gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045
ietf-drums time-date mail-utils mm-util mail-prsvr boxquote rect
yasnippet server hl-todo pcase disp-table page-break-lines delight
pixel-scroll amx easy-mmode s counsel xdg xref project dired-x dired
dired-loaddefs compile text-property-search comint ansi-color swiper
cl-extra help-mode ido ivy delsel colir color ivy-overlay recentf
tree-widget wid-edit refinery-theme finder-inf info package easymenu
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core eieio-loaddefs password-cache json
map url-vars saveplace savehist paren bandali-erc bandali-ebdb
bandali-message bandali-gnus bandali-dired bandali-ibuffer ibuf-macs
bandali-eshell bandali-ivy bandali-theme bandali-org edmacro kmacro
advice winner ring format-spec battery dbus xml subr-x seq byte-opt
bytecomp byte-compile cconv time autorevert filenotify cl-macs gv
cl-loaddefs cl-lib 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 button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting font-render-setting cairo x-toolkit x
multi-tty make-network-process emacs)
Memory information:
((conses 16 312034 24023)
(symbols 48 28635 4)
(strings 32 94007 4976)
(string-bytes 1 3322781)
(vectors 16 45126)
(vector-slots 8 578609 7922)
(floats 8 378 192)
(intervals 56 1531 0)
(buffers 992 23))
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-07 18:39 bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty Amin Bandali
@ 2020-11-07 18:58 ` Eli Zaretskii
2020-11-07 20:03 ` Amin Bandali
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-07 18:58 UTC (permalink / raw)
To: Amin Bandali; +Cc: 44506
> From: Amin Bandali <bandali@gnu.org>
> Date: Sat, 07 Nov 2020 13:39:14 -0500
>
> I noticed today that when trying to open the following message (attached
> with John's permission) using Gnus in a terminal emulator or a tty in
> GNU/Linux, it results in Emacs quitting with a segfault. I'm also
> attaching the result of running `bt full' in GDB after the segfault.
> The issue seems related in part to the inclusion of Persian characters
> in the message body.
Just visiting the text you send in "emacs -Q -nw" doesn't cause any
segfaults. Does it happen to you in "emacs -Q"?
> #0 0x0000555555639248 in encode_terminal_code (src=0x7ffff7f61cc0, src_len=src_len@entry=1, coding=coding@entry=0x555555e7ec00) at term.c:564
> cmp = 0x0
> gstring = 0x0
> i = <optimized out>
> src_end = 0x7ffff7f61cf0
> buf = 0x5555561483a0 ' ' <repeats 94 times>, "John ،متسود یسر", '-' <repeats 39 times>
> nchars = 0
> nbytes = 0
> required = <optimized out>
> tbase = 0x0
> charset_list = 0x7fffea1f724b
This is an optimized build, so it's hard to understand what caused the
crash. According to the line number, it crashes here:
if (src->u.cmp.automatic)
{
gstring = composition_gstring_from_id (src->u.cmp.id);
required = src->slice.cmp.to - src->slice.cmp.from + 1;
}
else
{
cmp = composition_table[src->u.cmp.id]; <<<<<<<<<<<<<<<
required = cmp->glyph_len;
}
If that is true, then I don't understand how it happened: we don't use
any compositions except automatic in Emacs, so I'm unsure how you get
to that place. Can you see which place in the code indeed crashes and
why?
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-07 18:58 ` Eli Zaretskii
@ 2020-11-07 20:03 ` Amin Bandali
2020-11-07 20:29 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-07 20:03 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Eric Abrahamsen, 44506
[-- Attachment #1: Type: text/plain, Size: 2583 bytes --]
Eli Zaretskii writes:
>> From: Amin Bandali <bandali@gnu.org>
>> Date: Sat, 07 Nov 2020 13:39:14 -0500
>>
>> I noticed today that when trying to open the following message (attached
>> with John's permission) using Gnus in a terminal emulator or a tty in
>> GNU/Linux, it results in Emacs quitting with a segfault. I'm also
>> attaching the result of running `bt full' in GDB after the segfault.
>> The issue seems related in part to the inclusion of Persian characters
>> in the message body.
>
> Just visiting the text you send in "emacs -Q -nw" doesn't cause any
> segfaults. Does it happen to you in "emacs -Q"?
>
It does not indeed. With -Q, visiting the message body saved into a
regular text file or opening the actual message using Gnus does not
result in a segfault.
After some bisecting of my config files, I narrowed the segaulting of
Gnus when opening that message down to inclusion of (require 'ebdb-gnus)
in my configs. ebdb-gnus is part of EBDB, available on GNU ELPA. I'm
Cc'ing Eric, EBDB's creator and maintainer, in case he might have any
ideas.
>> #0 0x0000555555639248 in encode_terminal_code (src=0x7ffff7f61cc0,
>> src_len=src_len@entry=1, coding=coding@entry=0x555555e7ec00) at
>> term.c:564
>> cmp = 0x0
>> gstring = 0x0
>> i = <optimized out>
>> src_end = 0x7ffff7f61cf0
>> buf = 0x5555561483a0 ' ' <repeats 94 times>, "John ،متسود
>> یسر", '-' <repeats 39 times>
>> nchars = 0
>> nbytes = 0
>> required = <optimized out>
>> tbase = 0x0
>> charset_list = 0x7fffea1f724b
>
> This is an optimized build, so it's hard to understand what caused the
> crash. According to the line number, it crashes here:
>
> if (src->u.cmp.automatic)
> {
> gstring = composition_gstring_from_id (src->u.cmp.id);
> required = src->slice.cmp.to - src->slice.cmp.from + 1;
> }
> else
> {
> cmp = composition_table[src->u.cmp.id]; <<<<<<<<<<<<<<<
> required = cmp->glyph_len;
> }
>
> If that is true, then I don't understand how it happened: we don't use
> any compositions except automatic in Emacs, so I'm unsure how you get
> to that place. Can you see which place in the code indeed crashes and
> why?
>
GDB's source display does indeed highlight that line for me. Is this
the confirmation you were looking for, or did you mean I should look
into disabling optimization and *then* run Emacs through GDB to collect
the backtrace?
Thanks for your help.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-07 20:03 ` Amin Bandali
@ 2020-11-07 20:29 ` Eli Zaretskii
2020-11-08 4:03 ` Eric Abrahamsen
2020-11-08 4:05 ` Eric Abrahamsen
0 siblings, 2 replies; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-07 20:29 UTC (permalink / raw)
To: Amin Bandali; +Cc: eric, 44506
> From: Amin Bandali <bandali@gnu.org>
> Cc: 44506@debbugs.gnu.org, Eric Abrahamsen <eric@ericabrahamsen.net>
> Date: Sat, 07 Nov 2020 15:03:53 -0500
>
> After some bisecting of my config files, I narrowed the segaulting of
> Gnus when opening that message down to inclusion of (require 'ebdb-gnus)
> in my configs. ebdb-gnus is part of EBDB, available on GNU ELPA. I'm
> Cc'ing Eric, EBDB's creator and maintainer, in case he might have any
> ideas.
I don't see anything in EBDB that could cause Emacs to use static
compositions, but maybe I'm missing something.
> > if (src->u.cmp.automatic)
> > {
> > gstring = composition_gstring_from_id (src->u.cmp.id);
> > required = src->slice.cmp.to - src->slice.cmp.from + 1;
> > }
> > else
> > {
> > cmp = composition_table[src->u.cmp.id]; <<<<<<<<<<<<<<<
> > required = cmp->glyph_len;
> > }
> >
> > If that is true, then I don't understand how it happened: we don't use
> > any compositions except automatic in Emacs, so I'm unsure how you get
> > to that place. Can you see which place in the code indeed crashes and
> > why?
>
> GDB's source display does indeed highlight that line for me. Is this
> the confirmation you were looking for, or did you mean I should look
> into disabling optimization and *then* run Emacs through GDB to collect
> the backtrace?
Reproducing in an unoptimized build would be the most efficient way of
telling if that's indeed something related to static compositions.
Thanks.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-07 20:29 ` Eli Zaretskii
@ 2020-11-08 4:03 ` Eric Abrahamsen
2020-11-08 14:56 ` Eli Zaretskii
2020-11-08 4:05 ` Eric Abrahamsen
1 sibling, 1 reply; 22+ messages in thread
From: Eric Abrahamsen @ 2020-11-08 4:03 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Amin Bandali, 44506
On 11/07/20 22:29 PM, Eli Zaretskii wrote:
>> From: Amin Bandali <bandali@gnu.org>
>> Cc: 44506@debbugs.gnu.org, Eric Abrahamsen <eric@ericabrahamsen.net>
>> Date: Sat, 07 Nov 2020 15:03:53 -0500
>>
>> After some bisecting of my config files, I narrowed the segaulting of
>> Gnus when opening that message down to inclusion of (require 'ebdb-gnus)
>> in my configs. ebdb-gnus is part of EBDB, available on GNU ELPA. I'm
>> Cc'ing Eric, EBDB's creator and maintainer, in case he might have any
>> ideas.
>
> I don't see anything in EBDB that could cause Emacs to use static
> compositions, but maybe I'm missing something.
FWIW I was able to reproduce the segfault in terminal (not in GUI). I
don't know what static compositions are, but the places where EBDB
messes with lower-level character stuff are pasted below. As you can see
it's pretty ad-hoc stuff.
There's also ebdb-i18n.el, but that mostly just involves looking up the
scripts of characters in `char-script-table'.
(defconst ebdb-char-fold-table
(eval-when-compile
(let ((tbl (make-char-table 'char-fold-table))
(uni (unicode-property-table-internal 'decomposition))
;; Lowercase and uppercase alphabet.
(target-seq (append (number-sequence 65 90)
(number-sequence 97 122))))
;; I don't understand what's happening here, but it's necessary.
(let ((func (char-table-extra-slot uni 1)))
(map-char-table (lambda (char v)
(when (consp char)
(funcall func (car char) v uni)))
uni))
;; Create lists of equivalent chars, keyed to the most basic
;; ascii letter.
(map-char-table
(lambda (char decomp)
(when (consp decomp)
(when (symbolp (car decomp))
(setq decomp (cdr decomp)))
(when (memq (car decomp) target-seq)
(aset tbl (car decomp)
(cons char
(aref tbl (car decomp)))))))
uni)
;; Then turn the lists into regexps.
(map-char-table
(lambda (char dec-list)
(let ((re (regexp-opt (cons (char-to-string char)
(mapcar #'string dec-list)))))
(aset tbl char re)))
tbl)
tbl))
"Char-table holding regexps used in char fold searches.
Keys are characters in the upper- and lower-case ascii ranges.
Values are a regexp matching all characters that decompose to the
key character.")
(defun ebdb-char-fold-to-regexp (string)
"A highly simplified version of `char-fold-to-regexp'.
Only converts characters in STRING that decompose to the range
[a-zA-Z]."
(let ((out nil)
(end (length string))
char
(i 0))
(while (< i end)
(setq char (aref string i))
(push
(or (aref ebdb-char-fold-table char)
(string char))
out)
(cl-incf i))
(setq out (apply #'concat (nreverse out)))
(if (> (length out) 5000)
(regexp-quote string)
out)))
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-07 20:29 ` Eli Zaretskii
2020-11-08 4:03 ` Eric Abrahamsen
@ 2020-11-08 4:05 ` Eric Abrahamsen
1 sibling, 0 replies; 22+ messages in thread
From: Eric Abrahamsen @ 2020-11-08 4:05 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Amin Bandali, 44506
On 11/07/20 22:29 PM, Eli Zaretskii wrote:
>> From: Amin Bandali <bandali@gnu.org>
>> Cc: 44506@debbugs.gnu.org, Eric Abrahamsen <eric@ericabrahamsen.net>
>> Date: Sat, 07 Nov 2020 15:03:53 -0500
>>
>> After some bisecting of my config files, I narrowed the segaulting of
>> Gnus when opening that message down to inclusion of (require 'ebdb-gnus)
>> in my configs. ebdb-gnus is part of EBDB, available on GNU ELPA. I'm
>> Cc'ing Eric, EBDB's creator and maintainer, in case he might have any
>> ideas.
>
> I don't see anything in EBDB that could cause Emacs to use static
> compositions, but maybe I'm missing something.
FWIW I was able to reproduce the segfault in terminal (not in GUI). I
don't know what static compositions are, but the places where EBDB
messes with lower-level character stuff are pasted below. As you can see
it's pretty ad-hoc stuff.
There's also ebdb-i18n.el, but that mostly just involves looking up the
scripts of characters in `char-script-table'.
(defconst ebdb-char-fold-table
(eval-when-compile
(let ((tbl (make-char-table 'char-fold-table))
(uni (unicode-property-table-internal 'decomposition))
;; Lowercase and uppercase alphabet.
(target-seq (append (number-sequence 65 90)
(number-sequence 97 122))))
;; I don't understand what's happening here, but it's necessary.
(let ((func (char-table-extra-slot uni 1)))
(map-char-table (lambda (char v)
(when (consp char)
(funcall func (car char) v uni)))
uni))
;; Create lists of equivalent chars, keyed to the most basic
;; ascii letter.
(map-char-table
(lambda (char decomp)
(when (consp decomp)
(when (symbolp (car decomp))
(setq decomp (cdr decomp)))
(when (memq (car decomp) target-seq)
(aset tbl (car decomp)
(cons char
(aref tbl (car decomp)))))))
uni)
;; Then turn the lists into regexps.
(map-char-table
(lambda (char dec-list)
(let ((re (regexp-opt (cons (char-to-string char)
(mapcar #'string dec-list)))))
(aset tbl char re)))
tbl)
tbl))
"Char-table holding regexps used in char fold searches.
Keys are characters in the upper- and lower-case ascii ranges.
Values are a regexp matching all characters that decompose to the
key character.")
(defun ebdb-char-fold-to-regexp (string)
"A highly simplified version of `char-fold-to-regexp'.
Only converts characters in STRING that decompose to the range
[a-zA-Z]."
(let ((out nil)
(end (length string))
char
(i 0))
(while (< i end)
(setq char (aref string i))
(push
(or (aref ebdb-char-fold-table char)
(string char))
out)
(cl-incf i))
(setq out (apply #'concat (nreverse out)))
(if (> (length out) 5000)
(regexp-quote string)
out)))
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 4:03 ` Eric Abrahamsen
@ 2020-11-08 14:56 ` Eli Zaretskii
2020-11-08 18:27 ` Amin Bandali
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-08 14:56 UTC (permalink / raw)
To: Eric Abrahamsen; +Cc: bandali, 44506
> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: Amin Bandali <bandali@gnu.org>, 44506@debbugs.gnu.org
> Date: Sat, 07 Nov 2020 20:03:14 -0800
>
> >> After some bisecting of my config files, I narrowed the segaulting of
> >> Gnus when opening that message down to inclusion of (require 'ebdb-gnus)
> >> in my configs. ebdb-gnus is part of EBDB, available on GNU ELPA. I'm
> >> Cc'ing Eric, EBDB's creator and maintainer, in case he might have any
> >> ideas.
> >
> > I don't see anything in EBDB that could cause Emacs to use static
> > compositions, but maybe I'm missing something.
>
> FWIW I was able to reproduce the segfault in terminal (not in GUI).
Half the kingdom for a reproduction recipe that doesn't need Gnus or
EBDB, or at least starts with "emacs -Q" and loads whatever packages
are needed as part of the recipe.
> I don't know what static compositions are, but the places where EBDB
> messes with lower-level character stuff are pasted below. As you can
> see it's pretty ad-hoc stuff.
I don't think I see the relevance, not yet. The crash happened during
routine redisplay, and ebdb-search, which is the consumer of
ebdb-char-fold-table, is nowhere on the crash backtrace.
So I still think a backtrace from an unoptimized build, where I can
see the exact locus of the crash and ask for values of some variables,
would be the fastest path to finding the culprit.
Thanks.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 14:56 ` Eli Zaretskii
@ 2020-11-08 18:27 ` Amin Bandali
2020-11-08 18:54 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-08 18:27 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Eric Abrahamsen, 44506
[-- Attachment #1.1: Type: text/plain, Size: 332 bytes --]
Eli Zaretskii writes:
[...]
>
> So I still think a backtrace from an unoptimized build, where I can
> see the exact locus of the crash and ask for values of some variables,
> would be the fastest path to finding the culprit.
>
Please find attached the result of `bt full' from an unoptimized build.
>
> Thanks.
>
Thanks again.
[-- Attachment #1.2: bt-full-debug.txt --]
[-- Type: text/plain, Size: 8107 bytes --]
#0 0x00005555556be41e in encode_terminal_code (src=0x7ffff7f59400, src_len=1, coding=0x55555615e330) at term.c:564
cmp = 0x0
gstring = XIL(0)
i = 0
src_end = 0x7ffff7f59430
buf = 0x555556241720 ' ' <repeats 78 times>, "John ،متسود یسر", '-' <repeats 55 times>, "\377\377\377"
nchars = 0
nbytes = 0
required = 5
tlen = 0
tbase = 0x0
charset_list = XIL(0x7fffea1f684b)
#1 0x00005555556beef1 in tty_write_glyphs (f=0x555556113798, string=0x7ffff7f59400, len=94) at term.c:773
face_id = 11
conversion_buffer = 0x555556241b10 ' ' <repeats 78 times>, "John ،متسود یسر", '-' <repeats 55 times>
coding = 0x55555615e330
n = 1
stringlen = 1
tty = 0x55555615e5a0
#2 0x00005555556c8ca3 in write_glyphs (f=0x555556113798, string=0x7ffff7f58290, len=94) at terminal.c:163
#3 0x00005555555a000c in update_frame_line (f=0x555556113798, vpos=24, updating_menu_p=false) at dispnew.c:5089
obody = 0x0
nbody = 0x7ffff7f58290
op1 = 0x7ffff174d858 <_IO_new_file_sync+184>
op2 = 0x55555611bd50
np1 = 0x3d60
nend = 0x7ffff7f5a000
tem = 0
osp = 2
nsp = 1444253696
begmatch = 21845
endmatch = -17056
olen = 0
nlen = 94
current_matrix = 0x55555611bfc0
desired_matrix = 0x55555611bd50
current_row = 0x555556125e20
desired_row = 0x555556123410
must_write_whole_line_p = true
write_spaces_p = false
colored_spaces_p = false
#4 0x000055555559f1fc in update_frame_1 (f=0x555556113798, force_p=true, inhibit_id_p=false, set_cursor_p=true, updating_menu_p=false) at dispnew.c:4787
current_matrix = 0x55555611bfc0
desired_matrix = 0x55555611bd50
i = 24
pause_p = 85
preempt_count = 17
#5 0x000055555559b03c in update_frame (f=0x555556113798, force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3246
paused_p = false
root_window = 0x555556590430
#6 0x00005555555f72d6 in redisplay_internal () at xdisp.c:16023
gcscrollbars = true
f_redisplay_flag = true
f = 0x555556113798
w = 0x555556113a00
sw = 0x555556113a00
fr = 0x555556113798
pending = false
must_finish = true
match_p = true
tlbufpos = {
charpos = 18373,
bytepos = 18400
}
tlendpos = {
charpos = 850,
bytepos = 850
}
number_of_visible_frames = 1
count = 3
sf = 0x555556113798
polling_stopped_here = true
tail = XIL(0x555556118ce3)
frame = XIL(0x55555611379d)
hscroll_retries = 0
garbaged_frame_retries = 0
consider_all_windows_p = true
update_miniwindow_p = true
#7 0x00005555555f4a20 in redisplay () at xdisp.c:15159
#8 0x0000555555738185 in read_char (commandflag=1, map=XIL(0x555556db2b63), prev_event=XIL(0), used_mouse_menu=0x7fffffffd56d, end_time=0x0) at keyboard.c:2497
echo_current = false
c = XIL(0)
jmpcount = 140737488343824
local_getcjmp = {{
__jmpbuf = {0, 0, 0, 93825003909856, 140737488344000, 93824995092361, 140737488344144, 93825003909856},
__mask_was_saved = 0,
__saved_mask = {
__val = {0, 140737488344032, 93824995092445, 140737121655267, 2478421848, 140737488344144, 93824995140529, 93825017785299, 3, 140737488344112, 0, 140737488344144, 938
25003909856, 0, 0, 140737488344144}
}
}}
save_jump = {{
__jmpbuf = {140737488344176, 0, 140737488344304, 93824994352582, 0, 48, 140737488344656, 35328},
__mask_was_saved = 35328,
__saved_mask = {
__val = {93825003945184, 140737488344256, 93824994326029, 93825017785299, 93825003945184, 35328, 35328, 140737488344288, 0, 0, 93825003909856, 140737488344336, 938249
94182452, 93825004550040, 93825003909856, 0}
}
}}
tem = XIL(0x555556744190)
save = make_fixnum(23456248737754)
previous_echo_area_message = XIL(0)
also_record = XIL(0)
reread = false
recorded = false
polling_stopped_here = false
orig_kboard = 0x555556160fc0
#9 0x000055555574b8e8 in read_key_sequence (keybuf=0x7fffffffd750, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9546
interrupted_kboard = 0x555556160fc0
interrupted_frame = 0x555556113798
key = XIL(0x47c5)
used_mouse_menu = false
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
new_binding = XIL(0x7fffffffd698)
count = 3
t = 0
echo_start = 0
keys_start = 0
current_binding = XIL(0x555556db2b63)
first_unbound = 31
mock_input = 0
used_mouse_menu_history = {false <repeats 30 times>}
fkey = {
parent = XIL(0x5555561178a3),
map = XIL(0x5555561178a3),
start = 0,
end = 0
}
keytran = {
parent = XIL(0x7fffea245b23),
map = XIL(0x7fffea245b23),
start = 0,
end = 0
}
indec = {
parent = XIL(0x555556117893),
map = XIL(0x555556117893),
start = 0,
end = 0
}
shift_translated = false
delayed_switch_frame = XIL(0)
original_uppercase = XIL(0)
original_uppercase_position = -1
dummyflag = false
starting_buffer = 0x555556744190
fake_prefixed_keys = XIL(0)
first_event = XIL(0)
second_event = XIL(0)
#10 0x000055555573447d in command_loop_1 () at keyboard.c:1354
cmd = XIL(0x92bca0)
keybuf =
{make_fixnum(13), make_fixnum(84), XIL(0x55555633fa53), XIL(0), XIL(0), XIL(0x5555560772e0), XIL(0x7fffffffd7b0), XIL(0), XIL(0), XIL(0x5555560772e0), XIL(0x7fffffffd7d0)
, XIL(0x55555580e789), XIL(0x7fffffffd7d0), XIL(0x5555560772e0), XIL(0), XIL(0), XIL(0x7fffffffd7f0), XIL(0x55555580e7dd), XIL(0), XIL(0x5633fa53), XIL(0x7fffffffd830), XIL(0x55555
5813d08), XIL(0x100000000), XIL(0x90), XIL(0), XIL(0x55555615c000), XIL(0x7fffffffd850), make_fixnum(0), XIL(0x7fffffffd860), XIL(0x555555813c11)}
i = 1
prev_modiff = 8325
prev_buffer = 0x555556744190
already_adjusted = false
#11 0x00005555558137cc in internal_condition_case (bfun=0x555555733fe3 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557335af <cmd_error>) at eval.c:1359
val = XIL(0x555556118043)
c = 0x55555615c000
#12 0x0000555555733bca in command_loop_2 (ignore=XIL(0)) at keyboard.c:1095
val = make_fixnum(0)
#13 0x0000555555812c26 in internal_catch (tag=XIL(0xd740), func=0x555555733b9d <command_loop_2>, arg=XIL(0)) at eval.c:1120
val = XIL(0x555555730588)
c = 0x55555615ced0
#14 0x0000555555733b68 in command_loop () at keyboard.c:1074
#15 0x0000555555733096 in recursive_edit_1 () at keyboard.c:718
count = 1
val = XIL(0x7fffffffd990)
#16 0x000055555573328e in Frecursive_edit () at keyboard.c:790
count = 0
buffer = XIL(0)
#17 0x000055555572f02b in main (argc=3, argv=0x7fffffffdbb8) at emacs.c:2047
stack_bottom_variable = 0x20
no_loadup = false
junk = 0x0
dname_arg = 0x0
ch_to_dir = 0x0
original_pwd = 0x0
dump_mode = 0x0
skip_args = 1
temacs = 0x0
attempt_load_pdump = true
rlim = {
rlim_cur = 10022912,
rlim_max = 18446744073709551615
}
lc_all = 0x0
sockfd = -1
module_assertions = false
Lisp Backtrace:
"redisplay_internal (C function)" (0x0)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 18:27 ` Amin Bandali
@ 2020-11-08 18:54 ` Eli Zaretskii
2020-11-08 19:20 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-08 18:54 UTC (permalink / raw)
To: Amin Bandali; +Cc: eric, 44506
> From: Amin Bandali <bandali@gnu.org>
> Cc: Eric Abrahamsen <eric@ericabrahamsen.net>, 44506@debbugs.gnu.org
> Date: Sun, 08 Nov 2020 13:27:04 -0500
>
> Please find attached the result of `bt full' from an unoptimized build.
Thanks.
> #0 0x00005555556be41e in encode_terminal_code (src=0x7ffff7f59400, src_len=1, coding=0x55555615e330) at term.c:564
> cmp = 0x0
> gstring = XIL(0)
> i = 0
> src_end = 0x7ffff7f59430
> buf = 0x555556241720 ' ' <repeats 78 times>, "John ،متسود یسر", '-' <repeats 55 times>, "\377\377\377"
> nchars = 0
> nbytes = 0
> required = 5
> tlen = 0
> tbase = 0x0
> charset_list = XIL(0x7fffea1f684b)
> #1 0x00005555556beef1 in tty_write_glyphs (f=0x555556113798, string=0x7ffff7f59400, len=94) at term.c:773
> face_id = 11
> conversion_buffer = 0x555556241b10 ' ' <repeats 78 times>, "John ،متسود یسر", '-' <repeats 55 times>
> coding = 0x55555615e330
> n = 1
> stringlen = 1
> tty = 0x55555615e5a0
> #2 0x00005555556c8ca3 in write_glyphs (f=0x555556113798, string=0x7ffff7f58290, len=94) at terminal.c:163
> #3 0x00005555555a000c in update_frame_line (f=0x555556113798, vpos=24, updating_menu_p=false) at dispnew.c:5089
Please show the output of these GDB commands:
(gdb) source /path/to/emacs/src/.gdbinit
(gdb) frame 0
(gdb) print *src
(gdb) frame 3
(gdb) pgrowx desired_row
(replace "/path/to/emacs/src" with the actual directory name of the
Emacs's src directory).
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 18:54 ` Eli Zaretskii
@ 2020-11-08 19:20 ` Eli Zaretskii
2020-11-08 20:39 ` Amin Bandali
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-08 19:20 UTC (permalink / raw)
To: bandali; +Cc: eric, 44506
> Date: Sun, 08 Nov 2020 20:54:48 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
>
> Please show the output of these GDB commands:
>
> (gdb) source /path/to/emacs/src/.gdbinit
> (gdb) frame 0
> (gdb) print *src
> (gdb) frame 3
> (gdb) pgrowx desired_row
And one more:
(gdb) print composition_table_size
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 19:20 ` Eli Zaretskii
@ 2020-11-08 20:39 ` Amin Bandali
2020-11-09 3:31 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-08 20:39 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: eric, 44506
[-- Attachment #1.1: Type: text/plain, Size: 478 bytes --]
Eli Zaretskii writes:
>> Date: Sun, 08 Nov 2020 20:54:48 +0200
>> From: Eli Zaretskii <eliz@gnu.org>
>> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
>>
>> Please show the output of these GDB commands:
>>
>> (gdb) source /path/to/emacs/src/.gdbinit
>> (gdb) frame 0
>> (gdb) print *src
>> (gdb) frame 3
>> (gdb) pgrowx desired_row
>
> And one more:
>
> (gdb) print composition_table_size
>
Please find the outputs attached.
Thanks.
[-- Attachment #1.2: requested-gdb-commands.txt --]
[-- Type: text/plain, Size: 20447 bytes --]
(gdb) source /home/bandali/s/emacs/src/.gdbinit
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from terminal]
Redefine command "xgetptr"? (y or n) [answered Y; input not from terminal]
Redefine command "xgetint"? (y or n) [answered Y; input not from terminal]
Redefine command "xgettype"? (y or n) [answered Y; input not from terminal]
Redefine command "xgetsym"? (y or n) [answered Y; input not from terminal]
Redefine command "xsymname"? (y or n) [answered Y; input not from terminal]
Redefine command "pr"? (y or n) [answered Y; input not from terminal]
Redefine command "pp"? (y or n) [answered Y; input not from terminal]
Redefine command "pv"? (y or n) [answered Y; input not from terminal]
Redefine command "xfmt"? (y or n) [answered Y; input not from terminal]
Redefine command "ppt"? (y or n) [answered Y; input not from terminal]
Redefine command "pitmethod"? (y or n) [answered Y; input not from terminal]
Redefine command "pitx"? (y or n) [answered Y; input not from terminal]
Redefine command "pit"? (y or n) [answered Y; input not from terminal]
Redefine command "prowx"? (y or n) [answered Y; input not from terminal]
Redefine command "prow"? (y or n) [answered Y; input not from terminal]
Redefine command "pcursorx"? (y or n) [answered Y; input not from terminal]
Redefine command "pcursor"? (y or n) [answered Y; input not from terminal]
Redefine command "pwinx"? (y or n) [answered Y; input not from terminal]
Redefine command "pwin"? (y or n) [answered Y; input not from terminal]
Redefine command "pbiditype"? (y or n) [answered Y; input not from terminal]
Redefine command "pgx"? (y or n) [answered Y; input not from terminal]
Redefine command "pg"? (y or n) [answered Y; input not from terminal]
Redefine command "pgi"? (y or n) [answered Y; input not from terminal]
Redefine command "pgn"? (y or n) [answered Y; input not from terminal]
Redefine command "pgrowx"? (y or n) [answered Y; input not from terminal]
Redefine command "pgrow"? (y or n) [answered Y; input not from terminal]
Redefine command "pgrowit"? (y or n) [answered Y; input not from terminal]
Redefine command "prowlims"? (y or n) [answered Y; input not from terminal]
Redefine command "pmtxrows"? (y or n) [answered Y; input not from terminal]
Redefine command "xtype"? (y or n) [answered Y; input not from terminal]
Redefine command "pvectype"? (y or n) [answered Y; input not from terminal]
Redefine command "xvectype"? (y or n) [answered Y; input not from terminal]
Redefine command "pvecsize"? (y or n) [answered Y; input not from terminal]
Redefine command "xvecsize"? (y or n) [answered Y; input not from terminal]
Redefine command "xint"? (y or n) [answered Y; input not from terminal]
Redefine command "xptr"? (y or n) [answered Y; input not from terminal]
Redefine command "xmarker"? (y or n) [answered Y; input not from terminal]
Redefine command "xoverlay"? (y or n) [answered Y; input not from terminal]
Redefine command "xsymbol"? (y or n) [answered Y; input not from terminal]
Redefine command "xstring"? (y or n) [answered Y; input not from terminal]
Redefine command "xvector"? (y or n) [answered Y; input not from terminal]
Redefine command "xprocess"? (y or n) [answered Y; input not from terminal]
Redefine command "xframe"? (y or n) [answered Y; input not from terminal]
Redefine command "xcompiled"? (y or n) [answered Y; input not from terminal]
Redefine command "xwindow"? (y or n) [answered Y; input not from terminal]
Redefine command "xwinconfig"? (y or n) [answered Y; input not from terminal]
Redefine command "xsubr"? (y or n) [answered Y; input not from terminal]
Redefine command "xchartable"? (y or n) [answered Y; input not from terminal]
Redefine command "xsubchartable"? (y or n) [answered Y; input not from terminal]
Redefine command "xboolvector"? (y or n) [answered Y; input not from terminal]
Redefine command "xbuffer"? (y or n) [answered Y; input not from terminal]
Redefine command "xhashtable"? (y or n) [answered Y; input not from terminal]
Redefine command "xcons"? (y or n) [answered Y; input not from terminal]
Redefine command "nextcons"? (y or n) [answered Y; input not from terminal]
Redefine command "xcar"? (y or n) [answered Y; input not from terminal]
Redefine command "xcdr"? (y or n) [answered Y; input not from terminal]
Redefine command "xlist"? (y or n) [answered Y; input not from terminal]
Redefine command "xfloat"? (y or n) [answered Y; input not from terminal]
Redefine command "xscrollbar"? (y or n) [answered Y; input not from terminal]
Redefine command "xpr"? (y or n) [answered Y; input not from terminal]
Redefine command "xprintstr"? (y or n) [answered Y; input not from terminal]
Redefine command "xprintsym"? (y or n) [answered Y; input not from terminal]
Redefine command "xcoding"? (y or n) [answered Y; input not from terminal]
Redefine command "xcharset"? (y or n) [answered Y; input not from terminal]
Redefine command "xfontset"? (y or n) [answered Y; input not from terminal]
Redefine command "xfont"? (y or n) [answered Y; input not from terminal]
Redefine command "xbacktrace"? (y or n) [answered Y; input not from terminal]
Redefine command "xprintbytestr"? (y or n) [answered Y; input not from terminal]
Redefine command "xwhichsymbols"? (y or n) [answered Y; input not from terminal]
Redefine command "hookpost-backtrace"? (y or n) [answered Y; input not from terminal]
Redefine command "ff"? (y or n) [answered Y; input not from terminal]
DISPLAY = :0
TERM = xterm
Breakpoint 3 at 0x55555572c75b: file emacs.c, line 377.
Breakpoint 4 at 0x5555556f821e: file xterm.c, line 10151.
(gdb) frame 0
#0 0x00005555556be4fb in encode_terminal_code (src=0x7ffff7f11670, src_len=1, coding=0x55555615e330) at term.c:564
(gdb) print *src
$1 = {
charpos = 490,
object = XIL(0x5555567924e5),
pixel_width = 1,
ascent = 0,
descent = 0,
voffset = 0,
type = 1,
multibyte_p = true,
left_box_line_p = false,
right_box_line_p = false,
overlaps_vertically_p = false,
padding_p = false,
glyph_not_available_p = false,
avoid_cursor_p = false,
resolved_level = 1,
bidi_type = 2,
face_id = 11,
font_type = 0,
slice = {
img = {
x = 0,
y = 0,
width = 0,
height = 0
},
cmp = {
from = 0,
to = 0
},
glyphless = {
upper_xoff = 0,
upper_yoff = 0,
lower_xoff = 0,
lower_yoff = 0
}
},
u = {
ch = 124,
cmp = {
automatic = false,
id = 62
},
img_id = 124,
stretch = {
height = 124,
ascent = 0
},
glyphless = {
method = 0,
for_no_font = true,
len = 15,
ch = 0
},
val = 124
}
}
(gdb) frame 3
#3 0x00005555555a000c in update_frame_line (f=0x555556113798, vpos=29, updating_menu_p=false) at dispnew.c:5089
(gdb) pgrowx desired_row
TEXT: 252 glyphs
0 0: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
1 1: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
2 2: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
3 3: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
4 4: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
5 5: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
6 6: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
7 7: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
8 8: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
9 9: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
10 10: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
11 11: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
12 12: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
13 13: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
14 14: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
15 15: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
16 16: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
17 17: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
18 18: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
19 19: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
20 20: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
21 21: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
22 22: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
23 23: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
24 24: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
25 25: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
26 26: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
27 27: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
28 28: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
29 29: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
30 30: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
31 31: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
32 32: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
33 33: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
34 34: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
35 35: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
36 36: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
37 37: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
38 38: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
39 39: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
40 40: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
41 41: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
42 42: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
43 43: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
44 44: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
45 45: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
46 46: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
47 47: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
48 48: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
49 49: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
50 50: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
51 51: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
52 52: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
53 53: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
54 54: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
55 55: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
56 56: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
57 57: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
58 58: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
59 59: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
60 60: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
61 61: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
62 62: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
63 63: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
64 64: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
65 65: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
66 66: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
67 67: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
68 68: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
69 69: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
70 70: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
71 71: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
72 72: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
73 73: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
74 74: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
75 75: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
76 76: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
77 77: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
78 78: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
79 79: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
80 80: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
81 81: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
82 82: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
83 83: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
84 84: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
85 85: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
86 86: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
87 87: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
88 88: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
89 89: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
90 90: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
91 91: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
92 92: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
93 93: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
94 94: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
95 95: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
96 96: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
97 97: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
98 98: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
99 99: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
100 100: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
101 101: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
102 102: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
103 103: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
104 104: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
105 105: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
106 106: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
107 107: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
108 108: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
109 109: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
110 110: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
111 111: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
112 112: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
113 113: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
114 114: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
115 115: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
116 116: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
117 117: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
118 118: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
119 119: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
120 120: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
121 121: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
122 122: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
123 123: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
124 124: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
125 125: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
126 126: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
127 127: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
128 128: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
129 129: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
130 130: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
131 131: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
132 132: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
133 133: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
134 134: CHAR[ ] pos=0 blev=1,btyp=B w=1 a+d=0+0 MB
135 135: CHAR[J] pos=502 blev=2,btyp=L w=1 a+d=0+0 MB
136 136: CHAR[o] pos=503 blev=2,btyp=L w=1 a+d=0+0 MB
137 137: CHAR[h] pos=504 blev=2,btyp=L w=1 a+d=0+0 MB
138 138: CHAR[n] pos=505 blev=2,btyp=L w=1 a+d=0+0 MB
139 139: CHAR[ ] pos=501 blev=1,btyp=R w=1 a+d=0+0 MB
140 140: COMP[1 (5..5)] pos=500 w=1 a+d=0+0 MB
141 141: COMP[1 (4..4)] pos=499 w=1 a+d=0+0 MB
142 142: COMP[1 (3..3)] pos=498 w=1 a+d=0+0 MB
143 143: COMP[1 (2..2)] pos=497 w=1 a+d=0+0 MB
144 144: COMP[1 (1..1)] pos=496 w=1 a+d=0+0 MB
145 145: COMP[1 (0..0)] pos=495 w=1 a+d=0+0 MB
146 146: CHAR[ ] pos=494 blev=1,btyp=R w=1 a+d=0+0 MB
147 147: COMP[0 (3..3)] pos=493 w=1 a+d=0+0 MB
148 148: COMP[0 (2..2)] pos=492 w=1 a+d=0+0 MB
149 149: COMP[0 (1..1)] pos=491 w=1 a+d=0+0 MB
150 150: COMP[62 (0..0)] pos=490 w=1 a+d=0+0 face=11 MB
151 151: CHAR[ ] pos=-1 blev=0,btyp=B w=1 a+d=0+0 MB
152 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
153 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
154 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
155 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
156 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
157 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
158 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
159 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
160 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
161 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
162 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
163 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
164 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
165 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
166 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
167 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
168 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
169 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
170 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
171 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
172 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
173 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
174 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
175 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
176 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
177 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
178 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
179 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
180 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
181 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
182 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
183 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
184 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
185 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
186 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
187 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
188 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
189 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
190 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
191 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
192 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
193 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
194 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
195 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
196 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
197 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
198 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
199 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
200 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
201 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
202 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
203 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
204 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
205 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
206 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
207 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
208 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
209 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
210 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
211 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
212 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
213 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
214 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
215 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
216 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
217 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
218 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
219 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
220 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
221 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
222 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
223 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
224 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
225 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
226 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
227 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
228 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
229 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
230 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
231 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
232 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
233 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
234 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
235 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
236 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
237 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
238 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
239 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
240 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
241 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
242 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
243 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
244 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
245 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
246 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
247 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
248 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
249 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
250 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
251 152: CHAR[ ] pos=-1 blev=0,btyp=UNDEF w=0 a+d=0+0
(gdb) print composition_table_size
$2 = 0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-08 20:39 ` Amin Bandali
@ 2020-11-09 3:31 ` Eli Zaretskii
2020-11-09 4:43 ` Amin Bandali
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-09 3:31 UTC (permalink / raw)
To: Amin Bandali; +Cc: eric, 44506
> From: Amin Bandali <bandali@gnu.org>
> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
> Date: Sun, 08 Nov 2020 15:39:56 -0500
>
> >> (gdb) source /path/to/emacs/src/.gdbinit
> >> (gdb) frame 0
> >> (gdb) print *src
> >> (gdb) frame 3
> >> (gdb) pgrowx desired_row
> >
> > And one more:
> >
> > (gdb) print composition_table_size
> >
>
> Please find the outputs attached.
Thanks. One more thing, and then I need to think how this could
happen:
(gdb) frame 3
(gdb) print (desired_row->glyphs[1])[149]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-09 3:31 ` Eli Zaretskii
@ 2020-11-09 4:43 ` Amin Bandali
2020-11-09 7:04 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-09 4:43 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: eric, 44506
[-- Attachment #1: Type: text/plain, Size: 1288 bytes --]
Eli Zaretskii writes:
[...]
>
> Thanks. One more thing, and then I need to think how this could
> happen:
>
> (gdb) frame 3
#3 0x00005555555a000c in update_frame_line (f=0x555556113798, vpos=24, updating_menu_p=false) at dispnew.c:5089
>
> (gdb) print (desired_row->glyphs[1])[149]
>
$1 = {
charpos = -1,
object = XIL(0),
pixel_width = 0,
ascent = 0,
descent = 0,
voffset = 0,
type = 0,
multibyte_p = false,
left_box_line_p = false,
right_box_line_p = false,
overlaps_vertically_p = false,
padding_p = false,
glyph_not_available_p = false,
avoid_cursor_p = false,
resolved_level = 0,
bidi_type = 0,
face_id = 0,
font_type = 0,
slice = {
img = {
x = 0,
y = 0,
width = 0,
height = 0
},
cmp = {
from = 0,
to = 0
},
glyphless = {
upper_xoff = 0,
upper_yoff = 0,
lower_xoff = 0,
lower_yoff = 0
}
},
u = {
ch = 32,
cmp = {
automatic = false,
id = 16
},
img_id = 32,
stretch = {
height = 32,
ascent = 0
},
glyphless = {
method = 0,
for_no_font = false,
len = 4,
ch = 0
},
val = 32
}
}
Thanks.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-09 4:43 ` Amin Bandali
@ 2020-11-09 7:04 ` Eli Zaretskii
2020-11-09 15:57 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-09 7:04 UTC (permalink / raw)
To: Amin Bandali; +Cc: eric, 44506
On November 9, 2020 6:43:59 AM GMT+02:00, Amin Bandali <bandali@gnu.org> wrote:
> Eli Zaretskii writes:
>
> [...]
> >
> > Thanks. One more thing, and then I need to think how this could
> > happen:
> >
> > (gdb) frame 3
>
> #3 0x00005555555a000c in update_frame_line (f=0x555556113798,
> vpos=24, updating_menu_p=false) at dispnew.c:5089
>
> >
> > (gdb) print (desired_row->glyphs[1])[149]
> >
>
> $1 = {
> charpos = -1,
> object = XIL(0),
> pixel_width = 0,
> ascent = 0,
> descent = 0,
> voffset = 0,
> type = 0,
> multibyte_p = false,
> left_box_line_p = false,
> right_box_line_p = false,
> overlaps_vertically_p = false,
> padding_p = false,
> glyph_not_available_p = false,
> avoid_cursor_p = false,
> resolved_level = 0,
> bidi_type = 0,
> face_id = 0,
> font_type = 0,
> slice = {
> img = {
> x = 0,
> y = 0,
> width = 0,
> height = 0
> },
> cmp = {
> from = 0,
> to = 0
> },
> glyphless = {
> upper_xoff = 0,
> upper_yoff = 0,
> lower_xoff = 0,
> lower_yoff = 0
> }
> },
> u = {
> ch = 32,
> cmp = {
> automatic = false,
> id = 16
> },
> img_id = 32,
> stretch = {
> height = 32,
> ascent = 0
> },
> glyphless = {
> method = 0,
> for_no_font = false,
> len = 4,
> ch = 0
> },
> val = 32
> }
> }
>
>
> Thanks.
Thanks, but this seems to be from a different GDB session? The vpos is 24 instead of 29 and the data of the glyph structure clearly differs from what pgrowx displayed in your previous report? I need consistent and coherent data from the same crash.
Or maybe you can come up with a reproduction recipe ? That'd really make the debugging much more efficient...
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-09 7:04 ` Eli Zaretskii
@ 2020-11-09 15:57 ` Eli Zaretskii
2020-11-10 5:42 ` Amin Bandali
2020-11-10 5:48 ` Eric Abrahamsen
0 siblings, 2 replies; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-09 15:57 UTC (permalink / raw)
To: bandali; +Cc: eric, 44506
> Date: Mon, 09 Nov 2020 09:04:58 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
>
> Thanks, but this seems to be from a different GDB session? The vpos is 24 instead of 29 and the data of the glyph structure clearly differs from what pgrowx displayed in your previous report? I need consistent and coherent data from the same crash.
>
> Or maybe you can come up with a reproduction recipe ? That'd really make the debugging much more efficient...
Alternatively, if you can give me an ssh login on that system, and set
up an account for me so that I could reproduce the problem, I could
debug it remotely on your system.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-09 15:57 ` Eli Zaretskii
@ 2020-11-10 5:42 ` Amin Bandali
2020-11-10 5:48 ` Eric Abrahamsen
1 sibling, 0 replies; 22+ messages in thread
From: Amin Bandali @ 2020-11-10 5:42 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: eric, 44506
[-- Attachment #1: Type: text/plain, Size: 1241 bytes --]
Eli Zaretskii writes:
>> Date: Mon, 09 Nov 2020 09:04:58 +0200
>> From: Eli Zaretskii <eliz@gnu.org>
>> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
>>
>> Thanks, but this seems to be from a different GDB session? The vpos
>> is 24 instead of 29 and the data of the glyph structure clearly
>> differs from what pgrowx displayed in your previous report? I need
>> consistent and coherent data from the same crash.
>>
>> Or maybe you can come up with a reproduction recipe ? That'd really
>> make the debugging much more efficient...
>
> Alternatively, if you can give me an ssh login on that system, and set
> up an account for me so that I could reproduce the problem, I could
> debug it remotely on your system.
>
Sure, I think that would indeed be easiest. Can you please email me
off-list a copy of your ssh public key? Alternatively, I could try
grabbing the one from fencepost; whichever way you prefer.
I did a debug build of Emacs on one of my servers, and will add a
minimal Gnus configuration to connect to a temporary account on my mail
server, where you would find a copy of the message. I will send you
more details about it off-list once I've finished setting it up.
Thanks,
amin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-09 15:57 ` Eli Zaretskii
2020-11-10 5:42 ` Amin Bandali
@ 2020-11-10 5:48 ` Eric Abrahamsen
2020-11-10 15:31 ` Eli Zaretskii
1 sibling, 1 reply; 22+ messages in thread
From: Eric Abrahamsen @ 2020-11-10 5:48 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: bandali, 44506
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Mon, 09 Nov 2020 09:04:58 +0200
>> From: Eli Zaretskii <eliz@gnu.org>
>> Cc: eric@ericabrahamsen.net, 44506@debbugs.gnu.org
>>
>> Thanks, but this seems to be from a different GDB session? The vpos
>> is 24 instead of 29 and the data of the glyph structure clearly
>> differs from what pgrowx displayed in your previous report? I need
>> consistent and coherent data from the same crash.
>>
>> Or maybe you can come up with a reproduction recipe ? That'd really
>> make the debugging much more efficient...
>
> Alternatively, if you can give me an ssh login on that system, and set
> up an account for me so that I could reproduce the problem, I could
> debug it remotely on your system.
I've tried today to come up with a recipe that doesn't involve
installing EBDB, but so far have failed. I tried edebugging the various
message-displaying functions to see exactly what was causing the bug,
but got no segfault so long as the functions were instrumented.
Basically EBDB attaches a hook to `gnus-article-prepare-hook', which
uses `gnus-fetch-original-field' to pull some data out of the article,
looks for records that match that data, and displays the records.
With "emacs -Q" there are no records to search or display, so I assumed
it must be the header-access functions causing the problem. But I wrote
a function that does most of what EBDB does, without actually using
EBDB, and it caused no segfault, so I don't know what's going on there,
sorry.
Eric
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-10 5:48 ` Eric Abrahamsen
@ 2020-11-10 15:31 ` Eli Zaretskii
2020-11-13 5:20 ` Amin Bandali
0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-10 15:31 UTC (permalink / raw)
To: Eric Abrahamsen; +Cc: bandali, 44506
> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Cc: bandali@gnu.org, 44506@debbugs.gnu.org
> Date: Mon, 09 Nov 2020 21:48:10 -0800
>
> I've tried today to come up with a recipe that doesn't involve
> installing EBDB, but so far have failed. I tried edebugging the various
> message-displaying functions to see exactly what was causing the bug,
> but got no segfault so long as the functions were instrumented.
>
> Basically EBDB attaches a hook to `gnus-article-prepare-hook', which
> uses `gnus-fetch-original-field' to pull some data out of the article,
> looks for records that match that data, and displays the records.
>
> With "emacs -Q" there are no records to search or display, so I assumed
> it must be the header-access functions causing the problem. But I wrote
> a function that does most of what EBDB does, without actually using
> EBDB, and it caused no segfault, so I don't know what's going on there,
> sorry.
Thank you for your efforts.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-10 15:31 ` Eli Zaretskii
@ 2020-11-13 5:20 ` Amin Bandali
2020-11-14 12:14 ` Eli Zaretskii
0 siblings, 1 reply; 22+ messages in thread
From: Amin Bandali @ 2020-11-13 5:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Eric Abrahamsen, 44506
[-- Attachment #1: Type: text/plain, Size: 1280 bytes --]
Eli Zaretskii writes:
>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Cc: bandali@gnu.org, 44506@debbugs.gnu.org
>> Date: Mon, 09 Nov 2020 21:48:10 -0800
>>
>> I've tried today to come up with a recipe that doesn't involve
>> installing EBDB, but so far have failed. I tried edebugging the various
>> message-displaying functions to see exactly what was causing the bug,
>> but got no segfault so long as the functions were instrumented.
>>
>> Basically EBDB attaches a hook to `gnus-article-prepare-hook', which
>> uses `gnus-fetch-original-field' to pull some data out of the article,
>> looks for records that match that data, and displays the records.
>>
>> With "emacs -Q" there are no records to search or display, so I assumed
>> it must be the header-access functions causing the problem. But I wrote
>> a function that does most of what EBDB does, without actually using
>> EBDB, and it caused no segfault, so I don't know what's going on there,
>> sorry.
>
> Thank you for your efforts.
>
I, too, would like to say thank you, both to Eli and Eric, for your
efforts and looking into this. I just sent information to Eli off-list
for accessing a test account I set up on a server of mine for debugging
this issue.
Thanks again.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-13 5:20 ` Amin Bandali
@ 2020-11-14 12:14 ` Eli Zaretskii
2020-11-14 17:19 ` Amin Bandali
2022-04-22 13:38 ` Lars Ingebrigtsen
0 siblings, 2 replies; 22+ messages in thread
From: Eli Zaretskii @ 2020-11-14 12:14 UTC (permalink / raw)
To: Amin Bandali; +Cc: eric, 44506
> From: Amin Bandali <bandali@gnu.org>
> Cc: Eric Abrahamsen <eric@ericabrahamsen.net>, 44506@debbugs.gnu.org
> Date: Fri, 13 Nov 2020 00:20:16 -0500
>
> >> With "emacs -Q" there are no records to search or display, so I assumed
> >> it must be the header-access functions causing the problem. But I wrote
> >> a function that does most of what EBDB does, without actually using
> >> EBDB, and it caused no segfault, so I don't know what's going on there,
> >> sorry.
> >
> > Thank you for your efforts.
>
> I, too, would like to say thank you, both to Eli and Eric, for your
> efforts and looking into this. I just sent information to Eli off-list
> for accessing a test account I set up on a server of mine for debugging
> this issue.
FTR, it is very easy to reproduce the problem, no need for Gnus or
EBDB. Here's the recipe:
emacs -Q -nw
C-x 3
C-x b foo
Now type some R2L character. For example, turn on the Arabic input
method and press 'a'. You will see that the character does not appear
on display. Basically, on a TTY frame, the first character of a R2L
line in a window that is not the rightmost one is not shown: it is
overwritten by the vertical-border character '|' we display between
the two adjacent windows. This doesn't crash as long as the
overwritten glyph is of a character, but in the case in point that
glyph came from a composition, and then all hell breaks loose...
This is a regression introduced in Emacs 27.1, by the code that
supports display-fill-column-indicator-mode. I have now fixed it on
the emacs-27 branch.
Many thanks to Amin for giving me access to a system where this could
be easily reproduced.
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-14 12:14 ` Eli Zaretskii
@ 2020-11-14 17:19 ` Amin Bandali
2022-04-22 13:38 ` Lars Ingebrigtsen
1 sibling, 0 replies; 22+ messages in thread
From: Amin Bandali @ 2020-11-14 17:19 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: eric, 44506
[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]
Eli Zaretskii writes:
[...]
>
> FTR, it is very easy to reproduce the problem, no need for Gnus or
> EBDB. Here's the recipe:
>
> emacs -Q -nw
> C-x 3
> C-x b foo
>
> Now type some R2L character. For example, turn on the Arabic input
> method and press 'a'. You will see that the character does not appear
> on display. Basically, on a TTY frame, the first character of a R2L
> line in a window that is not the rightmost one is not shown: it is
> overwritten by the vertical-border character '|' we display between
> the two adjacent windows. This doesn't crash as long as the
> overwritten glyph is of a character, but in the case in point that
> glyph came from a composition, and then all hell breaks loose...
>
> This is a regression introduced in Emacs 27.1, by the code that
> supports display-fill-column-indicator-mode. I have now fixed it on
> the emacs-27 branch.
That is one subtle bug!!
> Many thanks to Amin for giving me access to a system where this could
> be easily reproduced.
You're most welcome, and many thanks to you Eli for looking into this,
debugging, and fixing it. Also many thanks to Eric for looking into the
EBDB side of things and reproducing the issue. Thank you both very much
for your help with this.
Best
amin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty
2020-11-14 12:14 ` Eli Zaretskii
2020-11-14 17:19 ` Amin Bandali
@ 2022-04-22 13:38 ` Lars Ingebrigtsen
1 sibling, 0 replies; 22+ messages in thread
From: Lars Ingebrigtsen @ 2022-04-22 13:38 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: eric, Amin Bandali, 44506
Eli Zaretskii <eliz@gnu.org> writes:
> This is a regression introduced in Emacs 27.1, by the code that
> supports display-fill-column-indicator-mode. I have now fixed it on
> the emacs-27 branch.
Reading this thread, it looks like the bug was fixed at the time, but
the bug report was left open, so I'm closing it now.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2022-04-22 13:38 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-07 18:39 bug#44506: 28.0.50; Segfault on opening a particular message in Gnus in terminal/tty Amin Bandali
2020-11-07 18:58 ` Eli Zaretskii
2020-11-07 20:03 ` Amin Bandali
2020-11-07 20:29 ` Eli Zaretskii
2020-11-08 4:03 ` Eric Abrahamsen
2020-11-08 14:56 ` Eli Zaretskii
2020-11-08 18:27 ` Amin Bandali
2020-11-08 18:54 ` Eli Zaretskii
2020-11-08 19:20 ` Eli Zaretskii
2020-11-08 20:39 ` Amin Bandali
2020-11-09 3:31 ` Eli Zaretskii
2020-11-09 4:43 ` Amin Bandali
2020-11-09 7:04 ` Eli Zaretskii
2020-11-09 15:57 ` Eli Zaretskii
2020-11-10 5:42 ` Amin Bandali
2020-11-10 5:48 ` Eric Abrahamsen
2020-11-10 15:31 ` Eli Zaretskii
2020-11-13 5:20 ` Amin Bandali
2020-11-14 12:14 ` Eli Zaretskii
2020-11-14 17:19 ` Amin Bandali
2022-04-22 13:38 ` Lars Ingebrigtsen
2020-11-08 4:05 ` Eric Abrahamsen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).