You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Jeff Yeoh (JIRA)" <ji...@apache.org> on 2016/10/06 23:25:20 UTC
[jira] [Comment Edited] (QPID-7187) Memory leak when calling
qpid::messaging::Connection::open()
[ 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:24 PM:
-----------------------------------------------------------
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}
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
> Environment: Windows 7, using ActiveMQ 5.12 as broker
> Reporter: Jeff Yeoh
> Labels: c++, memory-leak
>
> 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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org