Skip to content

Fix leak in color picker plugin

Waqar Ahmed requested to merge work/fix-color-leak into master

Fix the leak below. Additionally, don't remove ColorPickerInlineNoteProvider on QObject::destroyed but remove it on Document::aboutToClose because at that point the document is still valid.

    #0 0x7f5615d00ca1 in operator new(unsigned long) /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x7f56115f8e69 in QObject::QObject(QObject*) (/usr/lib/libQt5Core.so.5+0x2f8e69)
    #2 0x7f5606164656 in ColorPickerInlineNoteProvider::ColorPickerInlineNoteProvider(KTextEditor::Document*) /home/waqar/kde/src/utilities/kate/addons/colorpicker/katecolorpickerplugin.cpp:34
    #3 0x7f5606165a33 in KateColorPickerPlugin::addDocument(KTextEditor::Document*) /home/waqar/kde/src/utilities/kate/addons/colorpicker/katecolorpickerplugin.cpp:282
    #4 0x7f5606166b74 in operator() /home/waqar/kde/src/utilities/kate/addons/colorpicker/katecolorpickerplugin.cpp:273
    #5 0x7f5606166b74 in call /usr/include/qt/QtCore/qobjectdefs_impl.h:146
    #6 0x7f5606166b74 in call<QtPrivate::List<KTextEditor::View*>, void> /usr/include/qt/QtCore/qobjectdefs_impl.h:256
    #7 0x7f5606166b74 in impl /usr/include/qt/QtCore/qobjectdefs_impl.h:443
    #8 0x7f5606166b74 in impl /usr/include/qt/QtCore/qobjectdefs_impl.h:436
    #9 0x7f56115fa8c4  (/usr/lib/libQt5Core.so.5+0x2fa8c4)
    #10 0x7f56153ca071 in KTextEditor::MainWindow::viewCreated(KTextEditor::View*) KF5TextEditor_autogen/OGSBNZGFXN/moc_mainwindow.cpp:199
    #11 0x5630b65b275f in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<KTextEditor::View*>, void, void (KTextEditor::MainWindow::*)(KTextEditor::View*)>::call(void (KTextEditor::MainWindow::*)(KTextEditor::View*), KTextEditor::MainWindow*, void**) /usr/include/qt/QtCore/qobjectdefs_impl.h:152
    #12 0x5630b65b275f in void QtPrivate::FunctionPointer<void (KTextEditor::MainWindow::*)(KTextEditor::View*)>::call<QtPrivate::List<KTextEditor::View*>, void>(void (KTextEditor::MainWindow::*)(KTextEditor::View*), KTextEditor::MainWindow*, void**) /usr/include/qt/QtCore/qobjectdefs_impl.h:185
    #13 0x5630b65b275f in QtPrivate::QSlotObject<void (KTextEditor::MainWindow::*)(KTextEditor::View*), QtPrivate::List<KTextEditor::View*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/qt/QtCore/qobjectdefs_impl.h:418
    #14 0x7f56115fa8c4  (/usr/lib/libQt5Core.so.5+0x2fa8c4)
    #15 0x5630b64dc695 in KateViewManager::viewCreated(KTextEditor::View*) /home/waqar/kde/src/utilities/kate/build/kate/kate-lib_autogen/EWIEGA46WW/moc_kateviewmanager.cpp:445
    #16 0x5630b663d19e in KateViewManager::createView(KTextEditor::Document*, KateViewSpace*) /home/waqar/kde/src/utilities/kate/kate/kateviewmanager.cpp:485
    #17 0x5630b66641dd in KateViewSpace::restoreConfig(KateViewManager*, KConfigBase const*, QString const&) /home/waqar/kde/src/utilities/kate/kate/kateviewspace.cpp:748
    #18 0x5630b6649de6 in KateViewManager::restoreSplitter(KConfigBase const*, QString const&, KateSplitter*, QString const&) /home/waqar/kde/src/utilities/kate/kate/kateviewmanager.cpp:1183
    #19 0x5630b664a914 in KateViewManager::restoreViewConfiguration(KConfigGroup const&) /home/waqar/kde/src/utilities/kate/kate/kateviewmanager.cpp:1069
    #20 0x5630b65a82f4 in KateMainWindow::KateMainWindow(KConfig*, QString const&) /home/waqar/kde/src/utilities/kate/kate/katemainwindow.cpp:151
    #21 0x5630b64ced77 in KateApp::newMainWindow(KConfig*, QString const&) /home/waqar/kde/src/utilities/kate/kate/kateapp.cpp:446
    #22 0x5630b6531214 in KateSessionManager::loadSession(QExplicitlySharedDataPointer<KateSession> const&) const /home/waqar/kde/src/utilities/kate/kate/session/katesessionmanager.cpp:185
    #23 0x5630b653d076 in KateSessionManager::activateSession(QExplicitlySharedDataPointer<KateSession>, bool, bool) /home/waqar/kde/src/utilities/kate/kate/session/katesessionmanager.cpp:146
    #24 0x5630b653e38d in KateSessionManager::activateSession(QString const&, bool, bool) /home/waqar/kde/src/utilities/kate/kate/session/katesessionmanager.cpp:222
    #25 0x5630b64d603e in KateApp::startupKate() /home/waqar/kde/src/utilities/kate/kate/kateapp.cpp:178
    #26 0x5630b64d91cc in KateApp::init() /home/waqar/kde/src/utilities/kate/kate/kateapp.cpp:140
    #27 0x5630b64c8599 in main /home/waqar/kde/src/utilities/kate/kate/main.cpp:676
    #28 0x7f5610de6b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)

Merge request reports