bcraig added a comment. In http://reviews.llvm.org/D21803#470564, @joerg wrote:
> On the topic of __cxa_thread_atexit, was it ever specified how it interacts > with things like thread cancellation? I don't think it's officially specified anywhere. C++ threads don't have a cancel method. The POSIX spec doesn't speak about the C++ ABI. The Itanium ABI could talk about this, but hasn't yet. I think this implementation does the right thing with regards to cancellation though. POSIX says that first cancellation cleanup handlers are called, then thread-specific data destructors are called. pthread_cancel is still a really bad idea due to how it (doesn't) interact with RAII, but at least TLS data won't get leaked. ================ Comment at: src/cxa_thread_atexit.cpp:46 @@ +45,3 @@ + pthread_key_delete(key_); + } + ---------------- dimitry wrote: > run_dtors() is called when/if libc++.so gets unloaded... but only for the > thread calling dlclose()? Most of the dtor magic is on the pthread_key_create side. pthreads lets you register a per-thread destructor. This destructor is only run on process termination (I think). http://reviews.llvm.org/D21803 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits