https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64535
--- Comment #22 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Can't you use a .bss object for the initial case, so you don't malloc anything in the ctor unless user requests something larger than that? That way "freeing" that would be handled in most cases. And I assume you really can't dlclose libstdc++ while other threads are handling exceptions, because then those libraries should use libstdc++ entry points and either would need to be dlclosed too, or libstdc++ wouldn't be really unmapped.