[Bug libstdc++/66146] call_once not C++11-compliant on ppc64le

nsz at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 18 15:38:00 GMT 2016


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.)


More information about the Gcc-bugs mailing list