Page MenuHomePhabricator

Re-check WorkbenchPlugin::stop cleanup behaviour
Closed, ResolvedPublic

Description

Crash at end of application with Qt5. I add a fix in WorkbenchPlugin::stop

A valgrind run without the fix:

22922== Invalid read of size 8

22922== at 0x22BC1C8E: berry::WorkbenchPlugin::~WorkbenchPlugin() (berryWorkbenchPlugin.cpp:56)

22922== by 0x22BC1D5B: berry::WorkbenchPlugin::~WorkbenchPlugin() (berryWorkbenchPlugin.cpp:58)

22922== by 0x50F7BDD: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922== by 0x50FCB94: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922== by 0x7BDBF4E: __cxa_finalize (cxa_finalize.c:56)

22922== by 0x4EADD95: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922== by 0x51B5C80: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922== by 0x7BDBBC8: __run_exit_handlers (exit.c:82)

22922== by 0x7BDBC14: exit (exit.c:104)

22922== by 0x7BC5B4B: (below main) (libc-start.c:321)

22922== Address 0x424c1f70 is 0 bytes inside a block of size 48 free'd

22922== at 0x4C2A360: operator delete(void*) (vg_replace_malloc.c:507)

22922== by 0x22B4526D: berry::PerspectiveRegistry::~PerspectiveRegistry() (berryPerspectiveRegistry.cpp:294)

22922== by 0x22BC2D60: berry::WorkbenchPlugin::stop(ctkPluginContext*) (berryWorkbenchPlugin.cpp:317)

22922== by 0x98CA577: ctkPluginPrivate::stop1() (ctkPlugin_p.cpp:430)

22922== by 0x98CA33C: ctkPluginPrivate::stop0() (ctkPlugin_p.cpp:403)

22922== by 0x989D965: ctkPlugin::stop(QFlags<ctkPlugin::StopOption> const&) (ctkPlugin.cpp:150)

22922== by 0x98BF172: ctkPluginFrameworkPrivate::stopAllPlugins() (ctkPluginFramework_p.cpp:179)

22922== by 0x98BEC13: ctkPluginFrameworkPrivate::shutdown0(bool, bool) (ctkPluginFramework_p.cpp:119)

22922== by 0x98C16A9: QtConcurrent::VoidStoredMemberFunctionPointerCall2<void, ctkPluginFrameworkPrivate, bool, bool, bool, bool>::runFunctor() (qtconcurrentstoredfunctioncall.h:613)

22922== by 0x98BFA8C: QtConcurrent::RunFunctionTask<void>::run() (qtconcurrentrunbase.h:132)

22922== by 0x4ECEDF2: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922== by 0x4ED2113: ??? (in /home/marco/Qt/5.3/gcc_64/lib/libQt5Core.so.5.3.2)

22922