https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113403
--- Comment #8 from Florian Weimer <fw at gcc dot gnu.org> --- In the current implementation, as far as I understand it, avoiding multiple objects is just an optimization, not a correctness issue. STB_GNU_UNIQUE is for correctness (although I don't think we'd implement it this way today). The deallocation API does not explicitly reference the closure, which is why stackful coroutines/fibers will have to switch the allocator state as part of the context switch. Once we start doing this, it simplifies matters greatly if there is just one such state to switch, and not an arbitrary count.