[dolphin] [Bug 433347] Dolphin may crash when repeatedly opening and closing dialog

bugzilla_noreply at kde.org bugzilla_noreply at kde.org
Mon Feb 22 16:07:31 GMT 2021


https://bugs.kde.org/show_bug.cgi?id=433347

--- Comment #3 from magiblot at hotmail.com ---
It seems that the problem is not "repeatedly opening and closing the New
Directory dialog", but "opening more than one New Directory dialog".

A simpler way to reproduce it is:

1. Launch dolphin.
2. Smash the F10 button attempting to open several New Directory dialogs,
especially while Dolphin has not finished loading the current directory yet.
3. Several New Directory dialogs will be open. Close the topmost one.
4. Attempting to edit text in any of the remaining New Directory dialogs will
crash Dolphin.

When running under Valgrind, Dolphin is slow enough that you can open tenths of
dialogs at once. But it also generates notifications like the following, even
without pressing the "OK" button in the dialogs:

> Examining (Failed)
> /home/magiblot//New Folder

Valgring log:

> ==88948== Invalid read of size 8
> ==88948==    at 0x5D6003A: QLineEdit::text() const (qlineedit.cpp:312)
> ==88948==    by 0x4D026CC: KNewFileMenuPrivate::_k_slotStatResult(KJob*) (knewfilemenu.cpp:1231)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x58B1C5C: KJob::result(KJob*, KJob::QPrivateSignal) (moc_kjob.cpp:576)
> ==88948==    by 0x58B279B: KJob::finishJob(bool) (kjob.cpp:92)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x510C0B6: KIO::SlaveInterface::error(int, QString const&) (moc_slaveinterface.cpp:452)
> ==88948==    by 0x510E4E3: KIO::SlaveInterface::dispatch(int, QByteArray const&) (slaveinterface.cpp:180)
> ==88948==    by 0x510C819: KIO::SlaveInterface::dispatch() (slaveinterface.cpp:77)
> ==88948==    by 0x511031A: KIO::Slave::gotInput() (slave.cpp:394)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x6B04531: QObject::event(QEvent*) (qobject.cpp:1314)
> ==88948==    by 0x5C1A751: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3632)
> ==88948==    by 0x6AD7A29: QCoreApplication::notifyInternal2(QObject*, QEvent*) (qcoreapplication.cpp:1063)
> ==88948==    by 0x6ADA522: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.cpp:1817)
> ==88948==    by 0x6B31053: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:277)
> ==88948==    by 0x8BF3B83: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8C47C20: ??? (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8BF23B0: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x6B30690: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
> ==88948==    by 0x6AD63AB: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:232)
> ==88948==    by 0x6ADE843: QCoreApplication::exec() (qcoreapplication.cpp:1371)
> ==88948==    by 0x48C4F42: kdemain (main.cpp:222)
> ==88948==    by 0x499FB24: (below main) (in /usr/lib/libc-2.33.so)
> ==88948==  Address 0xfbf3d18 is 8 bytes inside a block of size 48 free'd
> ==88948==    at 0x484008B: operator delete(void*, unsigned long) (vg_replace_malloc.c:593)
> ==88948==    by 0x6B020BD: QObjectPrivate::deleteChildren() (qobject.cpp:2104)
> ==88948==    by 0x5C5704D: QWidget::~QWidget() (qwidget.cpp:1522)
> ==88948==    by 0x5E1C819: QDialog::~QDialog() (qdialog.cpp:426)
> ==88948==    by 0x6B042EF: QObject::event(QEvent*) (qobject.cpp:1301)
> ==88948==    by 0x5C1A751: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3632)
> ==88948==    by 0x6AD7A29: QCoreApplication::notifyInternal2(QObject*, QEvent*) (qcoreapplication.cpp:1063)
> ==88948==    by 0x6ADA522: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.cpp:1817)
> ==88948==    by 0x6B31053: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:277)
> ==88948==    by 0x8BF3B83: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8C47C20: ??? (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8BF23B0: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x6B30690: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
> ==88948==    by 0x6AD63AB: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:232)
> ==88948==    by 0x6ADE843: QCoreApplication::exec() (qcoreapplication.cpp:1371)
> ==88948==    by 0x48C4F42: kdemain (main.cpp:222)
> ==88948==    by 0x499FB24: (below main) (in /usr/lib/libc-2.33.so)
> ==88948==  Block was alloc'd at
> ==88948==    at 0x483EDEF: operator new(unsigned long) (vg_replace_malloc.c:342)
> ==88948==    by 0x4D01C7A: KNewFileMenuPrivate::initDialog() (knewfilemenu.cpp:446)
> ==88948==    by 0x4D04AC2: KNewFileMenuPrivate::showNewDirNameDlg(QString const&) (knewfilemenu.cpp:1414)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x58B1C5C: KJob::result(KJob*, KJob::QPrivateSignal) (moc_kjob.cpp:576)
> ==88948==    by 0x58B279B: KJob::finishJob(bool) (kjob.cpp:92)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x58B1C5C: KJob::result(KJob*, KJob::QPrivateSignal) (moc_kjob.cpp:576)
> ==88948==    by 0x58B279B: KJob::finishJob(bool) (kjob.cpp:92)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x510C0B6: KIO::SlaveInterface::error(int, QString const&) (moc_slaveinterface.cpp:452)
> ==88948==    by 0x510E4E3: KIO::SlaveInterface::dispatch(int, QByteArray const&) (slaveinterface.cpp:180)
> ==88948==    by 0x510C819: KIO::SlaveInterface::dispatch() (slaveinterface.cpp:77)
> ==88948==    by 0x511031A: KIO::Slave::gotInput() (slave.cpp:394)
> ==88948==    by 0x6B0ED85: call (qobjectdefs_impl.h:398)
> ==88948==    by 0x6B0ED85: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3886)
> ==88948==    by 0x6B04531: QObject::event(QEvent*) (qobject.cpp:1314)
> ==88948==    by 0x5C1A751: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3632)
> ==88948==    by 0x6AD7A29: QCoreApplication::notifyInternal2(QObject*, QEvent*) (qcoreapplication.cpp:1063)
> ==88948==    by 0x6ADA522: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.cpp:1817)
> ==88948==    by 0x6B31053: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:277)
> ==88948==    by 0x8BF3B83: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8C47C20: ??? (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x8BF23B0: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.6600.7)
> ==88948==    by 0x6B30690: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
> ==88948==    by 0x6AD63AB: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:232)
> ==88948==    by 0x6ADE843: QCoreApplication::exec() (qcoreapplication.cpp:1371)
> ==88948==    by 0x48C4F42: kdemain (main.cpp:222)
> ==88948==    by 0x499FB24: (below main) (in /usr/lib/libc-2.33.so)
>

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the kfm-devel mailing list