On Wed, 2010-06-16 at 10:08 +0100, andrew.mar...@uk.bnpparibas.com
wrote:
> I have been seeing an intermittent heap corruption in my AMQ-cpp program, 
> on and of, for some time now. It happens right at the start when it calls 
> activemq::library::ActiveMQCPP::initializeLibrary(). Unfortunately, that 
> which was intermittent is now happening every time.
> 
> I am using AMQ-cpp 3.1.0 in Windows-XP SP3, with VS 2005 (aka vc8).
> 
> By moving this call to at the very start of main, the bug relocates -- it 
> then fails on this line of code:
> 
>  std::auto_ptr<activemq::core::ActiveMQConnectionFactory> 
> connectionFactory(
>         new activemq::core::ActiveMQConnectionFactory(queueManagerName));
> 
> The variable 'queueManagerName' is initialised correctly, it is set 
> to"tcp://127.0.0.1:61616".
> 
> Output from VS is not very helpful:
> 
> First-chance exception at 0x7c919084 in myprog.exe: 0xC0000005: Access 
> violation reading location 0x0000000f.
> First-chance exception at 0x7c812afb in myprog.exe: Microsoft C++ 
> exception: std::bad_alloc at memory location 0x0012ee7c..
> HEAP[myprog.exe]: Heap block at 0541A820 modified at 0541A864 past 
> requested size of 3c
> 
> I have tried using DUMA, a memory debugger, to shed any light but 
> unfortunately, it yields nothing. Sadly, I do not have access to purify. 
> Also the code is non-portable (don't ask) so I can't build it on linux and 
> use valgrind.
> 
> The call stack looks like this:
> 
>         ntdll.dll!7c90120e() 
>         [Frames below may be incorrect and/or missing, no symbols loaded 
> for ntdll.dll] 
>         ntdll.dll!7c96e139() 
>         ntdll.dll!7c95f38c() 
>         ntdll.dll!7c96e507() 
>         ntdll.dll!7c9622e8() 
>         ntdll.dll!7c90327a() 
>         kernel32.dll!7c85f9a7() 
> >       msvcr80d.dll!_CrtIsValidHeapPointer(const void * 
> pUserData=0x0541a848)  Line 2072        C++
>         msvcr80d.dll!_free_dbg_nolock(void * pUserData=0x0541a848, int 
> nBlockUse=1)  Line 1279 + 0x9 bytes     C++
>         msvcr80d.dll!_free_dbg(void * pUserData=0x0541a848, int 
> nBlockUse=1)  Line 1220 + 0xd bytes     C++
>         msvcr80d.dll!operator delete(void * pUserData=0x0541a848)  Line 54 
> + 0x10 bytes    C++
>         myprog.exe!xms::ConnectionFactory::setProperty()  + 0x78e bytes 
> C++
>         myprog.exe!main(int argc=11, char * * argv=0x054172b0)  Line 457 + 
> 0x10 bytes      C++
>         myprog.exe!__tmainCRTStartup()  Line 597 + 0x19 bytes   C
>         myprog.exe!mainCRTStartup()  Line 414   C
>         kernel32.dll!7c817077() 
> 
> This is weird because I do not call ConnectionFactory::setProperty(), and 
> the only call I make to AMQ-cpp from main is the init call.
> 
> The problem does not occur in Release mode. Unfortunately I need Debug 
> mode (for various reasons).
> 
> Recently a bug was reported in AMQ-cpp to do with deadlocks that bites 
> Windows users. I am on the version that has that bug but I do not think 
> that bug is responsible for this.
> 
> I am desperately in need of some help/guidance please.

Can you provide a sample app that demonstrates the issue?  I've not see
this error before.


Regards


-- 
Tim Bish

Open Source Integration: http://fusesource.com
ActiveMQ in Action: http://www.manning.com/snyder/

Follow me on Twitter: http://twitter.com/tabish121
My Blog: http://timbish.blogspot.com/

Reply via email to