[
https://issues.apache.org/jira/browse/QPID-7187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15553540#comment-15553540
]
Jeff Yeoh edited comment on QPID-7187 at 10/6/16 11:46 PM:
-----------------------------------------------------------
Making the object kill itself after start() solves the problem.
{code:title=AsynchIO.cpp in qpid::sys::windows|borderStyle=solid}
void AsynchConnector::start(Poller::shared_ptr)
{
try {
socket.connect(SocketAddress(hostname, port));
socket.setNonblocking();
connCallback(socket);
} catch(std::exception& e) {
if (failCallback)
failCallback(socket, -1, std::string(e.what()));
socket.close();
}
// Seppuku!
delete this;
}
{code}
was (Author: jyeoh):
Making the object kill itself after start() solves the problem.
{code:title=AsynchIO.cpp|borderStyle=solid}
using namespace qpid::sys::windows;
void AsynchConnector::start(Poller::shared_ptr)
{
try {
socket.connect(SocketAddress(hostname, port));
socket.setNonblocking();
connCallback(socket);
} catch(std::exception& e) {
if (failCallback)
failCallback(socket, -1, std::string(e.what()));
socket.close();
}
// Seppuku!
delete this;
}
{code}
> Memory leak when calling qpid::messaging::Connection::open()
> ------------------------------------------------------------
>
> Key: QPID-7187
> URL: https://issues.apache.org/jira/browse/QPID-7187
> Project: Qpid
> Issue Type: Bug
> Components: C++ Client
> Affects Versions: qpid-cpp-0.34, qpid-cpp-1.35.0
> Environment: Windows 7, using ActiveMQ 5.13 as broker
> Reporter: Jeff Yeoh
> Labels: c++, memory-leak, qpid::sys::windows::AsynchConnector,
> windows
>
> Memory leak detected using _CrtDumpMemoryLeaks();
> It happened whenever qpid::messaging::Connection::open() is called. Even
> though by the end of the session, I called connection.close() to close the
> connection, the leak still happens.
> Here's the snapshot of the code:
> qpid::messaging::Connection connection(brokerUrl, protocolConnectionString);
> // Now send the message
> try
> {
> connection.open();
> qpid::messaging::Session session = connection.createSession();
> qpid::messaging::Sender sender = session.createSender("channel");
> sender.send(message);
> session.sync();
> connection.close();
>
> }
> catch (const std::exception& error)
> {
> connection.close();
> return false;
> }
> Here's the summary of memory leak:
> Detected memory leaks!
> Dumping objects ->
> {26638} normal block at 0x00A6F1E8, 8 bytes long.
> Data: < > 08 AF A3 00 00 00 00 00
> {26637} normal block at 0x00A51FC8, 8 bytes long.
> Data: < > EC AE A3 00 00 00 00 00
> {26636} normal block at 0x00A3AEA0, 136 bytes long.
> Data: <`() /W > 60 28 29 10 CD CD CD CD F5 2F 57 01 CD CD CD CD
> Object dump complete.
> Note that I did not use the C++ broker. I used ActiveMQ 5.12 as the broker
> using AMQP 1.0
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]