Using a simple heap profiler (more on that later), I noticed that the stacks allocated at ‘p->stack_bottom’ would be partly retained, explaining the heap growth. I couldn’t pinpoint what exactly is keeping a pointer to the stack, but what I can tell is that the trick above makes that impossible (because we disable interior pointer tracing), hence the difference. Also, why changing the SCM_DYNSTACK_TYPE_DYNAMIC_STATE entry to an SCM_DYNSTACK_TYPE_UNWINDER entry would make a difference remains a mystery to me. I’m interested in theories that would explain all this in more detail! I’ll go ahead with the fix above if there are no objections. It’s not fully satisfying but still it’s a relief. Ludo’.