Thanks for the release Tim. A lot of work must have gone into it! Just a couple of points on the use of the APR library... 1. It would be nice if the README.TXT specified which version of the APR library ActiveMQ-CPP was dependent on. It looks like there are two version in common use 1.3.2 and 0.9.17. 2. This may or may not be considered a bug….on Windows XP I was getting "Unhandled exception. Access violation reading location... " when closing my application. The source of the access violation was the function apr_allocator_destroy found in apr_pools.c.
The issue was the APR library was being initialised late in the process of connecting to the broker. Thus it was one of the first items to be destroyed when cleaning up the application *before* any of the producers, consumers, sessions or connections had been destroyed. The below stack trace points to the fist place the APR library was initialised. As AprPool uses a static instance of AprRuntime, it will only be destructed when the application is closed *but* it will be done in the reverse order of being defined. > app.exe!decaf::internal::AprRuntime::AprRuntime() Line 30 app.exe!decaf::internal::AprPool::getAprPool() Line 67 + 0x2a app.exe!decaf::net::TcpSocket::connect() Line 98 + 0xb app.exe!decaf::net::SocketFactory::createSocket() Line 111 app.exe!activemq::transport::filters::TcpTransport::TcpTransport() Line 60 + 0x7b app.exe!activemq::transport::filters::TcpTransportFactory::createTransport() Line 45 + 0x40 app.exe!activemq::transport::TransportBuilder::createTransport() Line 105 + 0x17 app.exe!activemq::transport::TransportBuilder::buildTransport() Line 56 + 0xa3 app.exe!activemq::core::ActiveMQConnectionFactory::createConnection() Line 127 + 0x10 app.exe!activemq::core::ActiveMQConnectionFactory::createConnection() Line 67 + 0x65 app.exe!<call to active mq library> My application uses ActiveMQ-CPP library ONLY as a MOM client library, it does not use any of the decaf functionality unlike the example provided with the release. As the HelloWorldConsumer uses a CountDownLatch as a member variable which is initialised in the constructor, the APR library is initialised in the correct order. So after all that rambling as a quick fix I have added the following lines into my application, which has resolved the issue. #include <decaf/internal/AprRuntime.h> decaf::internal::AprRuntime gAprRuntime; -- View this message in context: http://www.nabble.com/ActiveMQ-CPP-2.2-Released-tp18055195p18310319.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.