activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Bish <tabish...@gmail.com>
Subject Re: Possible memory leak with ActiveMQ-CPP
Date Thu, 26 Nov 2015 12:06:15 GMT
On 11/26/2015 03:07 AM, spamtrap wrote:
> On Wed, 25 Nov 2015 11:39:53 -0500, Timothy Bish
> <tabish121@gmail.com> wrote:
>
>> On 11/25/2015 11:29 AM, spamtrap wrote:
>>> On Wed, 25 Nov 2015 11:07:53 -0500, Timothy Bish
>>> <tabish121@gmail.com> wrote:
>>>
>>>> On 11/25/2015 10:50 AM, spamtrap wrote:
>>>>> On Wed, 25 Nov 2015 09:33:38 -0500, Timothy Bish
>>>>> <tabish121@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. 

-- 
Tim Bish
Sr Software Engineer | RedHat Inc.
tim.bish@redhat.com | www.redhat.com 
twitter: @tabish121
blog: http://timbish.blogspot.com/


Mime
View raw message