Subject: bug#58042: 29.0.50; ASAN use-after-free in re_match_2_internal

From: Gerd Möllmann <[email-masked]>
Date: Sat, 24 Sep 2022 15:45:39 +0200

In GNU Emacs 29.0.50 (build 1, aarch64-apple-darwin21.6.0, NS
 appkit-2113.60 Version 12.6 (Build 21G115)) of 2022-09-21 built on
 Mini.fritz.box
Repository revision: 1231a601ebe1fd9fe454c504dbeb9267440242e7
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2113
System Description:  macOS 12.6

Configured using:
 'configure --cache-file /Users/gerd/tmp/config.cache.master
 --with-native-compilation'
 
Configured features:
ACL DBUS GLIB GNUTLS JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS XIM ZLIB

I got the following ASAN error today.  Unfortunately, I don't have the
slightest idea how to reproduce this.

==79227==ERROR: AddressSanitizer: heap-use-after-free on address 0x00011f81e7d1 at pc 0x0001005825c4 bp 0x00016fdcf370 sp 0x00016fdcf368
READ of size 1 at 0x00011f81e7d1 thread T0
    #0 0x1005825c0 in re_match_2_internal regex-emacs.c:4352
    #1 0x10057e5cc in rpl_re_search_2 regex-emacs.c:3383
    #2 0x10057d1c4 in rpl_re_search regex-emacs.c:3177
    #3 0x10056115c in fast_string_match_internal search.c:492
    #4 0x1005045c0 in fast_string_match lisp.h:4818
    #5 0x100504018 in Ffind_file_name_handler fileio.c:324
    #6 0x1006dbe5c in openp lread.c:1911
    #7 0x1006d8844 in Fload lread.c:1302
    #8 0x1006e1af0 in save_match_data_load lread.c:1630
    #9 0x10064f8cc in load_with_autoload_queue eval.c:2269
    #10 0x10067d2f8 in Frequire fns.c:3274

previously allocated by thread T0 here:
    #0 0x103332ca8 in wrap_malloc+0x94 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3eca8)
    #1 0x1005ae8fc in lmalloc alloc.c:1361
    #2 0x1005b0188 in lisp_malloc alloc.c:994
    #3 0x1005b0a5c in allocate_string_data alloc.c:1889
    #4 0x1005b1bd8 in make_clear_multibyte_string alloc.c:2475
    #5 0x1005b1670 in make_clear_string alloc.c:2443
    #6 0x1005b2714 in make_uninit_string alloc.c:2454
    #7 0x100666c14 in concat_to_string fns.c:821
    #8 0x100666420 in concat2 fns.c:600
    #9 0x1006d7870 in Fget_load_suffixes lread.c:1123
    #10 0x1006d86ac in Fload lread.c:1296
    #11 0x1006e1af0 in save_match_data_load lread.c:1630
    #12 0x10064f8cc in load_with_autoload_queue eval.c:2269

rame #5: 0x00000001005825c4 emacs`re_match_2_internal(bufp=0x000000010111b890, string1=0x0000000000000000, size1=0, string2="/Users/gerd/.config/emacs.d.default/elpa/company-0.9.13/lsp-protocol.el.gz", size2=74, pos=0, regs=0x0000000000000000, stop=74) at regex-emacs.c:4352:18
   4349	
   4350		    PREFETCH ();
   4351		    int len;
-> 4352		    int corig = RE_STRING_CHAR_AND_LENGTH (d, len, target_multibyte);
   4353		    int c = corig;
   4354		    if (target_multibyte)
   4355		      {

And to make things worse, I can't get an xbacktrace because the "new"
lldb, which I got with Xcode 14, says it has a bug.  Tadah :-/.

(lldb) xbacktrace
PLEASE submit a bug report to https://developer.apple.com/bug-reporting/ and include the crash backtrace.
Stack dump: