https://bugs.kde.org/show_bug.cgi?id=386952
Bug ID: 386952 Summary: "pure virtual function called" from Phabricator plugin Product: Purpose Version: unspecified Platform: Compiled Sources OS: Linux Status: UNCONFIRMED Severity: normal Priority: NOR Component: general Assignee: aleix...@kde.org Reporter: rjvber...@gmail.com Target Milestone: --- I experienced the abort below, which I can reproduce systematically as follows: 1) start tests/tool/sharetool foo.txt 2) click on the Phabricator button 3) click the Back button immediately, not giving the arcanist helper process time to finish (helper spawned by the DiffRevList class). For a reason which I fail to understand, instead of invoking DiffRevList::done(), the runtime will than invoke DifferentialRevision::done(), which is indeed a pure virtual function. I verified this by implementing it and letting it call qFatal(). I see three possible solution: 1) make DifferentialRevision::done() a stub method that does nothing 2) don't connect m_arcCmd's finished signal to DifferentialRevision::done() (and connect m_arcCmd to the appropriate slot in each class inheriting DifferentialRevision 3) disconnect m_arcCmd's finished signal in DiffRevList::buildArcCommand() . Options 2 & 3 are maybe cleaner than 1), with 3) requiring less changes than 2). (btw, Purpose should list the bug-reporting address so crashes can be reported via DrKonqi, no?) Thread 1 (Thread 0x7f5498f23780 (LWP 11318)): [KCrash Handler] #6 0x00007f5495a13c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #7 0x00007f5495a17028 in __GI_abort () at abort.c:89 #8 0x00007f549632f415 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #9 0x00007f549632d206 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #10 0x00007f549632d251 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #11 0x00007f549632df8f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #12 0x00007f549689332e in call (a=0x7ffcd4e23bb0, r=0x44f7ea0, this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/include/QtCore/../../src/corelib/kernel/qobject_impl.h:101 #13 QMetaObject::activate (sender=sender@entry=0x44f7eb8, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffcd4e23bb0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:3723 #14 0x00007f54968938c7 in QMetaObject::activate (sender=sender@entry=0x44f7eb8, m=m@entry=0x7f5496cb11c0 <QProcess::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffcd4e23bb0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:3602 #15 0x00007f54967a162f in QProcess::finished (this=this@entry=0x44f7eb8, _t1=<optimized out>, _t2=<optimized out>) at .moc/moc_qprocess.cpp:334 #16 0x00007f54967a9263 in QProcessPrivate::_q_processDied (this=this@entry=0x45269e0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/io/qprocess.cpp:1176 #17 0x00007f5496800927 in QProcessPrivate::waitForFinished (this=this@entry=0x45269e0, msecs=msecs@entry=30000) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/io/qprocess_unix.cpp:895 #18 0x00007f54967a35bd in QProcess::waitForFinished (this=this@entry=0x44f7eb8, msecs=msecs@entry=30000) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/io/qprocess.cpp:1919 #19 0x00007f54967a3d0d in QProcess::~QProcess (this=0x44f7eb8, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/io/qprocess.cpp:1258 #20 0x00007f546e57b16b in Phabricator::DifferentialRevision::~DifferentialRevision (this=0x44f7ea0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-purpose/kf5-purpose-devel/work/build/src/plugins/phabricator/PhabricatorHelpers_autogen/EWIEGA46WW/../../../../../../../../../../../../../../home/bertin/work/src/Scratch/KDE/KF5/purpose-git/src/plugins/phabricator/phabricatorjobs.h:38 #21 0x00007f546e57b468 in ~DiffRevList (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-purpose/kf5-purpose-devel/work/build/src/plugins/phabricator/PhabricatorHelpers_autogen/EWIEGA46WW/../../../../../../../../../../../../../../home/bertin/work/src/Scratch/KDE/KF5/purpose-git/src/plugins/phabricator/phabricatorjobs.h:112 #22 Phabricator::DiffRevList::~DiffRevList (this=0x44f7ea0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-purpose/kf5-purpose-devel/work/build/src/plugins/phabricator/PhabricatorHelpers_autogen/EWIEGA46WW/../../../../../../../../../../../../../../home/bertin/work/src/Scratch/KDE/KF5/purpose-git/src/plugins/phabricator/phabricatorjobs.h:112 #23 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x44f7da0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #24 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #25 0x00007f546e784098 in ~DiffListModel (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-purpose/kf5-purpose-devel/work/kf5-purpose-5/src/plugins/phabricator/quick/difflistmodel.h:31 #26 ~QQmlElement (this=<optimized out>) at /opt/local/include/qt5/QtQml/qqmlprivate.h:104 #27 QQmlPrivate::QQmlElement<DiffListModel>::~QQmlElement (this=0x44f7ce0) at /opt/local/include/qt5/QtQml/qqmlprivate.h:102 #28 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x436c980) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #29 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #30 0x00007f5483b96a7f in QQuickItem::~QQuickItem (this=0x44ef2e0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:2296 #31 0x00007f5483baecf6 in ~QQmlElement (this=0x44ef2e0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #32 QQmlPrivate::QQmlElement<QQuickFocusScope>::~QQmlElement (this=0x44ef2e0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #33 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x4501c80) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #34 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #35 0x00007f5483b96a7f in QQuickItem::~QQuickItem (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:2296 #36 0x00007f5475fa9f9a in QQuickLayout::~QQuickLayout (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklayout.cpp:698 #37 0x00007f5475fa6fa4 in ~QQuickLinearLayout (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklinearlayout_p.h:191 #38 ~QQuickColumnLayout (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklinearlayout_p.h:238 #39 ~QQmlElement (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #40 QQmlPrivate::QQmlElement<QQuickColumnLayout>::~QQmlElement (this=0x44e30a0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #41 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x456d2e0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #42 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #43 0x00007f5483b96a7f in QQuickItem::~QQuickItem (this=0x4572980, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:2296 #44 0x00007f5483bafd56 in ~QQmlElement (this=0x4572980, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #45 QQmlPrivate::QQmlElement<QQuickLoader>::~QQmlElement (this=0x4572980, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #46 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x4506130) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #47 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #48 0x00007f5483b96a7f in QQuickItem::~QQuickItem (this=0x45034f0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:2296 #49 0x00007f5483baecf6 in ~QQmlElement (this=0x45034f0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #50 QQmlPrivate::QQmlElement<QQuickFocusScope>::~QQmlElement (this=0x45034f0, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #51 0x00007f5496890cb1 in QObjectPrivate::deleteChildren (this=this@entry=0x45ab920) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1970 #52 0x00007f549689a92f in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1041 #53 0x00007f5483b96a7f in QQuickItem::~QQuickItem (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:2296 #54 0x00007f5475fa9f9a in QQuickLayout::~QQuickLayout (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklayout.cpp:698 #55 0x00007f5475fa6fa4 in ~QQuickLinearLayout (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklinearlayout_p.h:191 #56 ~QQuickColumnLayout (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/imports/layouts/qquicklinearlayout_p.h:238 #57 ~QQmlElement (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #58 QQmlPrivate::QQmlElement<QQuickColumnLayout>::~QQmlElement (this=0x457e870, __in_chrg=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/include/QtQml/../../src/qml/qml/qqmlprivate.h:104 #59 0x00007f5496894158 in QObject::event (this=this@entry=0x457e870, e=e@entry=0x4608160) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qobject.cpp:1254 #60 0x00007f5483b9395b in QQuickItem::event (this=0x457e870, ev=0x4608160) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtdeclarative/src/quick/items/qquickitem.cpp:7698 #61 0x00007f5497970a5c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x457e870, e=0x4608160) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/widgets/kernel/qapplication.cpp:3745 #62 0x00007f5497977cd1 in QApplication::notify (this=0x7ffcd4e24ba0, receiver=0x457e870, e=0x4608160) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/widgets/kernel/qapplication.cpp:3502 #63 0x00007f5496868018 in QCoreApplication::notifyInternal2 (receiver=0x457e870, event=event@entry=0x4608160) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qcoreapplication.cpp:995 #64 0x00007f549686a67d in sendEvent (event=0x4608160, receiver=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qcoreapplication.h:231 #65 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x24c4330) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qcoreapplication.cpp:1655 #66 0x00007f549686aae8 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qcoreapplication.cpp:1509 #67 0x00007f54968ba173 in postEventSourceDispatch (s=0x2526240) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:276 #68 0x00007f5493995e37 in g_main_context_dispatch () from /opt/local/lib/libglib-2.0.so.0 #69 0x00007f5493996108 in g_main_context_iterate.isra () from /opt/local/lib/libglib-2.0.so.0 #70 0x00007f549399618c in g_main_context_iteration () from /opt/local/lib/libglib-2.0.so.0 #71 0x00007f54968ba57f in QEventDispatcherGlib::processEvents (this=0x2525140, flags=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:423 #72 0x00007f549686617a in QEventLoop::exec (this=this@entry=0x7ffcd4e24ab0, flags=..., flags@entry=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qeventloop.cpp:212 #73 0x00007f549686e524 in QCoreApplication::exec () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.8.0/qtbase/src/corelib/kernel/qcoreapplication.cpp:1268 #74 0x000000000040391f in main (argc=<optimized out>, argv=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-purpose/kf5-purpose-devel/work/kf5-purpose-5/tests/tool/main.cpp:104 -- You are receiving this mail because: You are watching all bug changes.