Bug 308578 - Crash while highlighting a QML file
Summary: Crash while highlighting a QML file
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: part (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-10-17 23:39 UTC by Aleix Pol
Modified: 2012-11-01 00:01 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aleix Pol 2012-10-17 23:39:10 UTC
Application: kdevelop (4.4.60)
KDE Platform Version: 4.9.2 (Compiled from sources)
Qt Version: 4.8.3
Operating System: Linux 3.5.4-1-ARCH x86_64
Distribution: "Arch Linux"

-- Information about the crash:
It crashed twice while editing a small chunk of code. First then I went to do it again and it happened the same.

I hope this helps

The crash can be reproduced every time.

-- Backtrace:
Application: KDevelop (kdevelop), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fb8b8ed7780 (LWP 31176))]

Thread 10 (Thread 0x7fb89c40b700 (LWP 31185)):
#0  0x00007fb8b4668cc1 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fb8b48f4c57 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b0a8356a in KDevelop::DUChainPrivate::CleanupThread::run (this=0x1a0b320) at /home/kde-devel/kdevplatform/language/duchain/duchain.cpp:282
#3  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 9 (Thread 0x7fb8856bd700 (LWP 31200)):
#0  0x00007fb8b2a49073 in select () from /usr/lib/libc.so.6
#1  0x00007fb8b4a1cb83 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b4a21534 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib/libQtCore.so.4
#3  0x00007fb8b4a220c2 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb8b49f033f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb8b49f05c8 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb8b48f17c0 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb8b49d0aff in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 8 (Thread 0x7fb884ebc700 (LWP 31204)):
#0  0x00007fb8b4668954 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fb8aa80f37d in ?? () from /usr/lib/libQtWebKit.so.4
#2  0x00007fb8aa80f489 in ?? () from /usr/lib/libQtWebKit.so.4
#3  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7fb87ffff700 (LWP 31207)):
#0  0x00007fb8b2a49073 in select () from /usr/lib/libc.so.6
#1  0x00007fb8b4a1ca5a in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b4a21534 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib/libQtCore.so.4
#3  0x00007fb8b4a220c2 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb8b49f033f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb8b49f05c8 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb8b48f17c0 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 6 (Thread 0x7fb87f395700 (LWP 31316)):
#0  0x00007fb8b4668954 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fb8b17b6ad7 in ?? () from /usr/lib/libQtScript.so.4
#2  0x00007fb8b17b6b09 in ?? () from /usr/lib/libQtScript.so.4
#3  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7fb87db34700 (LWP 31327)):
#0  0x00007fb8b2a49073 in select () from /usr/lib/libc.so.6
#1  0x00007fb8b4a1cb83 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b4a21534 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib/libQtCore.so.4
#3  0x00007fb8b4a220c2 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb8b49f033f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb8b49f05c8 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb8b48f17c0 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb8b0ba84e3 in KDevelop::CompletionWorkerThread::run (this=0x3dcac60) at /home/kde-devel/kdevplatform/language/codecompletion/codecompletionmodel.cpp:84
#8  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7fb833fff700 (LWP 31328)):
#0  0x00007fb8b2a49073 in select () from /usr/lib/libc.so.6
#1  0x00007fb8b4a1cb83 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b4a21534 in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib/libQtCore.so.4
#3  0x00007fb8b4a220c2 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007fb8b49f033f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007fb8b49f05c8 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007fb8b48f17c0 in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007fb8b0ba84e3 in KDevelop::CompletionWorkerThread::run (this=0x3fba840) at /home/kde-devel/kdevplatform/language/codecompletion/codecompletionmodel.cpp:84
#8  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#10 0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7fb87c8f5700 (LWP 31397)):
#0  0x00007fb8b4668954 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fb8b48f4cfb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b719e4de in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x191a570, th=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:365
#3  0x00007fb8b71a2885 in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x150d4e0, th=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WorkingHardState.cpp:80
#4  0x00007fb8b719e45c in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x191a570, th=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:356
#5  0x00007fb8b71a282b in ThreadWeaver::WorkingHardState::applyForWork (this=0x150d4e0, th=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WorkingHardState.cpp:71
#6  0x00007fb8b719e423 in ThreadWeaver::WeaverImpl::applyForWork (this=0x191a570, th=0x5822f30, previous=0x5e77860) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:351
#7  0x00007fb8b71a01f3 in ThreadWeaver::ThreadRunHelper::run (this=0x7fb87c8f4df0, parent=0x191a570, th=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/Thread.cpp:87
#8  0x00007fb8b71a04a2 in ThreadWeaver::Thread::run (this=0x5822f30) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/Thread.cpp:142
#9  0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#10 0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#11 0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fb8337fe700 (LWP 31398)):
#0  0x00007fb8b4668954 in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fb8b48f4cfb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#2  0x00007fb8b719e4de in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x191a570, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:365
#3  0x00007fb8b71a2885 in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x150d4e0, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WorkingHardState.cpp:80
#4  0x00007fb8b719e45c in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x191a570, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:356
#5  0x00007fb8b71a282b in ThreadWeaver::WorkingHardState::applyForWork (this=0x150d4e0, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WorkingHardState.cpp:71
#6  0x00007fb8b719e423 in ThreadWeaver::WeaverImpl::applyForWork (this=0x191a570, th=0x7fb820001810, previous=0x0) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:351
#7  0x00007fb8b71a2852 in ThreadWeaver::WorkingHardState::applyForWork (this=0x150d4e0, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WorkingHardState.cpp:74
#8  0x00007fb8b719e423 in ThreadWeaver::WeaverImpl::applyForWork (this=0x191a570, th=0x7fb820001810, previous=0x168e260) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/WeaverImpl.cpp:351
#9  0x00007fb8b71a01f3 in ThreadWeaver::ThreadRunHelper::run (this=0x7fb8337fddf0, parent=0x191a570, th=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/Thread.cpp:87
#10 0x00007fb8b71a04a2 in ThreadWeaver::Thread::run (this=0x7fb820001810) at /home/kde-devel/src/kdelibs/threadweaver/Weaver/Thread.cpp:142
#11 0x00007fb8b48f479c in ?? () from /usr/lib/libQtCore.so.4
#12 0x00007fb8b4664e0f in start_thread () from /usr/lib/libpthread.so.0
#13 0x00007fb8b2a4f45d in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7fb8b8ed7780 (LWP 31176)):
[KCrash Handler]
#6  0x00007fb8b4939620 in QString::operator==(QString const&) const () from /usr/lib/libQtCore.so.4
#7  0x00007fb89d69b832 in KateHlManager::nameForIdentifier (this=0x164a6c0, identifier=...) at /home/kde-devel/src/kate/part/syntax/katesyntaxmanager.cpp:396
#8  0x00007fb89d63b302 in KateDocument::highlightingModeAt (this=0x4bd5be0, position=...) at /home/kde-devel/src/kate/part/document/katedocument.cpp:5422
#9  0x00007fb88ee1db80 in SnippetCompletionModel::initData (this=0x313f800, view=0x4c02b00) at /home/kde-devel/kdevplatform/plugins/snippet/snippetcompletionmodel.cpp:89
#10 0x00007fb88ee1dac8 in SnippetCompletionModel::completionInvoked (this=0x313f800, view=0x4c02b00, range=..., invocationType=KTextEditor::CodeCompletionModel::AutomaticInvocation) at /home/kde-devel/kdevplatform/plugins/snippet/snippetcompletionmodel.cpp:82
#11 0x00007fb89d5ca8dc in KateCompletionWidget::startCompletion (this=0x4e811c0, word=..., modelsToStart=..., invocationType=KTextEditor::CodeCompletionModel::AutomaticInvocation) at /home/kde-devel/src/kate/part/completion/katecompletionwidget.cpp:386
#12 0x00007fb89d5ca0bd in KateCompletionWidget::startCompletion (this=0x4e811c0, invocationType=KTextEditor::CodeCompletionModel::AutomaticInvocation, models=...) at /home/kde-devel/src/kate/part/completion/katecompletionwidget.cpp:289
#13 0x00007fb89d5cfef6 in KateCompletionWidget::automaticInvocation (this=0x4e811c0) at /home/kde-devel/src/kate/part/completion/katecompletionwidget.cpp:1337
#14 0x00007fb89d5d04ac in KateCompletionWidget::qt_static_metacall (_o=0x4e811c0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fff1eedb670) at part/katecompletionwidget.moc:93
#15 0x00007fb8b4a06acf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#16 0x00007fb8b4a05ddc in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#17 0x00007fb8b3b8508c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#18 0x00007fb8b3b8950a in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#19 0x00007fb8b524820a in KApplication::notify (this=0x7fff1eedc3a0, receiver=0x4ed8680, event=0x7fff1eedbdb0) at /home/kde-devel/src/kdelibs/kdeui/kernel/kapplication.cpp:311
#20 0x00007fb8b49f15ee in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#21 0x00007fb8b4a21fb2 in ?? () from /usr/lib/libQtCore.so.4
#22 0x00007fb8b4a22168 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#23 0x00007fb8b3c2632f in ?? () from /usr/lib/libQtGui.so.4
#24 0x00007fb8b49f033f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#25 0x00007fb8b49f05c8 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#26 0x00007fb8b49f5268 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#27 0x000000000040b507 in main (argc=1, argv=0x7fff1eede238) at /home/kde-devel/kdevelop/app/main.cpp:510

Reported using DrKonqi
Comment 2 Dominik Haumann 2012-10-18 21:02:15 UTC
Did you have folded code?
Comment 3 Aleix Pol 2012-10-18 21:24:47 UTC
No, not that I remember at least.
Comment 4 Christoph Cullmann 2012-11-01 00:01:01 UTC
Git commit 4f1f07cfc15e9411f3ba583110d78bff1bbceed0 by Christoph Cullmann.
Committed on 01/11/2012 at 01:00.
Pushed by cullmann into branch 'master'.

try to make the highlightingModeAt both faster and more safe
range checks + use QHash and no wrong loops where one used to compare wrong end iterator :/

M  +19   -13   part/document/katedocument.cpp
M  +5    -25   part/syntax/katehighlight.cpp
M  +3    -2    part/syntax/katehighlight.h

http://commits.kde.org/kate/4f1f07cfc15e9411f3ba583110d78bff1bbceed0