Summary: | Dolphin crashes when dragging from an inactive view over FTP | ||
---|---|---|---|
Product: | [Applications] dolphin | Reporter: | Alex Merry <alex.merry> |
Component: | general | Assignee: | Peter Penz <peter.penz19> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | andresbajotierra, anthony.renoux, frank78ac, gbelli, hvm2hvm, notdefine, schnitzelkuchen |
Priority: | NOR | ||
Version: | 16.12.2 | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Alex Merry
2009-01-12 20:47:23 UTC
*** Bug 181310 has been marked as a duplicate of this bug. *** *** Bug 181430 has been marked as a duplicate of this bug. *** The reporter of bug 181430 was using fish:/ + split view *** Bug 181584 has been marked as a duplicate of this bug. *** (gdb) dolphin(13186) MetaDataWidget::setFile: KUrl("file:///home/thomas") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@80.252.101.201:3389") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@80.252.101.201:3389") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@80.252.101.201:3389") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@xxx.xxx.xxx.xxx:3389/home/thomas/Händlermarketing-Plan 2009.pdf") dolphin(13186) MetaDataWidget::setFile: KUrl("file:///home/thomas") dolphin(13186) MetaDataWidget::setFile: KUrl("file:///home/thomas") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@xxx.xxx.xxx.xxx::3389/home/thomas/james_brown.wav") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@xxx.xxx.xxx.xxx::3389/home/thomas/meins.odt") dolphin(13186) MetaDataWidget::setFile: KUrl("fish://thomas@xxx.xxx.xxx.xxx::3389/home/thomas/james_brown.mp3") ASSERT: "m_view->isActive() == m_urlNavigator->isActive()" in file /build/buildd/kdebase-4.1.96/apps/dolphin/src/dolphinviewcontainer.cpp, line 202 KCrash: Application 'dolphin' crashing... sock_file=/home/thomas/.kde/socket-quad/kdeinit4__0 *** Bug 181524 has been marked as a duplicate of this bug. *** The reporter of bug 181524 was using smb:/ + split view It has happened to me too: Application: Dolphin (dolphin), signal SIGABRT Thread 1 (Thread 0xb5dc26c0 (LWP 6649)): [KCrash Handler] #6 0xb7f46430 in __kernel_vsyscall () #7 0xb64ec8a0 in raise () from /lib/tls/i686/cmov/libc.so.6 #8 0xb64ee268 in abort () from /lib/tls/i686/cmov/libc.so.6 #9 0xb6790795 in qt_message_output () from /usr/lib/libQtCore.so.4 #10 0xb6790872 in qFatal () from /usr/lib/libQtCore.so.4 #11 0xb6790915 in qt_assert () from /usr/lib/libQtCore.so.4 #12 0x080740f7 in _start () Also, I think bug 177531 is related or the same as this one. The DolphinViewContainer activates and deactivates the KUrlNavigator bar and the DolphinView synchronously, so the assert should not fail. But these two subwidgets change activation state without informing the container. Either more signals between the widgets are needed, or the active equality assert should be removed. (In reply to comment #9) > The DolphinViewContainer activates and deactivates the KUrlNavigator bar and > the DolphinView synchronously, so the assert should not fail. The assert failure happens during the activation process, when the view is active already, but the URL navigator not yet (note frame #21 in the backtrace: DolphinView::setActive). The root cause of the problem seems to be that DolphinView::setActive(bool) emits the urlChanged(const KUrl&) signal although the URL of the view has not changed at all. This signal is connected to the slot KUrlNavigator::setUrl(const KUrl&) (frame #16). This slot returns immediately if the URL is equal to the 'old' URL, that's why this crash does not happen if local directories are open in the split views. However, in the case we have here, the 'old' and 'new' URL of the navigator are not equal because KDirLister has emitted a redirect signal before, adding a slash to the FTP URL (the crash does indeed not occur if a URL with slash at the end has been entered at the beginning). This redirect signal adds a slash to the navigator URL, but not the view URL, that's why the navigator thinks the URL has really changed now -> KUrlNavigator::setUrl(const KUrl&) does not return -> the whole thing goes on and ends up in DolphinViewContainer::isActive() where the assert is hit. I'll commit a fix to trunk in a minute. I'm not going to backport it because I'm not 100% sure that it does not cause regressions (and distros seem to disable asserts in 4.2.x packages anyway). SVN commit 961519 by freininghaus: Do not emit DolphinView's urlChanged(const KUrl&) signal if the view is activated, as discussed with Peter. This fixes a crash on a failed assert if the DolphinView's and the KUrlNavigator's URLs are slightly different (i.e., if a slash has been added to the navigator's URL by KDirLister). I could not find any regressions caused by this change so far, but even if there are side effects, the upcoming beta and RC releases should give enough user feedback and time to fix them. BUG: 180494 M +0 -4 dolphinview.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=961519 |