Fix last leak detected by Valgrind
authorMarco Costalba <mcostalba@gmail.com>
Sun, 24 Oct 2010 08:39:33 +0000 (10:39 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 24 Oct 2010 08:57:30 +0000 (09:57 +0100)
This was subtle and google was my friend.

The leak was in _dl_allocate_tls called by pthread_create() and
is due to the fact that threads are created in joinable state so that
once terminated are not freed. To make the thread to release
its resources upon termination we should set them in detached state.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp

index e521b86849facadb45b4abfca262fd2331fb8f82..6b943b53793ffc0ac9eefaf0e097a05a1af608da 100644 (file)
@@ -2336,6 +2336,7 @@ split_point_start: // At split points actual search starts from here
 #if !defined(_MSC_VER)
         pthread_t pthread[1];
         ok = (pthread_create(pthread, NULL, init_thread, (void*)(&i)) == 0);
+        pthread_detach(pthread[0]);
 #else
         ok = (CreateThread(NULL, 0, init_thread, (LPVOID)(&i), 0, NULL) != NULL);
 #endif