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

From: Eli Zaretskii <[email-masked]>
Date: Sat, 09 Sep 2017 10:07:12 +0300

> From: Gergely Czuczy <[email-masked]>
> Date: Sat, 9 Sep 2017 07:01:20 +0200
> Cc: [email-masked]
> 
> Process 69906 stopped
> * thread #1, name = 'bootstrap-emacs', stop reason = signal SIGSEGV: 
> invalid address (fault address: 0x41aef578)
>      frame #0: 0x0000000000228460 
> bootstrap-emacs`xnrealloc(pa=0x0000000000000000, nitems=0, 
> item_size=1101985151) 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: 0x41aef578)
>    * frame #0: 0x0000000000228460 
> bootstrap-emacs`xnrealloc(pa=0x0000000000000000, nitems=0, 
> item_size=1101985151) 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=0x0000000041aef57f, nitems_incr_min=1683000, 
> nitems_max=42949672960, item_size=281474976703896) at alloc.c:0
>      frame #3: 0x0000000000168214 
> bootstrap-emacs`delete_tty(terminal=0xbc7603df25a071f3) 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 come xpalloc got called in this context.
delete_tty on line 4463 of term,c calls delete_terminal, which only
calls xfree.  It doesn't allocate any memory (of course), let alone
with semi-bogus arguments as shown in this backtrace.

What am I missing?