title: dlopen/dlsym/dlclose (dlfcn.h) causes memory leak
body: <p>When using the dlfcn family like so:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;dlfcn.h&gt;
  
  typedef int(*timefunc_t)(void*);
  
  int main()
  {
      timefunc_t fun;
      void* handle;
      handle = dlopen("libc.so.6", RTLD_LAZY);
      fun = (timefunc_t)dlsym(handle, "time");
      printf("time=%d\n", fun(NULL));
      dlclose(handle);
      return 0;
  }
  </code></pre>
  
  <p>It causes a Memory leak:</p>
  
  <pre><code>==28803== Memcheck, a memory error detector
  ==28803== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
  ==28803== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
  ==28803== Command: ./dl
  ==28803== 
  time=1309249569
  ==28803== 
  ==28803== HEAP SUMMARY:
  ==28803==     in use at exit: 20 bytes in 1 blocks
  ==28803==   total heap usage: 1 allocs, 0 frees, 20 bytes allocated
  ==28803== 
  ==28803== LEAK SUMMARY:
  ==28803==    definitely lost: 0 bytes in 0 blocks
  ==28803==    indirectly lost: 0 bytes in 0 blocks
  ==28803==      possibly lost: 0 bytes in 0 blocks
  ==28803==    still reachable: 20 bytes in 1 blocks
  ==28803==         suppressed: 0 bytes in 0 blocks
  ==28803== Rerun with --leak-check=full to see details of leaked memory
  ==28803== 
  ==28803== For counts of detected and suppressed errors, rerun with: -v
  ==28803== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 13 from 6)
  </code></pre>
  
  <p>My question is, Is this a programming error, or rather a bug in dlfcn/libdl.so?</p>