Bug 396666

Summary: Assert dragging desktop items
Product: [Plasma] plasmashell Reporter: David Edmundson <kde>
Component: FolderAssignee: Eike Hein <hein>
Status: RESOLVED DUPLICATE    
Severity: normal CC: jaak, kdebugs, marv3fan, nate, notmart, plasma-bugs
Priority: NOR    
Version: master   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description David Edmundson 2018-07-19 12:35:39 UTC
Thread 1 "plasmashell" received signal SIGABRT, Aborted.
0x00007ffff032d86b in raise () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff032d86b in raise () at /usr/lib/libc.so.6
#1  0x00007ffff031840e in abort () at /usr/lib/libc.so.6
#2  0x00007ffff1085d04 in qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) (context=..., message=...)
    at /home/david/projects/qt5/qtbase/src/corelib/global/qlogging.cpp:1842
#3  0x00007ffff1086a8d in QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7fffffff7360, msg=msg@entry=0x7ffff13214d8 "ASSERT: \"%s\" in file %s, line %d")
    at /home/david/projects/qt5/qtbase/src/corelib/global/qlogging.cpp:880
#4  0x00007ffff107f6c2 in qt_assert(char const*, char const*, int) (assertion=assertion@entry=0x7ffff133026a "last < rowCount(parent)", file=file@entry=0x7ffff13276d8 "/home/david/projects/qt5/qtbase/src/corelib/itemmodels/qabstractitemmodel.cpp", line=line@entry=2766) at /home/david/projects/qt5/qtbase/src/corelib/global/qglobal.cpp:3193
#5  0x00007ffff120fd94 in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (this=0x5555563a2850, parent=..., first=5, last=16)
    at /home/david/projects/qt5/qtbase/src/corelib/itemmodels/qabstractitemmodel.cpp:2766
#6  0x00007fffc8ad73a0 in Positioner::move(QList<QVariant> const&) (this=0x5555563a2850, moves=...)
    at /home/david/projects/kde5/src/kde/workspace/plasma-desktop/containments/desktop/plugins/folder/positioner.cpp:437
#7  0x00007fffc8af4309 in Positioner::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x5555563a2850, _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0x7fffffff7620) at containments/desktop/plugins/folder/folderplugin_autogen/EWIEGA46WW/moc_positioner.cpp:238
#8  0x00007fffc8af47d1 in Positioner::qt_metacall(QMetaObject::Call, int, void**) (this=0x5555563a2850, _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0x7fffffff7620)
    at containments/desktop/plugins/folder/folderplugin_autogen/EWIEGA46WW/moc_positioner.cpp:337
#9  0x00007ffff12628a4 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (object=<optimized out>, cl=<optimized out>, idx=<optimized out>, argv=<optimized out>) at /home/david/projects/qt5/qtbase/src/corelib/kernel/qmetaobject.cpp:301
#10 0x00007ffff528796b in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const (this=this@entry=0x7fffffff7930, type=type@entry=QMetaObject::InvokeMetaMethod, index=<optimized out>, index@entry=77, argv=0x7fffffff7620) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlpropertycache.cpp:1733
#11 0x00007ffff51d94d5 in CallMethod(QQmlObjectOrGadget const&, int, int, int, int*, QV4::ExecutionEngine*, QV4::CallData*, QMetaObject::Call) (object=..., index=<optimized out>, returnType=returnType@entry=43, argCount=<optimized out>, argTypes=<optimized out>, engine=engine@entry=0x55555590dc50, callArgs=<optimized out>, callType=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1175
#12 0x00007ffff51d9bd7 in CallPrecise(QQmlObjectOrGadget const&, QQmlPropertyData const&, QV4::ExecutionEngine*, QV4::CallData*, QMetaObject::Call) (object=..., data=..., engine=engine@entry=0x55555590dc50, callArgs=callArgs@entry=0x7fffe04546b8, callType=callType@entry=QMetaObject::InvokeMetaMethod)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1437
#13 0x00007ffff51da498 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const (this=0x7fffe04546b0, thisObject=0x7fffe0454658, argv=0x7fffe0454610, argc=1) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1975
#14 0x00007ffff51da831 in QV4::QObjectMethod::call(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (m=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1912
#15 0x00007ffff51ffab5 in QV4::FunctionObject::call(QV4::Value const*, QV4::Value const*, int) const (argc=1, argv=0x7fffe0454610, thisObject=0x7fffe0454658, this=<optimized out>) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:163
#16 0x00007ffff51ffab5 in QV4::Runtime::method_callProperty(QV4::ExecutionEngine*, QV4::Value*, int, QV4::Value*, int) (engine=engine@entry=0x55555590dc50, base=0x7fffe0454658, nameIndex=<optimized out>, argv=0x7fffe0454610, argc=1) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1062
#17 0x00007ffff51ecced in QV4::Moth::VME::exec(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (fo=<optimized out>, 
    fo@entry=0x7fffffff7c51, thisObject=thisObject@entry=0x7fffe0454568, argv=argv@entry=0x7fffe0454578, argc=<optimized out>)
---Type <return> to continue, or q <return> to quit---
   /jsruntime/qv4vme_moth.cpp:800                                                                                                                                                                                                
#18 0x00007ffff52bf2a0 in QV4::Moth::VME::exec(QV4::Function*, QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) (context=<optimized out>, argc=<optimized out>, argv=0x7fffe0454578, thisObject=0x7fffe0454568, v4Function=0x5555563865f0) at ../../include/QtQml/5.11.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/jsruntime/qv4vme_moth_p.h:72                                                                        
#19 0x00007ffff52bf2a0 in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) (context=<optimized out>, argc=<optimized out>, argv=0x7fffe0454578, thisObject=0x7fffe0454568, this=0x5555563865f0) at ../../include/QtQml/5.11.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/jsruntime/qv4function_p.h:72                                                                                               
#20 0x00007ffff52bf2a0 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) (this=this@entry=0x5555563b2d20, callData=callData@entry=0x7fffe0454550, isUndefined=isUndefined@entry=0x0)                                  
    at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:217                                                                                                                                       
#21 0x00007ffff5246db4 in QQmlBoundSignalExpression::evaluate(void**) (this=0x5555563b2d20, a=a@entry=0x7fffffff98d0) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:237                              
#22 0x00007ffff524714a in QQmlBoundSignal_callback(QQmlNotifierEndpoint*, void**) (e=0x5555563b2ca0, a=0x7fffffff98d0) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:370                             
#23 0x00007ffff5292585 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (endpoint=<optimized out>, a=a@entry=0x7fffffff98d0) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:106                
#24 0x00007ffff5221a1a in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) (object=0x5555563a5940, index=50, a=0x7fffffff98d0) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlengine.cpp:861 
#25 0x00007ffff1288765 in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x5555563a5940, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=23, argv=argv@entry=0x7fffffff98d0)   
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3648                                                                                                                                                       
#26 0x00007ffff12890bd in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555563a5940, m=<optimized out>, local_signal_index=23, argv=0x7fffffff98d0)                                                
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3633                                                                                                                                                       
#27 0x00007fffc8af2552 in FolderModel::move(int, int, QList<QUrl>) (this=0x5555563a5940, _t1=314, _t2=74, _t3=...) at containments/desktop/plugins/folder/folderplugin_autogen/EWIEGA46WW/moc_foldermodel.cpp:1109
#28 0x00007fffc8aad8ad in FolderModel::drop(QQuickItem*, QObject*, int) (this=0x5555563a5940, target=0x5555562fa920, dropEvent=0x7fffffffc340, row=-1)
    at /home/david/projects/kde5/src/kde/workspace/plasma-desktop/containments/desktop/plugins/folder/foldermodel.cpp:1085
#29 0x00007fffc8af0b20 in FolderModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x5555563a5940, _c=QMetaObject::InvokeMetaMethod, _id=59, _a=0x7fffffff9dd0)
    at containments/desktop/plugins/folder/folderplugin_autogen/EWIEGA46WW/moc_foldermodel.cpp:631
#30 0x00007fffc8af203d in FolderModel::qt_metacall(QMetaObject::Call, int, void**) (this=0x5555563a5940, _c=QMetaObject::InvokeMetaMethod, _id=59, _a=0x7fffffff9dd0)
    at containments/desktop/plugins/folder/folderplugin_autogen/EWIEGA46WW/moc_foldermodel.cpp:940
#31 0x00007ffff12628a4 in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (object=<optimized out>, cl=<optimized out>, idx=<optimized out>, argv=<optimized out>)
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qmetaobject.cpp:301
#32 0x00007ffff528796b in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const (this=this@entry=0x7fffffffa0e0, type=type@entry=QMetaObject::InvokeMetaMethod, index=<optimized out>, 
    index@entry=145, argv=0x7fffffff9dd0) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlpropertycache.cpp:1733
#33 0x00007ffff51d94d5 in CallMethod(QQmlObjectOrGadget const&, int, int, int, int*, QV4::ExecutionEngine*, QV4::CallData*, QMetaObject::Call) (object=..., index=<optimized out>, returnType=returnType@entry=43, argCount=<optimized out>, argTypes=<optimized out>, engine=engine@entry=0x55555590dc50, callArgs=<optimized out>, callType=<optimized out>) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1175
#34 0x00007ffff51d9bd7 in CallPrecise(QQmlObjectOrGadget const&, QQmlPropertyData const&, QV4::ExecutionEngine*, QV4::CallData*, QMetaObject::Call) (object=..., data=..., engine=engine@entry=0x55555590dc50, callArgs=callArgs@entry=0x7fffe04544f0, callType=callType@entry=QMetaObject::InvokeMetaMethod) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1437
#35 0x00007ffff51da498 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const (this=0x7fffe04544e8, thisObject=0x7fffe0454490, argv=0x7fffe0454498, argc=3)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1975
#36 0x00007ffff51da831 in QV4::QObjectMethod::call(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (m=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1912
#37 0x00007ffff51ffab5 in QV4::FunctionObject::call(QV4::Value const*, QV4::Value const*, int) const (argc=3, argv=0x7fffe0454498, thisObject=0x7fffe0454490, this=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:163
#38 0x00007ffff51ffab5 in QV4::Runtime::method_callProperty(QV4::ExecutionEngine*, QV4::Value*, int, QV4::Value*, int) (engine=engine@entry=0x55555590dc50, base=0x7fffe0454490, nameIndex=<optimized out>, argv=0x7fffe0454498, argc=3) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1062
#39 0x00007ffff51ecced in QV4::Moth::VME::exec(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (fo=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:800
#40 0x00007ffff513cb01 in QV4::ScriptFunction::call(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (fo=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4functionobject.cpp:408
#41 0x00007ffff51ffab5 in QV4::FunctionObject::call(QV4::Value const*, QV4::Value const*, int) const (argc=3, argv=0x7fffe04543b0, thisObject=0x7fffe04543a8, this=<optimized out>)
    at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:163
#42 0x00007ffff51ffab5 in QV4::Runtime::method_callProperty(QV4::ExecutionEngine*, QV4::Value*, int, QV4::Value*, int) (engine=engine@entry=0x55555590dc50, base=0x7fffe04543a8, nameIndex=<optimized out>, argv=0x7fffe04543b0, argc=3) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1062
#43 0x00007ffff51ecced in QV4::Moth::VME::exec(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) (fo=<optimized out>, 
    fo@entry=0x7fffffffa5f1, thisObject=thisObject@entry=0x7fffe0454348, argv=argv@entry=0x7fffe0454358, argc=<optimized out>) at /home/david/projects/qt5/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:800
#44 0x00007ffff52bf2a0 in QV4::Moth::VME::exec(QV4::Function*, QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) (context=<optimized out>, argc=<optimized out>, argv=0x7fffe0454358, thisObject=0x7fffe0454348, v4Function=0x555555f6bae0) at ../../include/QtQml/5.11.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/jsruntime/qv4vme_moth_p.h:72
#45 0x00007ffff52bf2a0 in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) (context=<optimized out>, argc=<optimized out>, argv=0x7fffe0454358, thisObject=0x7fffe0454348, this=0x555---Type <return> to continue, or q <return> to quit---
555f6bae0) at ../../include/QtQml/5.11.1/QtQml/private/../../../../../../../qt5/qtdeclarative/src/qml/jsruntime/qv4function_p.h:72
#46 0x00007ffff52bf2a0 in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) (this=this@entry=0x55555630fcc0, callData=callData@entry=0x7fffe0454330, isUndefined=isUndefined@entry=0x0)
    at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:217
#47 0x00007ffff5246db4 in QQmlBoundSignalExpression::evaluate(void**) (this=0x55555630fcc0, a=a@entry=0x7fffffffc260) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:237
#48 0x00007ffff524714a in QQmlBoundSignal_callback(QQmlNotifierEndpoint*, void**) (e=0x555556313d00, a=0x7fffffffc260) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:370
#49 0x00007ffff5292585 in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (endpoint=<optimized out>, a=a@entry=0x7fffffffc260) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:106
#50 0x00007ffff5221a1a in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) (object=0x5555562fa920, index=33, a=0x7fffffffc260) at /home/david/projects/qt5/qtdeclarative/src/qml/qml/qqmlengine.cpp:861
#51 0x00007ffff1288765 in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x5555562fa920, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffc260)
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3648
#52 0x00007ffff12890bd in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555562fa920, m=<optimized out>, local_signal_index=3, argv=0x7fffffffc260)
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3633
#53 0x00007fffc98e9b0c in DeclarativeDropArea::drop(DeclarativeDragDropEvent*) (this=0x5555562fa920, _t1=0x7fffffffc340) at src/qmlcontrols/draganddrop/draganddropplugin_autogen/EWIEGA46WW/moc_DeclarativeDropArea.cpp:284
#54 0x00007fffc98e5edd in DeclarativeDropArea::dropEvent(QDropEvent*) (this=0x5555562fa920, event=0x7fffffffc620)
    at /home/david/projects/kde5/src/frameworks/kdeclarative/src/qmlcontrols/draganddrop/DeclarativeDropArea.cpp:121
#55 0x00007ffff56b0192 in QQuickItem::event(QEvent*) (this=0x5555562fa920, ev=0x7fffffffc620) at /home/david/projects/qt5/qtdeclarative/src/quick/items/qquickitem.cpp:7994
#56 0x00007ffff232f2c3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x555555851dc0, receiver=receiver@entry=0x5555562fa920, e=e@entry=0x7fffffffc620)
    at /home/david/projects/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3727
#57 0x00007ffff2336b0c in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffde70, receiver=0x5555562fa920, e=0x7fffffffc620) at /home/david/projects/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3099
#58 0x00007ffff12570b5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x5555562fa920, event=event@entry=0x7fffffffc620) at /home/david/projects/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1048
#59 0x00007ffff56cd7b0 in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x7fffffffc620, receiver=<optimized out>)
    at /home/david/projects/qt5-build/qtbase/include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qcoreapplication.h:234
#60 0x00007ffff56cd7b0 in QQuickWindowPrivate::deliverDragEvent(QQuickDragGrabber*, QEvent*) (this=this@entry=0x555555ce5380, grabber=0x555555c784b0, event=event@entry=0x7fffffffc930)
    at /home/david/projects/qt5/qtdeclarative/src/quick/items/qquickwindow.cpp:2647
#61 0x00007ffff56ce027 in QQuickWindow::event(QEvent*) (this=0x555555c7db50, e=0x7fffffffc930) at /home/david/projects/qt5/qtdeclarative/src/quick/items/qquickwindow.cpp:1591
#62 0x0000555555584c0b in DesktopView::event(QEvent*) (this=0x555555c7db50, e=0x7fffffffc930) at /home/david/projects/kde5/src/kde/workspace/plasma-workspace/shell/desktopview.cpp:237
#63 0x00007ffff232f2c3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x555555851dc0, receiver=receiver@entry=0x555555c7db50, e=e@entry=0x7fffffffc930)
    at /home/david/projects/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3727
#64 0x00007ffff2336b0c in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffde70, receiver=0x555555c7db50, e=0x7fffffffc930) at /home/david/projects/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3099
#65 0x00007ffff12570b5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=receiver@entry=0x555555c7db50, event=event@entry=0x7fffffffc930)
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1048
#66 0x00007ffff16170d0 in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x7fffffffc930, receiver=0x555555c7db50) at ../../include/QtCore/../../../../qt5/qtbase/src/corelib/kernel/qcoreapplication.h:234
#67 0x00007ffff16170d0 in QGuiApplicationPrivate::processDrop(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>) (w=w@entry=0x555555c7db50, dropData=dropData@entry=0x5555572ae960, p=..., supportedActions=supportedActions@entry=...) at /home/david/projects/qt5/qtbase/src/gui/kernel/qguiapplication.cpp:3101
#68 0x00007ffff15ef250 in QWindowSystemInterface::handleDrop(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>) (window=0x555555c7db50, dropData=dropData@entry=0x5555572ae960, p=..., supportedActions=...)
    at /home/david/projects/qt5/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:805
#69 0x00007fffe4c6005d in QtWaylandClient::QWaylandDataDevice::data_device_drop() (this=0x5555558621a0) at qwaylanddatadevice.cpp:145
#70 0x00007fffe4c64c0c in QtWayland::wl_data_device::handle_drop(void*, wl_data_device*) (data=<optimized out>, object=<optimized out>) at qwayland-wayland.cpp:756
#71 0x00007fffe84591c8 in ffi_call_unix64 () at /usr/lib/libffi.so.6
#72 0x00007fffe8458c2a in ffi_call () at /usr/lib/libffi.so.6
#73 0x00007fffef4aff9f in  () at /usr/lib/libwayland-client.so.0
#74 0x00007fffef4ac70a in  () at /usr/lib/libwayland-client.so.0
#75 0x00007fffef4adc5c in wl_display_dispatch_queue_pending () at /usr/lib/libwayland-client.so.0
#76 0x00007fffe4c33784 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=0x5555558513f0) at qwaylanddisplay.cpp:182
#77 0x00007fffe4c67140 in QtWaylandClient::QWaylandDisplay::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=_o@entry=0x5555558513f0, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=1, _a=<optimized out>) at .moc/moc_qwaylanddisplay_p.cpp:76
#78 0x00007ffff1288d94 in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x555555876c70, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffcef0)
    at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3771
#79 0x00007ffff12890bd in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x555555876c70, m=m@entry=0x7ffff1504b60 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffcef0) at /home/david/projects/qt5/qtbase/src/corelib/kernel/qobject.cpp:3633
#80 0x00007ffff1295141 in QSocketNotifier::activated(int, QSocketNotifier::QPrivateSignal) (this=this@entry=0x555555876c70, _t1=<optimized out>, _t2=...) at .moc/moc_qsocketnotifier.cpp:136
#81 0x00007ffff1295603 in QSocketNotifier::event(QEvent*) (this=0x555555876c70, e=0x7fffffffd1a0) at /home/david/projects/qt5/qtbase/src/corelib/kernel/qsocketnotifier.cpp:266


positioner.cpp:433
clearly moves index before calling beginRemoveRows which is very naughty.
Comment 1 David Edmundson 2018-07-19 12:49:39 UTC
Pasting the code, though you'll see it yourself as soon as you open the file.


...do some changes
    const int newCount = rowCount();

    if (newCount > oldCount) {
...
        beginInsertRows(QModelIndex(), oldCount, newCount - 1);
        endInsertRows();
    }

at the time of beginInsertRows rowCount must be the size it was before any changes, with the correct value at the time of endInsertRows

This was always the case, but Qt5.11 now has an assert for it.

Whether this has any real impact on non dev builds I don't know, but given how flaky QtQuick models can be, probably best to be as safe as possible.
Comment 2 Eike Hein 2018-07-26 07:01:29 UTC
Patch waiting for review for a few days: https://phabricator.kde.org/D14243
Comment 3 Eike Hein 2018-08-01 10:43:55 UTC
Git commit 1cb71a2cca8a46512f5ac0cb03da268dde8d9c7d by Eike Hein.
Committed on 01/08/2018 at 10:43.
Pushed by hein into branch 'Plasma/5.12'.

Fix bad model hygiene in Positioner::move()

Summary:
Don't change the proxy maps prior to insert/remove transactions so
rowCount() at transaction start time matches the count passed into
the method. The old code hits an ASSERT in Qt 5.11 otherwise.

Care is taken not to emit dataChanged() in the middle of another
transaction.

Also cleaned up vestiges of caching lastRow(): This cache was
evicted all over the places but never actually filled anymore, so
maybe we don't need it.

Reviewers: davidedmundson

Subscribers: plasma-devel

Tags: #plasma

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

M  +32   -21   containments/desktop/plugins/folder/positioner.cpp
M  +0    -2    containments/desktop/plugins/folder/positioner.h

https://commits.kde.org/plasma-desktop/1cb71a2cca8a46512f5ac0cb03da268dde8d9c7d
Comment 4 Gunter Ohrner 2018-09-05 19:04:07 UTC
According to the Plasma 5.13.5 changelog, this fix was reverted again in commit 

https://cgit.kde.org/plasma-desktop.git/commit/?id=f23b9dc0d57df80863e988208e60135a7f42ad12

So probably this issue should be reopened again?
Comment 5 David Edmundson 2018-11-01 14:58:58 UTC
*** Bug 400533 has been marked as a duplicate of this bug. ***
Comment 6 Marco Martin 2020-05-21 11:39:25 UTC

*** This bug has been marked as a duplicate of bug 421339 ***