Subject: Re: bug#36649: 27.0.50; pure space and pdumper

From: Eli Zaretskii <[email-masked]>
Date: Thu, 13 May 2021 17:08:32 +0300

> Date: Wed, 12 May 2021 21:52:31 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked],
>  [email-masked], [email-masked], [email-masked],
>  [email-masked], [email-masked]
> 
> I worked with him to fix it, yes.  But the problem and the fix were
> not Windows specific, AFAIR.  I guess there's more, and perhaps it
> happens only on systems which don't use mmap for buffer text.  I will
> try to take a look when I have time.

Looks like some memory problem: xrealloc segfaults.

Don't we need to disable ASLR for unexec to work?  And doesn't that
require setfattr or paxctl commands to be available?  If not, how do
we disable ASLR in bootstrap-emacs and emacs binaries on GNU/Linux?

Here's the backtrace from the crash I see:

  Thread 1 "bootstrap-emacs" received signal SIGSEGV, Segmentation fault.
  0x00007ffff21f4917 in _int_realloc (av=av@entry=0x7ffff254ac40 <main_arena>,
      oldp=oldp@entry=0x24a73b0, oldsize=oldsize@entry=32, nb=nb@entry=144)
      at malloc.c:4589
  4589    malloc.c: No such file or directory.
  (gdb) bt
  #0  0x00007ffff21f4917 in _int_realloc (av=av@entry=0x7ffff254ac40 <main_arena>, oldp=oldp@entry=0x24a73b0, oldsize=oldsize@entry=32, nb=nb@entry=144)
      at malloc.c:4589
  #1  0x00007ffff21f80db in __GI___libc_realloc (oldmem=0x24a73c0, bytes=128)
      at malloc.c:3240
  #2  0x0000000000664a28 in lrealloc (p=0x24a73c0, size=128) at alloc.c:1378
  #3  0x0000000000663e46 in xrealloc (block=0x24a73c0, size=128) at alloc.c:804
  #4  0x00000000006641f9 in xpalloc (pa=0x24a73c0, nitems=0xed8450 <searchbufs+1840>, nitems_incr_min=1, nitems_max=32768, item_size=1) at alloc.c:928
  #5  0x0000000000658823 in regex_compile (pattern=0x8011b8 "^;;;.\\(in Emacs version\\|bytecomp version FSF\\)", size=47, posix_backtracking=false, whitespace_regexp=0x0, bufp=0xed8448 <searchbufs+1832>) at regex-emacs.c:2617
  #6  0x0000000000660493 in rpl_re_compile_pattern (pattern=0x8011b8 "^;;;.\\(in Emacs version\\|bytecomp version FSF\\)", length=47, posix_backtracking=false, whitespace_regexp=0x0, bufp=0xed8448 <searchbufs+1832>) at regex-emacs.c:5116
  #7  0x00000000006456eb in compile_pattern_1 (cp=0xed8428 <searchbufs+1800>, pattern=XIL(0xaa125c), translate=XIL(0x19b7125), posix=false) at search.c:123
  #8  0x0000000000645b2f in compile_pattern (pattern=XIL(0xaa125c), regp=0x0, translate=XIL(0x19b7125), posix=false, multibyte=false) at search.c:237
  #9  0x0000000000646707 in fast_c_string_match_ignore_case (regexp=XIL(0xaa125c), string=0x7fffffffd09d "\n;; certain of its subdirectories.  Here we specify them.\n(normal-top-level-add-to-load-path '(\"vc\" \"url\" \"textmodes\" \"progmodes\" \"play\" \"org\" \"nxml\" \"net\" \"mh-e\" \"mail\" \"leim\" \"language\" \"internation"..., len=401) at search.c:497
  #10 0x00000000006dc284 in safe_to_load_version (fd=5) at lread.c:1060
  #11 0x00000000006dd06b in Fload (file=XIL(0x2556774), noerror=XIL(0x30), nomessage=XIL(0x30), nosuffix=XIL(0x30), must_suffix=XIL(0)) at lread.c:1398
  #12 0x000000000069b971 in eval_sub (form=XIL(0x1e70b03)) at eval.c:2525
  #13 0x0000000000695602 in Fprogn (body=XIL(0)) at eval.c:471
  #14 0x0000000000697784 in Flet (args=XIL(0x1e70b13)) at eval.c:1057
  #15 0x000000000069b451 in eval_sub (form=XIL(0x1e70b83)) at eval.c:2464
  #16 0x0000000000695602 in Fprogn (body=XIL(0x1e70863)) at eval.c:471
  #17 0x0000000000695636 in prog_ignore (body=XIL(0x1e70b93)) at eval.c:482
  #18 0x000000000069785a in Fwhile (args=XIL(0x1e71553)) at eval.c:1078
  #19 0x000000000069b451 in eval_sub (form=XIL(0x1e71563)) at eval.c:2464
  #20 0x0000000000695602 in Fprogn (body=XIL(0)) at eval.c:471
  #21 0x0000000000697784 in Flet (args=XIL(0x1e71573)) at eval.c:1057
  ---Type <return> to continue, or q <return> to quit---
  #22 0x000000000069b451 in eval_sub (form=XIL(0x1e71653)) at eval.c:2464
  #23 0x0000000000695602 in Fprogn (body=XIL(0x1d26063)) at eval.c:471
  #24 0x00000000006953c9 in Fif (args=XIL(0x1e41753)) at eval.c:427
  #25 0x000000000069b451 in eval_sub (form=XIL(0x1e41763)) at eval.c:2464
  #26 0x0000000000695602 in Fprogn (body=XIL(0)) at eval.c:471
  #27 0x000000000069e40b in funcall_lambda (fun=XIL(0x1d03ba3), nargs=0, arg_vector=0x7fffffffde00) at eval.c:3313
  #28 0x000000000069dc30 in apply_lambda (fun=XIL(0x1d03b93), args=XIL(0), count=4) at eval.c:3185
  #29 0x000000000069bcd4 in eval_sub (form=XIL(0x17d0813)) at eval.c:2588
  #30 0x000000000069ad2b in Feval (form=XIL(0x17d0813), lexical=XIL(0))
      at eval.c:2340
  #31 0x00000000005c4a3e in top_level_2 () at keyboard.c:1103
  #32 0x0000000000698abb in internal_condition_case (bfun=0x5c4a1b <top_level_2>, handlers=XIL(0x90), hfun=0x5c43dd <cmd_error>) at eval.c:1475
  #33 0x00000000005c4a86 in top_level_1 (ignore=XIL(0)) at keyboard.c:1111
  #34 0x0000000000697c09 in internal_catch (tag=XIL(0xe0d0), func=0x5c4a40 <top_level_1>, arg=XIL(0)) at eval.c:1198
  #35 0x00000000005c4967 in command_loop () at keyboard.c:1072
  #36 0x00000000005c3ec4 in recursive_edit_1 () at keyboard.c:720
  #37 0x00000000005c40bc in Frecursive_edit () at keyboard.c:789
  #38 0x00000000005bfb4b in main (argc=9, argv=0x7fffffffe368) at emacs.c:2297

  Lisp Backtrace:
  "load" (0xffffd570)
  "let" (0xffffd6f0)
  "while" (0xffffd8a0)
  "let" (0xffffdac0)
  "if" (0xffffdc40)
  "normal-top-level" (0xffffde00)
  (gdb)