[ 
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 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}

> 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]

Reply via email to