Bug 393528 - crash if user-places.xbel contains a duplicated entry
Summary: crash if user-places.xbel contains a duplicated entry
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Applications
Component: panels: places (show other bugs)
Version: 18.04.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-26 06:32 UTC by Antonio Rojas
Modified: 2018-05-21 20:33 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Minimal user-places.xbel test case that makes dolphin crash (916 bytes, application/x-xbel)
2018-04-26 06:38 UTC, Antonio Rojas
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Antonio Rojas 2018-04-26 06:32:02 UTC
Dolphin crashes at startup when user-places.xbel contains a duplicated entry.

(gdb) bt
#0  KStandardItem::setDataValue (this=this@entry=0x555555e6d030, role=..., value=...)
    at /build/dolphin/src/dolphin-18.04.0/src/kitemviews/kstandarditem.cpp:104
#1  0x00007ffff74b2512 in KStandardItem::setIcon (this=0x555555e6d030, icon=...)
    at /build/dolphin/src/dolphin-18.04.0/src/kitemviews/kstandarditem.cpp:74
#2  0x00007ffff7b677d1 in PlacesItem::<lambda(bool)>::operator() (isTrashEmpty=<optimized out>, __closure=<optimized out>)
    at /build/dolphin/src/dolphin-18.04.0/src/panels/places/placesitem.cpp:65
#3  QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<bool>, void, PlacesItem::setUrl(const QUrl&)::<lambda(bool)> >::call (
    arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:130
#4  QtPrivate::Functor<PlacesItem::setUrl(const QUrl&)::<lambda(bool)>, 1>::call<QtPrivate::List<bool>, void> (arg=<optimized out>, f=...)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:240
#5  QtPrivate::QFunctorSlotObject<PlacesItem::setUrl(const QUrl&)::<lambda(bool)>, 1, QtPrivate::List<bool>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:423
#6  0x00007ffff19c883f in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#7  0x00007ffff7b900a0 in Trash::emptinessChanged (this=<optimized out>, _t1=<optimized out>, _t1@entry=false)
    at /build/dolphin/src/build/src/dolphinstatic_autogen/ACC2Q2AKJ6/moc_dolphintrash.cpp:127
#8  0x00007ffff7b5c84a in Trash::<lambda()>::operator() (__closure=0x555555cadbf0) at /build/dolphin/src/dolphin-18.04.0/src/trash/dolphintrash.cpp:41
#9  QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Trash::Trash()::<lambda()> >::call (arg=<optimized out>, f=...)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:130
#10 QtPrivate::Functor<Trash::Trash()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:240
#11 QtPrivate::QFunctorSlotObject<Trash::Trash()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x555555cadbe0, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:423
#12 0x00007ffff19c883f in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#13 0x00007ffff5e025e5 in KCoreDirListerCache::slotResult (this=0x7ffff6070400 <(anonymous namespace)::Q_QGS_kDirListerCache::innerFunction()::holder>, 
    j=<optimized out>) at /build/kio/src/kio-5.45.0/src/core/kcoredirlister.cpp:1358
#14 0x00007ffff5e06774 in KCoreDirListerCache::qt_static_metacall (
    _o=0x7ffff6070400 <(anonymous namespace)::Q_QGS_kDirListerCache::innerFunction()::holder>, _c=<optimized out>, _id=<optimized out>, 
    _a=<optimized out>) at /build/kio/src/build/src/core/KF5KIOCore_autogen/include/moc_kcoredirlister_p.cpp:136
#15 0x00007ffff19c8716 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#16 0x00007ffff33a669d in KJob::result(KJob*, KJob::QPrivateSignal) () from /usr/lib/libKF5CoreAddons.so.5
---Type <return> to continue, or q <return> to quit---
#17 0x00007ffff33a71e2 in KJob::finishJob(bool) () from /usr/lib/libKF5CoreAddons.so.5
#18 0x00007ffff5db5a81 in KIO::SimpleJob::slotFinished (this=this@entry=0x555555cadcf0) at /build/kio/src/kio-5.45.0/src/core/simplejob.cpp:232
#19 0x00007ffff5daa11e in KIO::ListJob::slotFinished (this=0x555555cadcf0) at /build/kio/src/kio-5.45.0/src/core/listjob.cpp:247
#20 0x00007ffff19c883f in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#21 0x00007ffff5d8eab6 in KIO::SlaveInterface::dispatch (this=0x555555eee810, _cmd=<optimized out>, rawdata=...)
    at /build/kio/src/kio-5.45.0/src/core/slaveinterface.cpp:160
#22 0x00007ffff5d8afd8 in KIO::SlaveInterface::dispatch (this=0x555555eee810) at /build/kio/src/kio-5.45.0/src/core/slaveinterface.cpp:89
#23 0x00007ffff5d90692 in KIO::Slave::gotInput (this=0x555555eee810) at /build/kio/src/kio-5.45.0/src/core/slave.cpp:406
#24 0x00007ffff19c8716 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#25 0x00007ffff5d323aa in KIO::Connection::readyRead (this=<optimized out>)
    at /build/kio/src/build/src/core/KF5KIOCore_autogen/include/moc_connection_p.cpp:143
#26 KIO::ConnectionPrivate::dequeue (this=0x555555cadac0) at /build/kio/src/kio-5.45.0/src/core/connection.cpp:46
#27 0x00007ffff19c92b2 in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#28 0x00007ffff29d35ec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#29 0x00007ffff29dadc6 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#30 0x00007ffff19985c0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#31 0x00007ffff199b1de in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt5Core.so.5
#32 0x00007ffff19f4c44 in ?? () from /usr/lib/libQt5Core.so.5
#33 0x00007fffea1e2368 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#34 0x00007fffea1e25b1 in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007fffea1e263e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007ffff19f4231 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#37 0x00007fffe3373362 in ?? () from /usr/lib/libQt5XcbQpa.so.5
#38 0x00007ffff1996d1b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#39 0x00007ffff199ff68 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#40 0x00007ffff7b409d6 in kdemain (argc=<optimized out>, argv=<optimized out>) at /build/dolphin/src/dolphin-18.04.0/src/main.cpp:163
#41 0x00007ffff77679a7 in __libc_start_main () from /usr/lib/libc.so.6
#42 0x000055555555475a in _start ()
Comment 1 Antonio Rojas 2018-04-26 06:33:06 UTC
*** Bug 393529 has been marked as a duplicate of this bug. ***
Comment 2 Antonio Rojas 2018-04-26 06:38:45 UTC
Created attachment 112248 [details]
Minimal user-places.xbel test case that makes dolphin crash
Comment 3 Antonio Rojas 2018-04-26 09:44:22 UTC
Hmm the first backtrace seems to be unrelated, this is the good one

(gdb) bt
#0  0x0000000a00000002 in ?? ()
#1  0x00007ffff19feada in QObjectPrivate::connectImpl (sender=sender@entry=0x555555eaadb0, signal_index=<optimized out>, 
    receiver=receiver@entry=0x555555e0d930, slot=slot@entry=0x7fffffffda20, slotObj=slotObj@entry=0x555555be4270, 
    type=<optimized out>, types=<optimized out>, senderMetaObject=<optimized out>) at kernel/qobject.cpp:4848
#2  0x00007ffff19fecbc in QObject::connectImpl (sender=sender@entry=0x555555eaadb0, signal=signal@entry=0x7fffffffda10, 
    receiver=receiver@entry=0x555555e0d930, slot=slot@entry=0x7fffffffda20, slotObj=0x555555be4270, 
    type=Qt::AutoConnection, types=0x0, senderMetaObject=0x7ffff7dd3860 <PlacesItemSignalHandler::staticMetaObject>)
    at kernel/qobject.cpp:4785
#3  0x00007ffff7b6d583 in QObject::connect<void (PlacesItemSignalHandler::*)(QString const&), void (PlacesItemModel::*)(QString const&)> (type=Qt::AutoConnection, slot=
    (void (PlacesItemModel::*)(PlacesItemModel * const, const QString &)) 0x7ffff7b8fa80 <PlacesItemModel::storageTearDownExternallyRequested(QString const&)>, receiver=0x555555e0d930, signal=
    (void (PlacesItemSignalHandler::*)(PlacesItemSignalHandler * const, const QString &)) 0x7ffff7b8fae0 <PlacesItemSignalHandler::tearDownExternallyRequested(QString const&)>, sender=0x555555eaadb0) at /usr/include/qt/QtCore/qobject.h:260
#4  PlacesItemModel::addItemFromSourceModel (this=this@entry=0x555555e0d930, index=...)
    at /build/dolphin/src/dolphin-18.04.0/src/panels/places/placesitemmodel.cpp:408
#5  0x00007ffff7b6d792 in PlacesItemModel::onSourceModelRowsInserted (this=0x555555e0d930, parent=..., 
    first=<optimized out>, last=8) at /build/dolphin/src/dolphin-18.04.0/src/panels/places/placesitemmodel.cpp:525
#6  0x00007ffff19fa7af in QtPrivate::QSlotObjectBase::call (a=0x7fffffffdbd0, r=0x555555e0d930, this=0x555555e23e40)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:378
#7  QMetaObject::activate (sender=sender@entry=0x555555c53bc0, signalOffset=<optimized out>, 
    local_signal_index=local_signal_index@entry=10, argv=argv@entry=0x7fffffffdbd0) at kernel/qobject.cpp:3750
#8  0x00007ffff19fad89 in QMetaObject::activate (sender=sender@entry=0x555555c53bc0, 
    m=m@entry=0x7ffff1e2bda0 <QAbstractItemModel::staticMetaObject>, local_signal_index=local_signal_index@entry=10, 
    argv=argv@entry=0x7fffffffdbd0) at kernel/qobject.cpp:3629
#9  0x00007ffff1962eef in QAbstractItemModel::rowsInserted (this=this@entry=0x555555c53bc0, _t1=..., _t2=<optimized out>, 
    _t3=<optimized out>, _t4=...) at .moc/moc_qabstractitemmodel.cpp:602
#10 0x00007ffff196a73d in QAbstractItemModel::endInsertRows (this=0x555555c53bc0) at itemmodels/qabstractitemmodel.cpp:2709
#11 0x00007ffff6f9927d in KFilePlacesModel::Private::_k_reloadBookmarks (this=this@entry=0x555555c13890)
    at /build/kio/src/kio-5.45.0/src/filewidgets/kfileplacesmodel.cpp:632
#12 0x00007ffff6f998a0 in KFilePlacesModel::Private::_k_initDeviceList (this=0x555555c13890)
    at /build/kio/src/kio-5.45.0/src/filewidgets/kfileplacesmodel.cpp:537
#13 0x00007ffff6f9af89 in KFilePlacesModel::qt_static_metacall (_o=<optimized out>, _id=<optimized out>, 
    _a=<optimized out>, _c=<optimized out>)
    at /build/kio/src/build/src/filewidgets/KF5KIOFileWidgets_autogen/include/moc_kfileplacesmodel.cpp:118
#14 0x00007ffff19fb0d2 in QObject::event (this=0x555555c53bc0, e=<optimized out>) at kernel/qobject.cpp:1247
#15 0x00007ffff29d807c in QApplicationPrivate::notify_helper (this=this@entry=0x555555771650, 
---Type <return> to continue, or q <return> to quit---
    receiver=receiver@entry=0x555555c53bc0, e=e@entry=0x555555c93210) at kernel/qapplication.cpp:3732
#16 0x00007ffff29dfa56 in QApplication::notify (this=0x7fffffffe440, receiver=0x555555c53bc0, e=0x555555c93210)
    at kernel/qapplication.cpp:3491
#17 0x00007ffff19c9d60 in QCoreApplication::notifyInternal2 (receiver=0x555555c53bc0, event=event@entry=0x555555c93210)
    at kernel/qcoreapplication.cpp:1050
#18 0x00007ffff19cc9c6 in QCoreApplication::sendEvent (event=0x555555c93210, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#19 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, 
    data=0x55555576f190) at kernel/qcoreapplication.cpp:1740
#20 0x00007ffff19ccf5a in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0)
    at kernel/qcoreapplication.cpp:1594
#21 0x00007ffff1a26cc4 in postEventSourceDispatch (s=0x5555557d8f50) at kernel/qeventdispatcher_glib.cpp:276
#22 0x00007fffe8423368 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#23 0x00007fffe84235b1 in ?? () from /usr/lib/libglib-2.0.so.0
#24 0x00007fffe842363e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#25 0x00007ffff1a262b1 in QEventDispatcherGlib::processEvents (this=0x5555557ebe70, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#26 0x00007fffe3365c62 in QPAEventDispatcherGlib::processEvents (this=0x5555557ebe70, flags=...)
    at qeventdispatcher_glib.cpp:69
#27 0x00007ffff19c839b in QEventLoop::exec (this=this@entry=0x7fffffffe340, flags=..., flags@entry=...)
    at kernel/qeventloop.cpp:212
#28 0x00007ffff19d1798 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1338
#29 0x00007ffff21beede in QGuiApplication::exec () at kernel/qguiapplication.cpp:1687
#30 0x00007ffff29d7fd6 in QApplication::exec () at kernel/qapplication.cpp:2917
#31 0x00007ffff7b409d6 in kdemain (argc=<optimized out>, argv=<optimized out>)
    at /build/dolphin/src/dolphin-18.04.0/src/main.cpp:163
#32 0x00007ffff77679a7 in __libc_start_main () from /usr/lib/libc.so.6
#33 0x000055555555475a in _start ()
Comment 4 Antonio Rojas 2018-04-26 22:07:27 UTC
https://phabricator.kde.org/D12558
Comment 5 Julian Steinmann 2018-04-27 17:30:21 UTC
Confirmed & Antonio is working on a fix. (See the Phabricator link from comment 4)
Comment 6 Elvis Angelaccio 2018-04-29 16:14:37 UTC
*** Bug 393435 has been marked as a duplicate of this bug. ***
Comment 7 Antonio Rojas 2018-04-29 17:40:46 UTC
Git commit 0c05b992c0dbfb2b0651344413310d0b860c2fa7 by Antonio Rojas.
Committed on 29/04/2018 at 17:39.
Pushed by arojas into branch 'Applications/18.04'.

Don't filter out duplicated entries from places panel

This can lead to crashes and is inconsistent with the KIO file picker dialog, which shows duplicated entries.

Differential Revision: https://phabricator.kde.org/D12558

M  +1    -4    src/panels/places/placesitemmodel.cpp

https://commits.kde.org/dolphin/0c05b992c0dbfb2b0651344413310d0b860c2fa7
Comment 8 Elvis Angelaccio 2018-05-21 20:31:32 UTC
*** Bug 393652 has been marked as a duplicate of this bug. ***
Comment 9 Elvis Angelaccio 2018-05-21 20:31:58 UTC
*** Bug 393500 has been marked as a duplicate of this bug. ***
Comment 10 Elvis Angelaccio 2018-05-21 20:32:18 UTC
*** Bug 393784 has been marked as a duplicate of this bug. ***
Comment 11 Elvis Angelaccio 2018-05-21 20:32:41 UTC
*** Bug 393136 has been marked as a duplicate of this bug. ***
Comment 12 Elvis Angelaccio 2018-05-21 20:33:01 UTC
*** Bug 393128 has been marked as a duplicate of this bug. ***
Comment 13 Elvis Angelaccio 2018-05-21 20:33:21 UTC
*** Bug 394507 has been marked as a duplicate of this bug. ***