Subject: bug#28308: Build failure on FreeBSD/aarch64

From: Gergely Czuczy <[email-masked]>
Date: Mon, 11 Sep 2017 17:10:39 +0200

On 2017. 09. 11. 16:45, Eli Zaretskii wrote:
>> Cc: [email-masked]
>> From: Gergely Czuczy <[email-masked]>
>> Date: Mon, 11 Sep 2017 09:26:20 +0200
>>
>> I've rebuilt it with CFLAGS="-O0 -g", but it seems to be the same in
>> this regards:
>> root@build-pine64:/usr/ports/editors/emacs-devel# cd
>> /usr/ports/editors/emacs-devel/work/emacs-f44184f/lisp
>> root@build-pine64:/usr/ports/editors/emacs-devel/work/emacs-f44184f/lisp#
>> EMACSLOADPATH= lldb -- '../src/bootstrap-emacs' -batch --no-site-file
>> --no-site-lisp --eval '(setq load-prefer-newer t)' -f batch-byte-compile
>> emacs-lisp/macroexp.el
>> (lldb) target create "../src/bootstrap-emacs"
>> Current executable set to '../src/bootstrap-emacs' (aarch64).
>> (lldb) settings set -- target.run-args  "-batch" "--no-site-file"
>> "--no-site-lisp" "--eval" "(setq load-prefer-newer t)" "-f"
>> "batch-byte-compile" "emacs-lisp/macroexp.el"
>> (lldb) r
>> Process 88583 launching
>> Process 88583 launched: '../src/bootstrap-emacs' (aarch64)
>> Process 88583 stopped
>> * thread #1, name = 'bootstrap-emacs', stop reason = signal SIGSEGV:
>> invalid address (fault address: 0x41b17978)
>>       frame #0: 0x0000000000228460
>> bootstrap-emacs`xnrealloc(pa=0x0000000000000000, nitems=0,
>> item_size=1102150015) at alloc.c:939
>>      936  {
>>      937    eassert (0 <= nitems && 0 < item_size);
>>      938    ptrdiff_t nbytes;
>> -> 939    if (INT_MULTIPLY_WRAPV (nitems, item_size, &nbytes) ||
>> SIZE_MAX < nbytes)
>>      940      memory_full (SIZE_MAX);
>>      941    return xrealloc (pa, nbytes);
>>      942  }
>> (lldb) bt
>> * thread #1, name = 'bootstrap-emacs', stop reason = signal SIGSEGV:
>> invalid address (fault address: 0x41b17978)
>>     * frame #0: 0x0000000000228460
>> bootstrap-emacs`xnrealloc(pa=0x0000000000000000, nitems=0,
>> item_size=1102150015) at alloc.c:939
>>       frame #1: 0x0000000000228204
>> bootstrap-emacs`xnrealloc(pa=0x000000000019ae38, nitems=42949672960,
>> item_size=281474976703896) at alloc.c:939
>>       frame #2: 0x000000000022e208
>> bootstrap-emacs`xpalloc(pa=0x0000000000000000,
>> nitems=0x0000000041b1797f, nitems_incr_min=1683000,
>> nitems_max=42949672960, item_size=281474976703896) at alloc.c:0
>>       frame #3: 0x0000000000168214
>> bootstrap-emacs`delete_tty(terminal=0x3276551740f23ac5) at term.c:4463
>>       frame #4: 0x0000000000040190 bootstrap-emacs`__start + 376
>>       frame #5: 0x0000000040390018 ld-elf.so.1`.rtld_start at rtld_start.S:41
>> (lldb)
> I don't understand how can this be.  Can you go to frame #3, in
> delete_tty, and show what line of C code there allegedly calls
> xpalloc?
Sure, here it is:
https://github.com/emacs-mirror/emacs/blob/f44184f/src/term.c#L4463