https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146
nsz at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nsz at gcc dot gnu.org --- Comment #14 from nsz at gcc dot gnu.org --- call_once is implemented on top of pthread_once in libstdc++ but pthead_once is not exception safe, only cancellation safe and it cannot be both at the same time in glibc with the current cancellation implementation (although there is ongoing work to fix that). in general this is problematic because it relies on an interface contract that pthread_once does not provide, so libstdc++ should fix it even if glibc makes pthread_once exception safe. (i was told that the underlying implementation is visible through "native handles" so a pthread-independent call_once implementation is problematic, this sounds to me like a c++ defect, such handles probably should not be exposed by libstdc++, it will break whenever there is divergence between posix and c++ requirements.. and there are plenty of that already.)