Subject: bug#44326: 27.1.50; busy loop in lisp_free_align

From: Aaron Jensen <[email-masked]>
Date: Fri, 30 Oct 2020 06:18:13 -0500

This should probably be merged into a reopened #30322

I'm seeing a busy loop in lisp_free_align often on Emacs 27. It does
eventually recover, but it takes a minute or more.

* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x000000010021c692
emacs`lisp_align_free(block=0x0000000291d2d400) at alloc.c:1245:7
   1242       struct ablock **tem = &free_ablock;
   1243       struct ablock *atop = &abase->blocks[aligned ?
ABLOCKS_SIZE : ABLOCKS_SIZE - 1];
   1244
-> 1245       while (*tem)
   1246         {
   1247           if (*tem >= (struct ablock *) abase && *tem < atop)
   1248             {

I'm running gcmh-mode, and the last time it hung it was a gcmh-mode
idle collection. Not sure if that makes any difference.

Aaron