In threaded processes, destroy the mutex atexit_mutex when we've
finished using it. This allows the mutex's allocated memory to be freed. This is one sense a rather silly change, since at this point we're less than a microsecond away from calling _exit; but fixing this memory leak is likely to make life easier for anyone trying to track down other memory leaks.
This commit is contained in:
parent
27d1c65e8e
commit
ff847ecb82
@ -54,6 +54,7 @@ static pthread_mutex_t atexit_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
#define _MUTEX_LOCK(x) if (__isthreaded) _pthread_mutex_lock(x)
|
||||
#define _MUTEX_UNLOCK(x) if (__isthreaded) _pthread_mutex_unlock(x)
|
||||
#define _MUTEX_DESTROY(x) if (__isthreaded) _pthread_mutex_destroy(x)
|
||||
|
||||
struct atexit {
|
||||
struct atexit *next; /* next in list */
|
||||
@ -182,4 +183,6 @@ __cxa_finalize(void *dso)
|
||||
}
|
||||
}
|
||||
_MUTEX_UNLOCK(&atexit_mutex);
|
||||
if (dso == NULL)
|
||||
_MUTEX_DESTROY(&atexit_mutex);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user