On 11/27/2015 03:38 AM, spam trap wrote: > On Thu, 26 Nov 2015 09:03:35 -0500, Timothy Bish > <tabish...@gmail.com> wrote: > >> On 11/26/2015 08:24 AM, spamtrap wrote: >>> On Thu, 26 Nov 2015 07:06:15 -0500, Timothy Bish >>> <tabish...@gmail.com> wrote: >>> >>>> On 11/26/2015 03:07 AM, spamtrap wrote: >>>>> On Wed, 25 Nov 2015 11:39:53 -0500, Timothy Bish >>>>> <tabish...@gmail.com> wrote: >>>>> >>>>>> On 11/25/2015 11:29 AM, spamtrap wrote: >>>>>>> On Wed, 25 Nov 2015 11:07:53 -0500, Timothy Bish >>>>>>> <tabish...@gmail.com> wrote: >>>>>>> >>>>>>>> On 11/25/2015 10:50 AM, spamtrap wrote: >>>>>>>>> On Wed, 25 Nov 2015 09:33:38 -0500, Timothy Bish >>>>>>>>> <tabish...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> On 11/25/2015 05:47 AM, spam trap wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> I have the following code: >>>>>>>>>>> >>>>>>>>>>> cms::Message *pMessage; >>>>>>>>>>> ... >>>>>>>>>>> std::vector<std::string> propertyNames = >>>>>>>>>>> pMessage->getPropertyNames(); >>>>>>>>>>> >>>>>>>>>>> According to valgrind this leaks memory. propertyNames is on the >>>>>>>>>>> stack BTW. >>>>>>>>>>> >>>>>>>>>>> ==27758== 50,039,920 (289,968 direct, 49,749,952 indirect) bytes in >>>>>>>>>>> 6,041 blocks are definitely lost in loss record 383 of 384 >>>>>>>>>>> ==27758== at 0x4A075FC: operator new(unsigned long) >>>>>>>>>>> (vg_replace_malloc.c:298) >>>>>>>>>>> ==27758== by 0x5F77EF9: decaf::util::StlMap<std::string, >>>>>>>>>>> activemq::util::PrimitiveValueNode, >>>>>>>>>>> decaf::util::comparators::Less<std::string> >::keySet() const >>>>>>>>>>> (StlMap.h:866) >>>>>>>>>>> ==27758== by 0x5C3799E: >>>>>>>>>>> activemq::commands::ActiveMQMessageTemplate<cms::BytesMessage>::getPropertyNames() >>>>>>>>>>> const (ActiveMQMessageTemplate.h:109) >>>>>>>>>>> >>>>>>>>>>> Any ideas? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >From a quick code inspection I don't see any case where a leak can >>>>>>>>>> occur. If you can add a test case to the existing set of unit tests >>>>>>>>>> for >>>>>>>>>> the Message objects to reproduce the valgrind complaint I will look >>>>>>>>>> again. >>>>>>>>>> >>>>>>>>>> Try adding something to >>>>>>>>>> src/test/activemq/commands/ActiveMQMessageTest.h/cpp >>>>>>>>> Where are the binaries placed for the test programs? I can't seem to >>>>>>>>> find them. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> Depends on how you are building them, what is the environment and build >>>>>>>> process? >>>>>>> Linux 64 bit. I've run: >>>>>>> >>>>>>> configure .... >>>>>>> make >>>>>>> make install >>>>>>> make check >>>>>>> >>>>>>> >>>>>>> >>>>>> So on Linux the autotools the build process will place the executables >>>>>> in the directory that map to the application being created. >>>>>> >>>>>> So for instance if you want to build the unit tests the executable is in >>>>>> >>>>>> ./src/test/ and is called activemq-test I believe. >>>>>> >>>>>> I generally use a build folder to keep the source and intermediate files >>>>>> separate, to test and check for leaks I use a process something like the >>>>>> following. >>>>>> >>>>>> cd activemq-cpp >>>>>> mkdir ./build >>>>>> ./autogen.sh >>>>> I get this: >>>>> "configure.ac:122: ' is not a type" >>>>> Is this a problem? >>>>> >>>>>> cd build >>>>>> ../configure --enable-shared=no CXXFLAGS="-g -O0" >>>>>> make check -j 8 >>>>> "make: *** No rule to make target `check'. Stop." >>>>> [There's no makefile in the build directory] >>>>> >>>>> make -f ../Makefile also does not work: >>>>> >>>>> CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh >>>>> /home/me/activemq/activemq-cpp-library-3.9.0/config/missing --run >>>>> aclocal-1.11 -I m4 >>>>> aclocal-1.11: `configure.ac' or `configure.in' is required >>>>> make: *** [aclocal.m4] Error 1 >>>>> >>>>> >>>>>> ./src/test/activemq-test >>>>> There's no file of this name anywhere. >>>>> >>>> If you are having trouble try clone the git repo and working with that, >>>> I built that code yesterday without issue. >>> I've just tried this and I get the same result. I notice that 'make >>> check' does not even attempt to build anything in src/test. I wonder >>> if it's because cppunit is not installed in a 'standard' location? >>> >> That could be an issue, you'd need to debug it on your side to find out >> for sure. > I have built the test programs now and added a test for my case. > However I don't see the memory leak being reported by valgrind in the > test program -- strange the difference. > > Makes sense to check your application to ensure you are freeing message instances as that could lead to a leak of this area being reported.
-- Tim Bish Sr Software Engineer | RedHat Inc. tim.b...@redhat.com | www.redhat.com twitter: @tabish121 blog: http://timbish.blogspot.com/