svn commit: r209117 - head/lib/libc/stdlib
Colin Percival
cperciva at FreeBSD.org
Sun Jun 13 01:13:37 UTC 2010
Author: cperciva
Date: Sun Jun 13 01:13:36 2010
New Revision: 209117
URL: http://svn.freebsd.org/changeset/base/209117
Log:
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.
Modified:
head/lib/libc/stdlib/atexit.c
Modified: head/lib/libc/stdlib/atexit.c
==============================================================================
--- head/lib/libc/stdlib/atexit.c Sat Jun 12 22:33:04 2010 (r209116)
+++ head/lib/libc/stdlib/atexit.c Sun Jun 13 01:13:36 2010 (r209117)
@@ -54,6 +54,7 @@ static pthread_mutex_t atexit_mutex = PT
#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);
}
More information about the svn-src-head
mailing list