Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
None
-
Qt Creator master branch:
commit 7aaaa750945cfd333404b20fa486e22bcb8dd732
Author: Marco Bubke <marco.bubke@nokia.com>
Date: Thu Sep 9 19:37:01 2010 +0200
-
0924aaff47086054bb00b9a6509f6e374146f633
Description
Hi,
It looks like there is a memory leak in Debugger plugin - StackHandler.
http://qt.gitorious.org/qt-creator/qt-creator/blobs/master/src/plugins/debugger/stackhandler.cpp#line58
src/plugins/debugger/stackhandler.cpp constructor StackHandler::StackHandler(DebuggerEngine *engine):
m_disassemblerViewAgent is created:
m_disassemblerViewAgent = new DisassemblerViewAgent(engine);
But in the destructor it is not deleted.
StackHandler::~StackHandler()
{
//delete m_disassemblerViewAgent;
}
?
DisassemblerViewAgent does not set a parent:
DisassemblerViewAgent::DisassemblerViewAgent(DebuggerEngine *engine)
: QObject(0), d(new DisassemblerViewAgentPrivate)
{
d->engine = engine;
}
At least Valgrind reports about memory leak (after the exit):
======
308 (12 direct, 296 indirect) bytes in 1 blocks are definitely lost
operator new(unsigned int) (vg_replace_malloc.c:255)
Debugger::Internal::StackHandler::StackHandler(Debugger::DebuggerEngine*) (stackhandler.cpp:58)
Debugger::DebuggerEnginePrivate::DebuggerEnginePrivate(Debugger::DebuggerEngine*, Debugger::DebuggerStartParameters const&) (debuggerengine.cpp:239)
Debugger::DebuggerEngine::DebuggerEngine(Debugger::DebuggerStartParameters const&) (debuggerengine.cpp:409)
Debugger::Internal::SessionEngine::SessionEngine() (sessionengine.cpp:45)
Debugger::DebuggerPluginPrivate::initialize(QStringList const&, QString*) (debuggerplugin.cpp:1133)
Debugger::DebuggerPlugin::initialize(QStringList const&, QString*) (debuggerplugin.cpp:2546)
ExtensionSystem::Internal::PluginSpecPrivate::initializePlugin() (pluginspec.cpp:925)
ExtensionSystem::Internal::PluginManagerPrivate::loadPlugin(ExtensionSystem::PluginSpec*, ExtensionSystem::PluginSpec::State) (pluginmanager.cpp:921)
ExtensionSystem::Internal::PluginManagerPrivate::loadPlugins() (pluginmanager.cpp:780)
ExtensionSystem::PluginManager::loadPlugins() (pluginmanager.cpp:253)
main (main.cpp:293)
======