public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-5401] libphobos: Don't call __gthread_key_delete in the emutls destroy function.
@ 2021-11-19 13:48 Iain Buclaw
  0 siblings, 0 replies; only message in thread
From: Iain Buclaw @ 2021-11-19 13:48 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:d686cb0d740b0278fdbd7915f43faff14b203888

commit r12-5401-gd686cb0d740b0278fdbd7915f43faff14b203888
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date:   Fri Nov 19 14:26:07 2021 +0100

    libphobos: Don't call __gthread_key_delete in the emutls destroy function.
    
    Fixes a EXC_BAD_ACCESS issue seen on Darwin when the libphobos DSO gets
    unloaded.  Based on reading libgcc's emutls implementation, as it
    doesn't call __gthread_key_delete directly, neither should libphobos.
    
    libphobos/ChangeLog:
    
            * libdruntime/gcc/emutls.d (emutlsDestroyThread): Don't remove entry
            from global array.
            (_d_emutls_destroy): Don't call __gthread_key_delete.

Diff:
---
 libphobos/libdruntime/gcc/emutls.d | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/libphobos/libdruntime/gcc/emutls.d b/libphobos/libdruntime/gcc/emutls.d
index 4237dc7a3df..462230508ab 100644
--- a/libphobos/libdruntime/gcc/emutls.d
+++ b/libphobos/libdruntime/gcc/emutls.d
@@ -229,9 +229,6 @@ void** emutlsAlloc(shared __emutls_object* obj) nothrow @nogc
 extern (C) void emutlsDestroyThread(void* ptr) nothrow @nogc
 {
     auto arr = cast(TlsArray*) ptr;
-    emutlsMutex.lock_nothrow();
-    emutlsArrays.remove(arr);
-    emutlsMutex.unlock_nothrow();
 
     foreach (entry; *arr)
     {
@@ -308,9 +305,6 @@ void _d_emutls_scan(scope void delegate(void* pbeg, void* pend) nothrow cb) noth
 // Call this after druntime has been unloaded
 void _d_emutls_destroy() nothrow @nogc
 {
-    if (__gthread_key_delete(emutlsKey) != 0)
-        abort();
-
     (cast(Mutex) _emutlsMutex.ptr).__dtor();
     destroy(emutlsArrays);
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-11-19 13:48 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-19 13:48 [gcc r12-5401] libphobos: Don't call __gthread_key_delete in the emutls destroy function Iain Buclaw

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).