[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#49066: 26.3; Segmentation fault on specific utf8 string
From: |
Robert Pluim |
Subject: |
bug#49066: 26.3; Segmentation fault on specific utf8 string |
Date: |
Thu, 17 Jun 2021 15:07:18 +0200 |
>>>>> On Thu, 17 Jun 2021 11:13:17 +0300, Eli Zaretskii <eliz@gnu.org> said:
>> From: Robert Pluim <rpluim@gmail.com>
>> Cc: Lars Ingebrigtsen <larsi@gnus.org>, 49066@debbugs.gnu.org,
>> mvsfrasson@gmail.com
>> Date: Thu, 17 Jun 2021 09:43:03 +0200
>>
>> This is from an optimized build of emacs-26.1. I can redo it with a
>> '-g3 -O0' if you want.
Eli> That'd help.
Full backtrace from an unoptimized build:
Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
0x0000000000557a9d in AREF (array=XIL(0), idx=1) at lisp.h:1614
1614 return XVECTOR (array)->contents[idx];
(gdb) bt
#0 0x0000000000557a9d in AREF (array=XIL(0), idx=1) at lisp.h:1614
#1 0x0000000000693602 in ftfont_shape_by_flt
(lgstring=XIL(0xb64755), font=0x1308cb0 <bss_sbrk_buffer+8590480>,
ft_face=0x340fef0, otf=0x342c810, matrix=0x1308da8 <bss_sbrk_buffer+8590728>)
at ftfont.c:2573
#2 0x00000000006939c4 in ftfont_shape (lgstring=XIL(0xb64755)) at ftfont.c:2615
#3 0x0000000000695ae8 in xftfont_shape (lgstring=XIL(0xb64755)) at
xftfont.c:670
#4 0x0000000000624f14 in Ffont_shape_gstring (gstring=XIL(0xb64755)) at
font.c:4427
#5 0x000000000060714d in funcall_subr (subr=0xa41d60 <Sfont_shape_gstring>,
numargs=1, args=0x7fffffff6830) at eval.c:2844
#6 0x0000000000606d80 in Ffuncall (nargs=2, args=0x7fffffff6828) at eval.c:2769
#7 0x000000000064ef3a in exec_byte_code
(bytestr=XIL(0x81e114), vector=XIL(0x81e135), maxdepth=make_number(6),
args_template=XIL(0), nargs=0, args=0x0) at bytecode.c:629
#8 0x0000000000607b03 in funcall_lambda (fun=XIL(0x81e0a5), nargs=5,
arg_vector=0x81e135 <pure+964437>) at eval.c:3052
#9 0x0000000000606dc4 in Ffuncall (nargs=6, args=0x7fffffff6d20) at eval.c:2771
#10 0x000000000060392c in internal_condition_case_n (bfun=0x606c02 <Ffuncall>,
nargs=6, args=0x7fffffff6d20, handlers=XIL(0xc090), hfun=
0x43f2a4 <safe_eval_handler>) at eval.c:1412
#11 0x000000000043f519 in safe__call (inhibit_quit=false, nargs=6,
func=XIL(0x8e6520), ap=0x7fffffff6e00) at xdisp.c:2617
#12 0x000000000043f60c in safe_call (nargs=6, func=XIL(0x8e6520)) at
xdisp.c:2633
#13 0x000000000067e4e6 in autocmp_chars
(rule=XIL(0xf2b705), charpos=40, bytepos=78, limit=42, win=0x103bc30
<bss_sbrk_buffer+5653520>, face=0x349d570, string=XIL(0))
at composite.c:928
#14 0x000000000067fad8 in composition_reseat_it
(cmp_it=0x7fffffff8f30, charpos=40, bytepos=78, endpos=464, w=0x103bc30
<bss_sbrk_buffer+5653520>, face=0x349d570, string=XIL(0))
at composite.c:1228
#15 0x000000000044e88f in next_element_from_buffer (it=0x7fffffff86b0) at
xdisp.c:8483
#16 0x000000000044ab2a in get_next_display_element (it=0x7fffffff86b0) at
xdisp.c:7026
#17 0x00000000004715db in display_line (it=0x7fffffff86b0, cursor_vpos=3) at
xdisp.c:21409
#18 0x0000000000466d36 in try_window (window=XIL(0x103bc35), pos=..., flags=1)
at xdisp.c:17627
#19 0x00000000004648da in redisplay_window (window=XIL(0x103bc35),
just_this_one_p=false) at xdisp.c:17074
#20 0x000000000045de89 in redisplay_window_0 (window=XIL(0x103bc35)) at
xdisp.c:14831
#21 0x00000000006037bc in internal_condition_case_1
(bfun=0x45de47 <redisplay_window_0>, arg=XIL(0x103bc35),
handlers=XIL(0xb3de33), hfun=0x45de0f <redisplay_window_error>) at eval.c:1356
#22 0x000000000045dde4 in redisplay_windows (window=XIL(0x103bc35)) at
xdisp.c:14811
#23 0x000000000045cd16 in redisplay_internal () at xdisp.c:14300
#24 0x000000000045ada7 in redisplay () at xdisp.c:13518
#25 0x0000000000563326 in read_char (commandflag=1, map=XIL(0x142c4b3),
prev_event=XIL(0), used_mouse_menu=0x7fffffffdaef, end_time=0x0)
at keyboard.c:2480
#26 0x000000000057056f in read_key_sequence
(keybuf=0x7fffffffdc40, bufsize=30, prompt=XIL(0),
dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9147
#27 0x00000000005607c3 in command_loop_1 () at keyboard.c:1368
#28 0x0000000000603715 in internal_condition_case (bfun=0x5603b5
<command_loop_1>, handlers=XIL(0x5250), hfun=0x55fb97 <cmd_error>)
at eval.c:1332
#29 0x00000000005600a6 in command_loop_2 (ignore=XIL(0)) at keyboard.c:1110
#30 0x0000000000602fed in internal_catch (tag=XIL(0xc6f0), func=0x560079
<command_loop_2>, arg=XIL(0)) at eval.c:1097
#31 0x0000000000560045 in command_loop () at keyboard.c:1089
#32 0x000000000055f76a in recursive_edit_1 () at keyboard.c:695
#33 0x000000000055f8ea in Frecursive_edit () at keyboard.c:766
#34 0x000000000055d58e in main (argc=2, argv=0x7fffffffe128) at emacs.c:1713
Lisp Backtrace:
"font-shape-gstring" (0xffff6830)
"auto-compose-chars" (0xffff6d28)
"redisplay_internal (C function)" (0x0)
(gdb)
>> Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
>> ftfont_shape_by_flt (matrix=<optimized out>, otf=<optimized out>,
ft_face=<optimized out>, font=<optimized out>, lgstring=...)
>> at ftfont.c:2573
>> 2573 g->g.to = LGLYPH_TO (LGSTRING_GLYPH (lgstring, g->g.to));
Eli> So, is 'g' a NULL pointer or something? Or is 'lgstring' faulty in
Eli> some way? IOW, what is the immediate reason for the
Eli> segfault?
Itʼs lgstring, I think this is one of those 'nil's in lgstring
0 0x0000000000557a9d in AREF (array=XIL(0), idx=1) at lisp.h:1614
1614 return XVECTOR (array)->contents[idx];
(gdb) up
#1 0x0000000000693602 in ftfont_shape_by_flt (lgstring=XIL(0xb64755),
font=0x1308cb0 <bss_sbrk_buffer+8590480>, ft_face=0x340fef0,
otf=0x342c810, matrix=0x1308da8 <bss_sbrk_buffer+8590728>) at ftfont.c:2573
2573 g->g.to = LGLYPH_TO (LGSTRING_GLYPH (lgstring, g->g.to));
(gdb) pp lgstring
[[#<font-object "-GOOG-Noto Sans
Bengali-normal-normal-normal-*-19-*-*-*-*-0-iso10646-1"> 2453 8204] nil [0 0
2453 20 16 -1 17 12 0 nil] [1 1 8204 658 0 -1 1 15 4 nil] nil nil nil [5 5 0
3039 11 0 12 7 5 nil] [6 6 1606 1044 11 0 11 8 3 nil] nil]
(gdb) p g
$2 = (MFLTGlyphFT *) 0x2e631e0
(gdb) p *g
$3 = {
g = {
c = 2453,
code = 20,
from = 0,
to = 2,
xadv = 1024,
yadv = 0,
ascent = 768,
descent = 0,
lbearing = -64,
rbearing = 1024,
xoff = 0,
yoff = 0,
encoded = 1,
measured = 1,
adjusted = 0,
internal = 0
},
libotf_positioning_type = 0
}
>> (gdb) bt
>> #0 ftfont_shape_by_fltPython Exception <class 'gdb.error'> value has
been optimized out:
Eli> What's the story with these Python exceptions? Looks like some
Eli> problem in our .gdbinit?
They donʼt happen with an unoptimized build.
Eli> The backtrace stops too soon. Can you show more? I'd like at the
Eli> very least to see which sequence of characters causes the trouble.
Eli> From the above, I can only glean that we were performing a character
Eli> composition.
This is enough to cause the crash: ক
Thats #x995 followed by #x200c. Why are we trying to compose a ZWNJ?
Eli> It could be some problem with the shaping engine: I guess versions
Eli> after Emacs 26 are built with HarfBuzz, not m17n-flt? If you forcibly
Eli> use m17n-flt in a later Emacs, does it still not crash?
emacs-27 built '--without-harfbuzz' and thus with m17n-flt crashes the same way.
Robert
--
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Miguel V. S. Frasson, 2021/06/16
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Lars Ingebrigtsen, 2021/06/16
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/17
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Robert Pluim, 2021/06/17
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/17
- bug#49066: 26.3; Segmentation fault on specific utf8 string,
Robert Pluim <=
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/17
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/17
- bug#49066: 26.3; Segmentation fault on specific utf8 string, handa, 2021/06/26
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/27
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Paul Eggert, 2021/06/27
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/27
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Robert Pluim, 2021/06/28
- bug#49066: 26.3; Segmentation fault on specific utf8 string, Eli Zaretskii, 2021/06/28
bug#49066: file foo, Miguel V. S. Frasson, 2021/06/16