@filofel, my bad yes you are right. This seems fixed in later versions
and as such this requires an SRU.

Next step would be to determine what changes would be required to fix.

Trusty-updates has version 3.2.21-1ubuntu4
Debian stable (jessie) has version 3.2.24-2

** Also affects: libnl3 (Ubuntu Trusty)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to libnl3 in Ubuntu.
https://bugs.launchpad.net/bugs/1690836

Title:
  libnl-genl-3.0 memory leak

Status in libnl3 package in Ubuntu:
  Confirmed
Status in libnl3 source package in Trusty:
  Triaged

Bug description:
  It seems that there is a memory leak in the libnl-genl-3.0 library.
  The memory-leak can be seen when the function genl_ctrl_resolve() fails.

  It seems that this function copy a buffer and forget to deallocate it 
properly:
    258         cb = nl_cb_clone(orig); // buffer copied not freed

  -----------------------------------------------------------------------------
  The following attached source-code can help you to reproduce this behavior on 
Ubuntu 14.04.
  It forces an issue on the genl_ctrl_resolve by asking an unknown 
netlink-family.

  To compile program:
  g++ -std=c++11 main.cpp $(pkg-config --cflags --libs libnl-3.0 
libnl-genl-3.0) -o main

  To detect memory-leak using Valgrind:
  valgrind --leak-check=full ./main

  -----------------------------------------------------------------------------
  Executing it on Debian 8.0 shows "no memory leak":
  sylvain@debian:~/test$ lsb_release -rd
  Description:  Debian GNU/Linux 8.8 (jessie)
  Release:      8.8

  sylvain@debian:~/test$ g++ -std=c++11 main.cpp $(pkg-config --cflags --libs 
libnl-3.0 libnl-genl-3.0) -o main
  sylvain@debian:~/test$ valgrind --leak-check=full ./main
  ==26390== Memcheck, a memory error detector
  ==26390== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
  ==26390== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
  ==26390== Command: ./main
  ==26390==
  start test
  error: can't retrieve the netlink-family id
  end test
  ==26390==
  ==26390== HEAP SUMMARY:
  ==26390==     in use at exit: 0 bytes in 0 blocks
  ==26390==   total heap usage: 13 allocs, 13 frees, 22,142 bytes allocated
  ==26390==
  ==26390== All heap blocks were freed -- no leaks are possible
  ==26390==
  ==26390== For counts of detected and suppressed errors, rerun with: -v
  ==26390== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

  -----------------------------------------------------------------------------
  Executing it on Ubuntu 14.04 shows a memory leak:
  ubuntu@ubuntu:~$ lsb_release -rd
  Description:  Ubuntu 14.04.5 LTS
  Release:      14.04

  ubuntu@ubuntu:~$ g++ -std=c++11 main.cpp $(pkg-config --cflags --libs 
libnl-3.0 libnl-genl-3.0) -o main
  ubuntu@ubuntu:~$ valgrind --leak-check=full ./main
  ==37377== Memcheck, a memory error detector
  ==37377== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
  ==37377== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
  ==37377== Command: ./main
  ==37377==
  start test
  error: can't retrieve the netlink-family id
  end test
  ==37377==
  ==37377== HEAP SUMMARY:
  ==37377==     in use at exit: 224 bytes in 1 blocks
  ==37377==   total heap usage: 13 allocs, 12 frees, 22,142 bytes allocated
  ==37377==
  ==37377== 224 bytes in 1 blocks are definitely lost in loss record 1 of 1
  ==37377==    at 0x4C2CC70: calloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==37377==    by 0x5048FAA: nl_cb_alloc (in 
/lib/x86_64-linux-gnu/libnl-3.so.200.16.1)
  ==37377==    by 0x504CB1E: nl_socket_alloc (in 
/lib/x86_64-linux-gnu/libnl-3.so.200.16.1)
  ==37377==    by 0x4012E3: A::Init() (in /home/ubuntu/main)
  ==37377==    by 0x401189: main (in /home/ubuntu/main)
  ==37377==
  ==37377== LEAK SUMMARY:
  ==37377==    definitely lost: 224 bytes in 1 blocks
  ==37377==    indirectly lost: 0 bytes in 0 blocks
  ==37377==      possibly lost: 0 bytes in 0 blocks
  ==37377==    still reachable: 0 bytes in 0 blocks
  ==37377==         suppressed: 0 bytes in 0 blocks
  ==37377==
  ==37377== For counts of detected and suppressed errors, rerun with: -v
  ==37377== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

  Thanks,
  Sylvain Trinquet

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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to