Bug 287147

Summary: Dolphin Crash in KDE 4.8 beta 1 while use esc to cancel loading process
Product: [Applications] dolphin Reporter: Weng Xuetian <wengxt>
Component: generalAssignee: Peter Penz <peter.penz19>
Status: RESOLVED FIXED    
Severity: crash CC: frank78ac
Priority: NOR Keywords: reproducible
Version: 1.99   
Target Milestone: ---   
Platform: Chakra   
OS: Linux   
Latest Commit: Version Fixed In:

Description Weng Xuetian 2011-11-21 10:37:52 UTC
Application: dolphin (1.99)
KDE Platform Version: 4.7.3 (4.7.3)
Qt Version: 4.7.4
Operating System: Linux 3.1-CHAKRA x86_64
Distribution: "Chakra Linux"

-- Information about the crash:
- What I was doing when the application crashed:
1. open a folder might load a longer time, such as /usr/bin
2. process escape quickly before the folder finish it's loading.

Chakra KDE 4.8 beta 1
Qt 4.7.4-3

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (kdeinit4), signal: Floating point exception
[Current thread is 1 (Thread 0x7f61f42dd760 (LWP 17214))]

Thread 3 (Thread 0x7f61d9bee700 (LWP 17215)):
#0  0x00007f61f2ba1e2f in __pthread_mutex_unlock_usercnt () from /lib/libpthread.so.0
#1  0x00007f61ee9b5c48 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f61ee9b614d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f61f2f39f7e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f61f2f0e4f2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f61f2f0e6f7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f61f2e2602f in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f61f2ef152f in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f61f2e28a85 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007f61f2b9edf0 in start_thread () from /lib/libpthread.so.0
#10 0x00007f61f197739d in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f61d50e5700 (LWP 17223)):
#0  0x00007f61f196f123 in poll () from /lib/libc.so.6
#1  0x00007f61ee9b5c14 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f61ee9b614d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f61f2f39f7e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f61f2f0e4f2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f61f2f0e6f7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f61f2e2602f in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f61f2e28a85 in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f61f2b9edf0 in start_thread () from /lib/libpthread.so.0
#9  0x00007f61f197739d in clone () from /lib/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f61f42dd760 (LWP 17214)):
[KCrash Handler]
#6  0x00007f61decc2f5f in KItemListController::slotChangeCurrentItem (this=0xf0b0e0, text=..., searchFromNextItem=<optimized out>) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemviews/kitemlistcontroller.cpp:249
#7  0x00007f61decc5e53 in KItemListController::qt_metacall (this=0xf0b0e0, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0x7fff23511230) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemlistcontroller.moc:129
#8  0x00007f61f2f21f0a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#9  0x00007f61deca70d3 in KItemListKeyboardSearchManager::changeCurrentItem (this=<optimized out>, _t1=<optimized out>, _t2=true) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/moc_kitemlistkeyboardsearchmanager_p.cpp:86
#10 0x00007f61decc8fe4 in KItemListKeyboardSearchManager::addKeys (this=0xfaf6b0, keys=<optimized out>) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemviews/kitemlistkeyboardsearchmanager.cpp:64
#11 0x00007f61decc3695 in KItemListController::keyPressEvent (this=0xf0b0e0, event=0x7fff23512260) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemviews/kitemlistcontroller.cpp:218
#12 0x00007f61decc2ade in KItemListController::processEvent (this=0xf0b0e0, event=<optimized out>, transform=<optimized out>) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemviews/kitemlistcontroller.cpp:627
#13 0x00007f61decccde5 in KItemListView::event (this=0xeff100, event=0x7fff23512260) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/kitemviews/kitemlistview.cpp:592
#14 0x00007f61f20eed94 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#15 0x00007f61f20f3c01 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#16 0x00007f61f3ccbe26 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#17 0x00007f61f2f0f2fc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#18 0x00007f61f213f40e in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#19 0x00007f61f24c4026 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#20 0x00007f61f25460eb in QAbstractScrollArea::event(QEvent*) () from /usr/lib/libQtGui.so.4
#21 0x00007f61f20eed94 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#22 0x00007f61f20f42fe in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#23 0x00007f61f3ccbe26 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#24 0x00007f61f2f0f2fc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#25 0x00007f61f218dbd9 in ?? () from /usr/lib/libQtGui.so.4
#26 0x00007f61f218e01b in ?? () from /usr/lib/libQtGui.so.4
#27 0x00007f61f216a654 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#28 0x00007f61f2192032 in ?? () from /usr/lib/libQtGui.so.4
#29 0x00007f61ee9b56d3 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#30 0x00007f61ee9b5eb0 in ?? () from /usr/lib/libglib-2.0.so.0
#31 0x00007f61ee9b614d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#32 0x00007f61f2f39f16 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#33 0x00007f61f2191cae in ?? () from /usr/lib/libQtGui.so.4
#34 0x00007f61f2f0e4f2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#35 0x00007f61f2f0e6f7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#36 0x00007f61f2f128eb in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#37 0x00007f61df452a5d in kdemain (argc=5, argv=0xc21190) at /chakra/desktop-unstable/kde-baseapps/src/kde-baseapps-4.7.80/dolphin/src/main.cpp:91
#38 0x0000000000408792 in _start ()

Reported using DrKonqi
Comment 1 Peter Penz 2011-11-21 10:44:16 UTC
Thanks for the report, I could reproduce the issue.
Comment 2 Frank Reininghaus 2011-11-21 23:52:15 UTC
Funnily enough, it crashes when any key is pressed, not just Esc. 

I spent some time wondering why it can segfault in that line. But then I realised:

> Application: Dolphin (kdeinit4), signal: Floating point exception

One should always check what kind of crash it is before trying to debug ;-)

The problem is that we're trying to divide something by the number of items in the view, which is still 0 at the time of the crash.

Will commit a fix in a minute.
Comment 3 Frank Reininghaus 2011-11-21 23:55:16 UTC
Git commit ca5c335132026e67e7d75b1953a4d79f1347cf4f by Frank Reininghaus.
Committed on 22/11/2011 at 00:52.
Pushed by freininghaus into branch 'master'.

Don't try to divide by zero.

Fixes a crash in Dolphin when pressing a key so quickly after a url
change that there are no items in the file item model yet.

BUG:287147

M  +1    -1    dolphin/src/kitemviews/kitemlistcontroller.cpp

http://commits.kde.org/kde-baseapps/ca5c335132026e67e7d75b1953a4d79f1347cf4f