Description
Running the ping example from the qmf-console under valgrind reveals memory leaks on shutdown:
[kgiusti@localhost qmf-console]$ LD_LIBRARY_PATH="/home/kgiusti/Desktop/work/qpid/cpp/src/.libs" valgrind --leak-check=yes ./.libs/ping
==26672== Memcheck, a memory error detector
==26672== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==26672== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==26672== Command: ./.libs/ping
==26672==
Ping Broker: localhost:5672... Result: code=0 text=OK seq=0
Ping Broker: localhost:5672... Result: code=0 text=OK seq=1
Ping Broker: localhost:5672... Result: code=0 text=OK seq=2
Ping Broker: localhost:5672... Result: code=0 text=OK seq=3
Ping Broker: localhost:5672... Result: code=0 text=OK seq=4
==26672==
==26672== HEAP SUMMARY:
==26672== in use at exit: 38,479 bytes in 801 blocks
==26672== total heap usage: 13,032 allocs, 12,231 frees, 2,849,889 bytes allocated
==26672==
==26672== 60 (24 direct, 36 indirect) bytes in 1 blocks are definitely lost in loss record 4 of 32
==26672== at 0x4A05974: operator new(unsigned long) (vg_replace_malloc.c:220)
==26672== by 0x4C1EF97: qpid::console::Broker::resetAgents() (Broker.cpp:132)
==26672== by 0x4C1FA81: qpid::console::Broker::ConnectionThread::run() (Broker.cpp:192)
==26672== by 0x5241FA9: qpid::sys::(anonymous namespace)::runRunnable(void*) (Thread.cpp:35)
==26672== by 0x3B42807760: start_thread (in /lib64/libpthread-2.12.so)
==26672== by 0x3B420E14EC: clone (in /lib64/libc-2.12.so)
==26672==
==26672== 38,387 (56 direct, 38,331 indirect) bytes in 1 blocks are definitely lost in loss record 32 of 32
==26672== at 0x4A05974: operator new(unsigned long) (vg_replace_malloc.c:220)
==26672== by 0x4C30B79: qpid::console::SessionManager::handlePackageInd(qpid::console::Broker*, qpid::framing::Buffer&, unsigned int) (SessionManager.cpp:314)
==26672== by 0x4C210F5: qpid::console::Broker::received(qpid::client::Message&) (Broker.cpp:108)
==26672== by 0x4ED7B3E: qpid::client::SubscriptionImpl::received(qpid::client::Message&) (SubscriptionImpl.cpp:132)
==26672== by 0x4EB9B3F: qpid::client::Dispatcher::run() (Dispatcher.cpp:88)
==26672== by 0x4C1FABB: qpid::console::Broker::ConnectionThread::run() (Broker.cpp:198)
==26672== by 0x5241FA9: qpid::sys::(anonymous namespace)::runRunnable(void*) (Thread.cpp:35)
==26672== by 0x3B42807760: start_thread (in /lib64/libpthread-2.12.so)
==26672== by 0x3B420E14EC: clone (in /lib64/libc-2.12.so)
==26672==
==26672== LEAK SUMMARY:
==26672== definitely lost: 80 bytes in 2 blocks
==26672== indirectly lost: 38,367 bytes in 798 blocks
==26672== possibly lost: 0 bytes in 0 blocks
==26672== still reachable: 32 bytes in 1 blocks
==26672== suppressed: 0 bytes in 0 blocks
==26672== Reachable blocks (those to which a pointer was found) are not shown.
==26672== To see them, rerun with: --leak-check=full --show-reachable=yes
==26672==
==26672== For counts of detected and suppressed errors, rerun with: -v
==26672== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 47 from 9)