Subject: bug#54698: non-recursive GC marking [PATCH]

From: Eli Zaretskii <[email-masked]>
Date: Mon, 04 Apr 2022 14:38:44 +0300

> From: Mattias Engdegård <[email-masked]>
> Date: Mon, 4 Apr 2022 13:16:26 +0200
> Cc: [email-masked]
> 
> > Is there a max stack size?
> 
> No, the mark stack grows as needed. I see no reason to limit the size since it's going to be much smaller than the size of the heap being traced in any case.

What happens with data that GC relocates, like when it relocates and
compacts string data?  If the relocated data is allocated on the heap
after the simulated stack, the original string data, which is now free
memory, will be "trapped" behind the simulated stack, and 'free' will
be unable to return it to the OS.  This could make the memory
footprint of Emacs larger than it could be.

Was this aspect considered and audited/tested?