title: Is anyone using valgrind and Qt?
body: <p>I am trying to debug a large application build using Qt/C++ and valgrind is reporting a lot of memory leak from internal Qt stuff.
  Could anyone share a proper valgrind suppression file for Qt apps ?</p>
  
  <p>Thanks !</p>
  
  <p>Eg.</p>
  
  <pre><code>#include &lt;qobject.h&gt;
  int main()
  {
    QObject o;
    return 0;
  }
  </code></pre>
  
  <p>returns:</p>
  
  <pre>
  $ valgrind  --leak-check=full  --show-reachable=yes  ./leak
  ==12655== Memcheck, a memory error detector
  ==12655== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
  ==12655== Using Valgrind-3.5.0-Debian and LibVEX; rerun with -h for copyright info
  ==12655== Command: ./leak
  ==12655== 
  ==12655== 
  ==12655== HEAP SUMMARY:
  ==12655==     in use at exit: 744 bytes in 7 blocks
  ==12655==   total heap usage: 28 allocs, 21 frees, 1,640 bytes allocated
  ==12655== 
  ==12655== 16 bytes in 1 blocks are still reachable in loss record 1 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x6203124: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 96 bytes in 1 blocks are still reachable in loss record 2 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x62030FC: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 96 bytes in 1 blocks are still reachable in loss record 3 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x62041CD: QWaitCondition::QWaitCondition() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6200EAF: ??? (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62010A0: ??? (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6203132: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 120 bytes in 1 blocks are still reachable in loss record 4 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x61FE681: QMutex::QMutex(QMutex::RecursionMode) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6200DC8: QThreadData::QThreadData(int) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x620310C: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 120 bytes in 1 blocks are still reachable in loss record 5 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x61FE681: QMutex::QMutex(QMutex::RecursionMode) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6200DE9: QThreadData::QThreadData(int) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x620310C: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 120 bytes in 1 blocks are still reachable in loss record 6 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x61FE681: QMutex::QMutex(QMutex::RecursionMode) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6200E77: ??? (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62010A0: ??? (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6203132: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== 176 bytes in 1 blocks are still reachable in loss record 7 of 7
  ==12655==    at 0x4C229C7: operator new(unsigned long) (vg_replace_malloc.c:220)
  ==12655==    by 0x6201092: ??? (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x6203132: QThreadData::current() (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x62FC4BC: QObject::QObject(QObject*) (in /usr/lib/libQtCore.so.4.5.2)
  ==12655==    by 0x4008D2: main (in /tmp/Qt/bin/leak)
  ==12655== 
  ==12655== LEAK SUMMARY:
  ==12655==    definitely lost: 0 bytes in 0 blocks
  ==12655==    indirectly lost: 0 bytes in 0 blocks
  ==12655==      possibly lost: 0 bytes in 0 blocks
  ==12655==    still reachable: 744 bytes in 7 blocks
  ==12655==         suppressed: 0 bytes in 0 blocks
  ==12655== 
  ==12655== For counts of detected and suppressed errors, rerun with: -v
  ==12655== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 8)
  </pre>