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