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

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

commit r9-9832-ge8005eb1bf061cc5fd7d9f32f721d99b450449f6
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.
    
    (cherry picked from commit 910d2b4b7513b6bfe02777d44cd5377c22198086)

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 461f20d9e28..72376ecda0f 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 14:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-19 14:15 [gcc r9-9832] 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).