Bug 379135

Summary: Dolphin crash when closing tab
Product: [Applications] dolphin Reporter: oysstu <oysstu>
Component: generalAssignee: Dolphin Bug Assignee <dolphin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: 2020cmitchell, archer, elvis.angelaccio, jmeloc, martin.sandsmark, simokj.makkonen, support
Priority: NOR Keywords: drkonqi, regression
Version: 17.04.0   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=380032
Latest Commit: Version Fixed In: 17.04.2
Sentry Crash Report:

Description oysstu 2017-04-23 18:41:07 UTC
Application: dolphin (17.04.0)

Qt Version: 5.7.1
Frameworks Version: 5.33.0
Operating System: Linux 4.8.0-46-generic x86_64
Distribution: KDE neon User Edition 5.9

-- Information about the crash:
Steps to reproduce:
- Perform a baloosearch
- Right click one of the results and open in new tab
- Switch to that tab and close it

On my system this reproduces the crash every time.

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f00880938c0 (LWP 7878))]

Thread 4 (Thread 0x7f00633b7700 (LWP 7882)):
#0  0x00007f007c7b3920 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f007c7b42bb in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f007c7b449c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f008283075b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007f00827db0ba in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007f008260af64 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007f008260fb48 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007f007eabb6ba in start_thread (arg=0x7f00633b7700) at pthread_create.c:333
#8  0x00007f0087aac82d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f0070a85700 (LWP 7881)):
#0  0x00007f007c7f8a94 in g_mutex_unlock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f007c7b4381 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f007c7b449c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f008283075b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007f00827db0ba in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007f008260af64 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007f0088182735 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007f008260fb48 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007f007eabb6ba in start_thread (arg=0x7f0070a85700) at pthread_create.c:333
#9  0x00007f0087aac82d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f0072448700 (LWP 7880)):
#0  0x00007f0087aa0b5d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f007bab8c62 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007f007baba8d7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007f00749a0d79 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007f008260fb48 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007f007eabb6ba in start_thread (arg=0x7f0072448700) at pthread_create.c:333
#6  0x00007f0087aac82d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f00880938c0 (LWP 7878)):
[KCrash Handler]
#6  DolphinTabPage::splitViewEnabled (this=this@entry=0x0) at /workspace/build/src/dolphintabpage.cpp:71
#7  0x00007f0087db3129 in DolphinMainWindow::updateSplitAction (this=this@entry=0xcc38c0) at /workspace/build/src/dolphinmainwindow.cpp:1472
#8  0x00007f0087db3409 in DolphinMainWindow::updateViewActions (this=this@entry=0xcc38c0) at /workspace/build/src/dolphinmainwindow.cpp:1337
#9  0x00007f0087dbb157 in DolphinMainWindow::activeViewChanged (this=0xcc38c0, viewContainer=0x158ecb0) at /workspace/build/src/dolphinmainwindow.cpp:942
#10 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00007f0087e0bb3f in DolphinTabWidget::activeViewChanged (this=<optimized out>, _t1=0x158ecb0) at /workspace/build/obj-x86_64-linux-gnu/src/moc_dolphintabwidget.cpp:275
#12 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007f0087e0ba8f in DolphinTabPage::activeViewChanged (this=this@entry=0x15300c0, _t1=0x158ecb0) at /workspace/build/obj-x86_64-linux-gnu/src/moc_dolphintabpage.cpp:161
#14 0x00007f0087dc64da in DolphinTabPage::slotViewActivated (this=0x15300c0) at /workspace/build/src/dolphintabpage.cpp:316
#15 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007f008773e046 in DolphinView::setActive (this=0x13e9160, active=<optimized out>) at /workspace/build/src/views/dolphinview.cpp:219
#17 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007f0086b2c5ed in KUrlNavigator::setActive(bool) () from /usr/lib/x86_64-linux-gnu/libKF5KIOFileWidgets.so.5
#19 0x00007f0087dbe043 in DolphinViewContainer::setActive (this=0x158ecb0, active=true) at /workspace/build/src/dolphinviewcontainer.cpp:209
#20 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007f0087ded1f9 in DolphinSearchBox::setActive (active=true, this=0x14608a0) at /workspace/build/src/search/dolphinsearchbox.cpp:184
#22 DolphinSearchBox::eventFilter (this=0x14608a0, obj=0x169f830, event=0x7fffa3763890) at /workspace/build/src/search/dolphinsearchbox.cpp:233
#23 0x00007f00827dce32 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007f00830bbea5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007f00830c38c6 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007f00827dd0c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007f00830c1846 in QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007f00830fd9ed in QWidget::setFocus(Qt::FocusReason) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007f0087dea842 in QWidget::setFocus (this=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:411
#30 DolphinSearchBox::showEvent (this=0x14608a0, event=<optimized out>) at /workspace/build/src/search/dolphinsearchbox.cpp:205
#31 0x00007f0083102f38 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007f00830bbecc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007f00830c38c6 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007f00827dd0c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007f00830ffc13 in QWidgetPrivate::show_helper() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007f00830ffa77 in QWidgetPrivate::showChildren(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007f00830ffb0f in QWidgetPrivate::show_helper() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007f00830ffa77 in QWidgetPrivate::showChildren(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007f00830ffb0f in QWidgetPrivate::show_helper() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007f00830ffa77 in QWidgetPrivate::showChildren(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007f00830ffb0f in QWidgetPrivate::show_helper() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007f008310290d in QWidget::setVisible(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#43 0x00007f00830e42a7 in QStackedLayout::setCurrentIndex(int) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007f00830e4b50 in QStackedLayout::takeAt(int) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007f00830df5ef in QLayout::removeWidget(QWidget*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007f0087dc7eb4 in DolphinTabWidget::closeTab (this=0xcbdc60, index=2) at /workspace/build/src/dolphintabwidget.cpp:222
#47 0x00007f00828081f6 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#48 0x00007f00832573e1 in QTabWidget::tabCloseRequested(int) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007f008325984b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#50 0x00007f0082807e89 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#51 0x00007f008324cd81 in QTabBar::tabCloseRequested(int) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007f0082807e89 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#53 0x00007f00831a2a42 in QAbstractButton::clicked(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#54 0x00007f00831a2c94 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#55 0x00007f00831a4967 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#56 0x00007f00831a4ae4 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#57 0x00007f0083102f38 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#58 0x00007f00830bbecc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#59 0x00007f00830c4165 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#60 0x00007f00827dd0c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#61 0x00007f00830c2e8f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#62 0x00007f008311d236 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#63 0x00007f008311fc83 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#64 0x00007f00830bbecc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#65 0x00007f00830c38c6 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#66 0x00007f00827dd0c8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#67 0x00007f0082b205a0 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#68 0x00007f0082b224a5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#69 0x00007f0082b0032b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#70 0x00007f00749d7270 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#71 0x00007f007c7b4197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#72 0x00007f007c7b43f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#73 0x00007f007c7b449c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#74 0x00007f008283073f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#75 0x00007f00827db0ba in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#76 0x00007f00827e36cc in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#77 0x00007f0087dcc69a in kdemain (argc=2, argv=<optimized out>) at /workspace/build/src/main.cpp:163
#78 0x00007f00879c6830 in __libc_start_main (main=0x4006b0 <main(int, char**)>, argc=2, argv=0x7fffa37653d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa37653c8) at ../csu/libc-start.c:291
#79 0x00000000004006e9 in _start ()

Possible duplicates by query: bug 344852.

Reported using DrKonqi
Comment 1 Elvis Angelaccio 2017-04-24 10:13:49 UTC
Regression in https://phabricator.kde.org/R318:6af0dad2eeba82929c2299f66ea81e5d0140a251
Comment 2 Elvis Angelaccio 2017-05-13 15:42:05 UTC
*** Bug 379726 has been marked as a duplicate of this bug. ***
Comment 3 Elvis Angelaccio 2017-05-17 08:37:47 UTC
*** Bug 379913 has been marked as a duplicate of this bug. ***
Comment 4 Elvis Angelaccio 2017-05-20 13:35:19 UTC
This is what happens:

1. The searchbox of the first tab gets disactivated (as side effect of
   disactivating its container).
2. Second tab gets closed, we call removeTab(1) in the tab widget.
3. The searchbox of the first tab gets a FocusIn event and calls setActive(true).
4. Since it was disactivated, it emits activated() and this results in the 
   activeViewChanged() signal which causes the crash, because the currentIndex() 
   of the tab page is still 1 but widget(1) has already been invalidated.
Comment 5 Anthony Fieroni 2017-05-22 17:36:00 UTC
Git commit 43da84eefc7d68ce86cda2d353216dbe7552fc2c by Anthony Fieroni.
Committed on 22/05/2017 at 17:35.
Pushed by anthonyfieroni into branch 'Applications/17.04'.

Correct searchbox, split view transitions between tabs

Differential Revision: https://phabricator.kde.org/D5864
Related: bug 380032
FIXED-IN: 17.04.2

Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>

M  +22   -7    src/dolphintabpage.cpp
M  +7    -0    src/dolphintabpage.h
M  +8    -8    src/dolphintabwidget.cpp
M  +7    -2    src/search/dolphinsearchbox.cpp

https://commits.kde.org/dolphin/43da84eefc7d68ce86cda2d353216dbe7552fc2c
Comment 6 Elvis Angelaccio 2017-05-26 17:58:19 UTC
*** Bug 380234 has been marked as a duplicate of this bug. ***
Comment 7 Elvis Angelaccio 2017-05-27 08:27:57 UTC
Git commit 1faef1c92d168e8f22d91d968c6fe29e70674699 by Elvis Angelaccio.
Committed on 27/05/2017 at 08:28.
Pushed by elvisangelaccio into branch 'master'.

Introduce DolphinMainWindowTest

For now it contains a test case for the crash in bug #379135

Reviewers: emmanuelp, dfaure

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

M  +1    -0    src/dolphinmainwindow.cpp
M  +5    -0    src/tests/CMakeLists.txt
A  +69   -0    src/tests/dolphinmainwindowtest.cpp     [License: GPL (v2+)]

https://commits.kde.org/dolphin/1faef1c92d168e8f22d91d968c6fe29e70674699
Comment 8 Elvis Angelaccio 2017-06-06 16:26:56 UTC
*** Bug 380891 has been marked as a duplicate of this bug. ***
Comment 9 Elvis Angelaccio 2018-04-22 15:14:16 UTC
*** Bug 393327 has been marked as a duplicate of this bug. ***