The program below creates two threads, in a detached state, and waits for them to complete with 'pthread_exit'. Compile and run as:

> gcc -lpthread test.c
> valgrind --leak-check=full a.out

valgrind-3.13.0 (compiled from source) reports no errors on some runs, and a possible leak on other runs (560 bytes in 1 blocks), fairly randomly. On my system, the ratio of error-free to bad runs is about 50/50.

Is this is a problem with valgrind, or my use of pthreads? *Note that this isn't the standard 'pthread_create' memory leak with joinable threads which haven't been joined, since the threads are detached.* I'm compiling on Centos 6.9, gcc 4.4.7. Thanks.

------------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>

void *thread(void *data) {
   printf("in new thread %ld\n", (long)data);
}

int main() {
   pthread_t      thread_id[2];
   pthread_attr_t thread_attr;
   int failed = 1;

   do {
      if(pthread_attr_init(&thread_attr))
         break;
if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
         break;
      if(pthread_create(&thread_id[0], &thread_attr, thread, (void*)0))
         break;
      if(pthread_create(&thread_id[1], &thread_attr, thread, (void*)1))
         break;
      failed = 0;
   } while(0);

   if(failed) {
      printf("pthreads call failed\n");
      exit(1);
   }

   pthread_exit(0);
}
------------------------------------------------------------------------


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to