Archived
This forum has been archived. Please start a new discussion on GitHub.
Memory leak when connection failed
Vitaly Berov
in Help Center
Hello,
I have a code like this:
try
{
Ice::ObjectPrx base = ic->stringToProxy( "Test:tcp -p 9326");
::frontEnd::netIce::ServerPrx server = ::frontEnd::netIce::ServerPrx::checkedCast( base );
return 0;
);
}
catch ( Ice::Exception &ex )
{
// couldn't connect to server
return 0;
}
The problem is when we can't connect to server (Ice::ConnectionRefusedException is thrown) I have a memory leak. If I write return 0 just after the line
Ice::ObjectPrx base = ic->stringToProxy( "Test:tcp -p 9326");
I don't have any memory leaks.
I suspect that I work with Ice incorrectly in some way. Could you explain, what is wrong?
Vitaly Berov
I have a code like this:
try
{
Ice::ObjectPrx base = ic->stringToProxy( "Test:tcp -p 9326");
::frontEnd::netIce::ServerPrx server = ::frontEnd::netIce::ServerPrx::checkedCast( base );
return 0;
);
}
catch ( Ice::Exception &ex )
{
// couldn't connect to server
return 0;
}
The problem is when we can't connect to server (Ice::ConnectionRefusedException is thrown) I have a memory leak. If I write return 0 just after the line
Ice::ObjectPrx base = ic->stringToProxy( "Test:tcp -p 9326");
I don't have any memory leaks.
I suspect that I work with Ice incorrectly in some way. Could you explain, what is wrong?
Vitaly Berov
0
Comments
-
Hi, Benoit
We've found a problem. We use MSVC2005 and we had "enable C++ exception" option switched off. Compiler issued some warnings and compiled our code successfully.
But it didn't called destructors when unwound exceptions. So "Ice::ObjectPrx base" destructor never called -> not all references at "ic" were released -> we had memory leaks.
Sorry for disturbance and be on the watch for warnings!
Vitaly Berov0
