Bug 222062 - Dragging tool panels on top of each other will cause dolphin to hang
Summary: Dragging tool panels on top of each other will cause dolphin to hang
Status: RESOLVED DUPLICATE of bug 225025
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 16.12.2
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Peter Penz
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-01-10 15:27 UTC by Diederik van der Boor
Modified: 2010-01-31 21:34 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
The visual effect I'm getting (304.54 KB, image/png)
2010-01-10 15:28 UTC, Diederik van der Boor
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Diederik van der Boor 2010-01-10 15:27:48 UTC
Version:           1.4 (using 4.3.90 (KDE 4.3.90 (KDE 4.4 RC1)) "release 212", KDE:KDE4:Factory:Desktop / openSUSE_11.2)
Compiler:          gcc
OS:                Linux (i686) release 2.6.31.8-0.1-desktop

When I drag tool panels in Dolphin 1.4 on top of each other (to get tabs), the application hangs.
Comment 1 Diederik van der Boor 2010-01-10 15:28:46 UTC
Created attachment 39738 [details]
The visual effect I'm getting
Comment 2 Peter Penz 2010-01-10 22:04:05 UTC
Thanks for the report. Which Qt version are you using (the panels are completely handled by Qt)?
Comment 3 Frank Reininghaus 2010-01-10 23:13:15 UTC
I can confirm this in current trunk with Qt from kde-qt (commit 4c7fac3570 in branch 4.6-stable-patched). The backtrace I got after attaching gdb is below - after the frames I've pasted, frames #27-#48 are repeated over and over again. It really looks like it might be a Qt issue.

#0  0x00007f4c42a9ece7 in rename () from /lib64/libc.so.6
#1  0x00007f4c46437fe3 in KDE::rename (in=..., out=...) at /home/kde-devel/kde/src/KDE/kdelibs/kdecore/util/kde_file.h:199
#2  0x00007f4c455e671f in KSaveFile::finalize (this=0x7fff97208e80) at /home/kde-devel/kde/src/KDE/kdelibs/kdecore/io/ksavefile.cpp:229
#3  0x00007f4c4559140e in KConfigIniBackend::writeConfig (this=0x6c7d30, locale=..., entryMap=..., options=..., data=...) at /home/kde-devel/kde/src/KDE/kdelibs/kdecore/config/kconfigini.cpp:458
#4  0x00007f4c455792b6 in KConfig::sync (this=0x6c2d50) at /home/kde-devel/kde/src/KDE/kdelibs/kdecore/config/kconfig.cpp:338
#5  0x00007f4c4558652e in KConfigGroup::sync (this=0x72f878) at /home/kde-devel/kde/src/KDE/kdelibs/kdecore/config/kconfiggroup.cpp:682
#6  0x00007f4c45fab621 in KMainWindow::saveAutoSaveSettings (this=0x752f80) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/widgets/kmainwindow.cpp:1034
#7  0x00007f4c45fa858f in KMainWindowPrivate::setSettingsDirty (this=0x72f870, callCompression=NoCompressCalls) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/widgets/kmainwindow.cpp:409
#8  0x00007f4c45fab329 in KMainWindow::setSettingsDirty (this=0x752f80) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/widgets/kmainwindow.cpp:971
#9  0x00007f4c45fabfc4 in KMainWindow::qt_metacall (this=0x752f80, _c=InvokeMetaMethod, _id=4, _a=0x7fff97209470) at /home/kde-devel/kde/build/KDE/kdelibs/kdeui/kmainwindow.moc:99
#10 0x00007f4c45ff3e15 in KXmlGuiWindow::qt_metacall (this=0x752f80, _c=InvokeMetaMethod, _id=35, _a=0x7fff97209470) at /home/kde-devel/kde/build/KDE/kdelibs/kdeui/kxmlguiwindow.moc:102
#11 0x000000000042e753 in DolphinMainWindow::qt_metacall (this=0x752f80, _c=InvokeMetaMethod, _id=35, _a=0x7fff97209470) at /home/kde-devel/kde/build/KDE/kdebase/apps/dolphin/src/dolphinmainwindow.moc:177
#12 0x00007f4c436e204d in QMetaObject::metacall (object=0x752f80, cl=InvokeMetaMethod, idx=35, argv=0x7fff97209470) at kernel/qmetaobject.cpp:237
#13 0x00007f4c436f83e7 in QMetaObject::activate (sender=0x73b6f0, m=0x7f4c44f15520, local_signal_index=3, argv=0x7fff97209470) at kernel/qobject.cpp:3283
#14 0x00007f4c446ad8ee in QDockWidget::visibilityChanged (this=0x73b6f0, _t1=true) at .moc/debug-shared/moc_qdockwidget.cpp:189
#15 0x00007f4c446ace33 in QDockWidget::event (this=0x73b6f0, event=0x7fff97209c70) at widgets/qdockwidget.cpp:1400
#16 0x00007f4c44182c78 in QApplicationPrivate::notify_helper (this=0x6c9f30, receiver=0x73b6f0, e=0x7fff97209c70) at kernel/qapplication.cpp:4253
#17 0x00007f4c44182aca in QApplication::notify (this=0x7fff9799ccf0, receiver=0x73b6f0, e=0x7fff97209c70) at kernel/qapplication.cpp:4218
#18 0x00007f4c45ea7467 in KApplication::notify (this=0x7fff9799ccf0, receiver=0x73b6f0, event=0x7fff97209c70) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:302
#19 0x00007f4c436d9ff0 in QCoreApplication::notifyInternal (this=0x7fff9799ccf0, receiver=0x73b6f0, event=0x7fff97209c70) at kernel/qcoreapplication.cpp:704
#20 0x00007f4c44171d5b in QCoreApplication::sendEvent (receiver=0x73b6f0, event=0x7fff97209c70) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#21 0x00007f4c441f42bd in QWidgetPrivate::show_helper (this=0x891010) at kernel/qwidget.cpp:7174
#22 0x00007f4c441f4bf3 in QWidget::setVisible (this=0x73b6f0, visible=true) at kernel/qwidget.cpp:7396
#23 0x00007f4c441d10f8 in QWidget::show (this=0x73b6f0) at ../../include/QtGui/../../src/gui/kernel/qwidget.h:485
#24 0x00007f4c446abdc2 in QDockWidgetPrivate::setWindowState (this=0x891010, floating=false, unplug=false, rect=...) at widgets/qdockwidget.cpp:1053
#25 0x00007f4c446abba7 in QDockWidgetPrivate::plug (this=0x891010, rect=...) at widgets/qdockwidget.cpp:1004
#26 0x00007f4c446f17b1 in QMainWindowLayout::animationFinished (this=0x885740, widget=0x73b6f0) at widgets/qmainwindowlayout.cpp:1623
#27 0x00007f4c4479bf3f in QWidgetAnimator::abort (this=0x885d38, w=0x73b6f0) at widgets/qwidgetanimator.cpp:64
#28 0x00007f4c4479bf86 in QWidgetAnimator::animationFinished (this=0x885d38) at widgets/qwidgetanimator.cpp:75
#29 0x00007f4c44a1741a in QWidgetAnimator::qt_metacall (this=0x885d38, _c=InvokeMetaMethod, _id=0, _a=0x7fff9720a070) at .moc/debug-shared/moc_qwidgetanimator_p.cpp:72 #30 0x00007f4c436e204d in QMetaObject::metacall (object=0x885d38, cl=InvokeMetaMethod, idx=4, argv=0x7fff9720a070) at kernel/qmetaobject.cpp:237
#31 0x00007f4c436f83e7 in QMetaObject::activate (sender=0x2ff4290, m=0x7f4c43a50020, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3283
#32 0x00007f4c435895f5 in QAbstractAnimation::finished (this=0x2ff4290) at .moc/debug-shared/moc_qabstractanimation.cpp:176
#33 0x00007f4c435885fd in QAbstractAnimationPrivate::setState (this=0x3003f70, newState=Stopped) at animation/qabstractanimation.cpp:410
#34 0x00007f4c435890f9 in QAbstractAnimation::stop (this=0x2ff4290) at animation/qabstractanimation.cpp:761
#35 0x00007f4c43589074 in QAbstractAnimation::setCurrentTime (this=0x2ff4290, msecs=0) at animation/qabstractanimation.cpp:718
#36 0x00007f4c43588573 in QAbstractAnimationPrivate::setState (this=0x3003f70, newState=Running) at animation/qabstractanimation.cpp:395
#37 0x00007f4c435890c6 in QAbstractAnimation::start (this=0x2ff4290, policy=DeleteWhenStopped) at animation/qabstractanimation.cpp:744
#38 0x00007f4c4479c414 in QWidgetAnimator::animate (this=0x885d38, widget=0x73b6f0, _final_geometry=..., animate=false) at widgets/qwidgetanimator.cpp:102
#39 0x00007f4c446b49fc in QDockAreaLayoutInfo::apply (this=0x9fb6c0, animate=false) at widgets/qdockarealayout.cpp:1547
#40 0x00007f4c446f05cb in QMainWindowLayout::tabChanged (this=0x885740) at widgets/qmainwindowlayout.cpp:1336
#41 0x00007f4c44a13b92 in QMainWindowLayout::qt_metacall (this=0x885740, _c=InvokeMetaMethod, _id=0, _a=0x7fff9720a640) at .moc/debug-shared/moc_qmainwindowlayout_p.cpp:72
#42 0x00007f4c436e204d in QMetaObject::metacall (object=0x885740, cl=InvokeMetaMethod, idx=4, argv=0x7fff9720a640) at kernel/qmetaobject.cpp:237
#43 0x00007f4c436f83e7 in QMetaObject::activate (sender=0xa60400, m=0x7f4c44f19620, local_signal_index=0, argv=0x7fff9720a640) at kernel/qobject.cpp:3283
#44 0x00007f4c44757332 in QTabBar::currentChanged (this=0xa60400, _t1=0) at .moc/debug-shared/moc_qtabbar.cpp:201
#45 0x00007f4c44752307 in QTabBar::setCurrentIndex (this=0xa60400, index=0) at widgets/qtabbar.cpp:1179
#46 0x00007f4c446b2cab in QDockAreaLayoutInfo::setCurrentTabId (this=0x9fb6c0, id=7583472) at widgets/qdockarealayout.cpp:1122
#47 0x00007f4c446b2bf5 in QDockAreaLayoutInfo::setCurrentTab (this=0x9fb6c0, widget=0x73b6f0) at widgets/qdockarealayout.cpp:1112
#48 0x00007f4c446f184a in QMainWindowLayout::animationFinished (this=0x885740, widget=0x73b6f0) at widgets/qmainwindowlayout.cpp:1636
Comment 4 Frank Reininghaus 2010-01-10 23:26:52 UTC
Note that Qt's dockwidgets example in examples/mainwindows/dockwidgets does not have this problem.

The strange thing in the backtrace is that QTabBar::setCurrentIndex gets called for the same tab bar all the time with the same index, so the current index does not actually change. But nevertheless, it emits the currentChanged signal every time which leads to the infinite recursion. It might help to add some debug output to that function to see what's going on...
Comment 5 Frank Reininghaus 2010-01-31 21:34:44 UTC
There is another report about this issue which has a proposed fix.

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