Leak #1:

==12891==    80 bytes in 1 blocks are definitely lost in loss record 949 of 
1,360
==12891==    at 0x4C2CC70: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12891==    by 0x50A5299: virAlloc (viralloc.c:144)
==12891==    by 0x50C1C63: virLastErrorObject (virerror.c:240)
==12891==    by 0x50C4F88: virResetLastError (virerror.c:412)
==12891==    by 0x51B786C: virConnectOpen (libvirt.c:1139)

>From pahole:

struct _virError {
        int                        code;                 /*     0   0x4 */
        int                        domain;               /*   0x4   0x4 */
        char *                     message;              /*   0x8   0x8 */
        virErrorLevel              level;                /*  0x10   0x4 */

        /* XXX 4 bytes hole, try to pack */

        virConnectPtr              conn;                 /*  0x18   0x8 */
        virDomainPtr               dom;                  /*  0x20   0x8 */
        char *                     str1;                 /*  0x28   0x8 */
        char *                     str2;                 /*  0x30   0x8 */
        char *                     str3;                 /*  0x38   0x8 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        int                        int1;                 /*  0x40   0x4 */
        int                        int2;                 /*  0x44   0x4 */
        virNetworkPtr              net;                  /*  0x48   0x8 */

        /* size: 80, cachelines: 2, members: 12 */
        /* sum members: 76, holes: 1, sum holes: 4 */
        /* last cacheline: 16 bytes */
};

The _virError struct (in the form of virErrorPtr typedef) is expected to be 
freed
in virLastErrFreeData(), which is a thread "destructor" set in the pthread 
creation. It should be called when thread exists (by pthread_exit() or something
analog), but can be skipped if process main() function returns.
So, hypothesis here are:

1) There was a process exist that led to this thread data getting leaked
2) Valgrind should be ended (with SIGTERM) in order to collect the thread
destructor execution, so this is a false/temporary leak.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1844455

Title:
  Memory leak on libvirt 1.3.1

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1844455/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to