I have the same problem. Here is the solution: when in debug mode, use activemq-cppd.lib(don't use activemq-cpp.lib: crash);when in release mode, use activemq-cpp.lib(don't use activemq-cppd.lib)。
andrew.marlow 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. > > Regards, > > Andrew Marlow > > ___________________________________________________________ > This e-mail may contain confidential and/or privileged information. If you > are not the intended recipient (or have received this e-mail in error) > please notify the sender immediately and delete this e-mail. Any > unauthorised copying, disclosure or distribution of the material in this > e-mail is prohibited. > > Please refer to > http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H > > for additional disclosures. > > -- View this message in context: http://old.nabble.com/help-needed%3A-heap-corruption-when-activemq-cpp-routines-called-tp28900570p29157646.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.