https://bugs.kde.org/show_bug.cgi?id=393977
Méven Car <meve...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |meve...@gmail.com Status|REPORTED |CONFIRMED Ever confirmed|0 |1 --- Comment #26 from Méven Car <meve...@gmail.com> --- I was able to reproduce the bug adding many many entries to my bookmark menu and get a trace: Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f01b57b2d39 in QObjectPrivate::setParent_helper(QObject*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (gdb) bt #0 0x00007f01b57b2d39 in QObjectPrivate::setParent_helper(QObject*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #1 0x00007f01b57b3623 in QObject::~QObject() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #2 0x00007f01b6276257 in QAction::~QAction() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #3 0x00007f01b627628d in QAction::~QAction() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #4 0x00007f01b6403fdf in QMenu::clear() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #5 0x00007f01b76a88e3 in KDEPrivate::KUrlNavigatorPlacesSelector::updateMenu (this=0x564235251f80) at /home/meven/kde/src/kio/src/filewidgets/kurlnavigatorplacesselector.cpp:72 #6 0x00007f01b57ab458 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #7 0x00007f01b572ba29 in QAbstractItemModel::dataChanged(QModelIndex const&, QModelIndex const&, QVector<int> const&) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #8 0x00007f01b76782b3 in KFilePlacesModel::Private::_k_reloadBookmarks (thi #0 0x00007f01b6a482a4 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 #1 0x00007f01b6a48ae9 in QDomNode::namedItem(QString const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 #2 0x00007f01b75c09ae in cd (node=..., name=..., create=<optimized out>) at /home/meven/kde/src/kbookmarks/src/kbookmark.cpp:48 #3 0x00007f01b75c3276 in KBookmark::metaData (this=this@entry=0x7ffeb71ba1a0, owner=..., create=create@entry=false) at /home/meven/kde/src/kbookmarks/src/kbookmark.cpp:586 #4 0x00007f01b75c47fd in KBookmark::metaDataItem (this=this@entry=0x7ffeb71ba1a0, key=...) at /home/meven/kde/src/kbookmarks/src/kbookmark.cpp:36 #5 0x00007f01b766dec8 in KFilePlacesItem::isDevice (this=this@entry=0x56423b41eea0) at /home/meven/kde/src/kio/src/filewidgets/kfileplacesitem.cpp:101 #6 0x00007f01b766f8b3 in KFilePlacesItem::data (this=0x56423b41eea0, role=0) at /home/meven/kde/src/kio/src/filewidgets/kfileplacesitem.cpp:164 #7 0x00007f01b767211b in KFilePlacesModel::data (this=0x564235563d10, index=..., role=<optimized out>) at /home/meven/kde/src/kio/src/filewidgets/kfileplacesmodel.cpp:538 #8 0x00007f01b7671f8f in KFilePlacesModel::text (this=<optimized out>, index=...) at /home/meven/kde/src/kio/src/filewidgets/kfileplacesmodel.cpp:439 #9 0x00007f01b76a8b55 in KDEPrivate::KUrlNavigatorPlacesSelector::updateMenu (this=0x56423554d790) at /home/meven/kde/src/kio/src/filewidgets/kurlnavigatorplacesselector.cpp:91 #10 0x00007f01b57ab458 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #11 0x00007f01b572ba29 in QAbstractItemModel::dataChanged(QModelIndex const&, QModelIndex const&, QVector<int> const&) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 The culprit is `KUrlNavigatorPlacesSelector::updateMenu` clears the whole menu for each place insertion or removal, twice over (because of dataChanged and rowsInserted connection). And the inner loop of updateMenu is not light. Making adding new places an exponentially slower operation. To solve this issue : 1/ We need to call updateMenu once per update to the model 2/ We need to make the update progress incremental idealy -- You are receiving this mail because: You are watching all bug changes.