Bug 408539 - [KTextEditor] highlighting crash applying invalid format
Summary: [KTextEditor] highlighting crash applying invalid format
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: general (show other bugs)
Version: 18.08.3
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2019-06-10 15:42 UTC by RJVB
Modified: 2019-06-11 17:20 UTC (History)
1 user (show)

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 RJVB 2019-06-10 15:42:23 UTC
Application: kate (18.08.3)
 (Compiled from sources)
Qt Version: 5.9.8
Frameworks Version: 5.54.0
Operating System: Linux 4.14.23-ck1-mainline-core2-rjvb x86_64
Distribution: Ubuntu 14.04.6 LTS

-- Information about the crash:
- What I was doing when the application crashed:

This crash happens when opening an assembly (.S) file which on my system is misidentified as an R script:

org.kde.ksyntaxhighlighting: Context: Unknown format "In Parenthesis" in context "parenthesis" of definition "R Script"
org.kde.ksyntaxhighlighting: Rule: Unknown format "Boolean" in context "parenthesis" of definition "R Script"
KCrash: Application 'kate' crashing...

The crash happens on the line "movq    $0x0, -0x10(%rbp)" in https://github.com/RJVB/LZVN/blob/9a03cb6cf47aa9a88b7946f5eb6033c7edbc4a66/lzvn_encode.S#L22

As far as I can tell, m_formatsIdToIndex is not empty but format.id() == 0 and `it == m_formatsIdToIndex.end()` (meaning the format id isn't found?).

Another nice example of why Q_ASSERT should not be used if there's an alternative, graceful way of handling the situation (just returning early has no side effects that I can see).

I'm running KTextEditor v5.38.0-380-g1a1e5eb6 (sic! Contrary to what the version tag suggests that's from March 4th this year!).

The crash can be reproduced every time.

-- Backtrace:
Application: Kate (kate), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fbb93578840 (LWP 14240))]

Thread 11 (Thread 0x7fbb5d7fa700 (LWP 14278)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb480013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb480013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb480013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 10 (Thread 0x7fbb5dffb700 (LWP 14277)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb440013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb440013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb440013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 9 (Thread 0x7fbb5e7fc700 (LWP 14276)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb500013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb500013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb500013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 8 (Thread 0x7fbb5effd700 (LWP 14275)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb4c0013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb4c0013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb4c0013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 7 (Thread 0x7fbb5f7fe700 (LWP 14274)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb540013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb540013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb540013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 6 (Thread 0x7fbb5ffff700 (LWP 14272)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb580013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb580013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb580013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 5 (Thread 0x7fbb64fb5700 (LWP 14271)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x7fbb600013c0, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x7fbb600013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb600013c0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 4 (Thread 0x7fbb657b6700 (LWP 14270)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb8d7ac07b in QWaitConditionPrivate::wait (this=0x217c760, time=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:143
#2  0x00007fbb8d7abe35 in QWaitCondition::wait (this=0x20cddd8, mutex=0x211ff80, time=18446744073709551615) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qwaitcondition_unix.cpp:215
#3  0x00007fbb66d0cfb4 in ThreadWeaver::Weaver::blockThreadUntilJobsAreBeingAssigned_locked (this=0x21c72e0, th=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:594
#4  ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait (this=0x21c72e0, th=<optimized out>, threadWasBusy=<optimized out>, suspendIfInactive=<optimized out>, justReturning=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:554
#5  0x00007fbb66d11399 in ThreadWeaver::WorkingHardState::applyForWork (this=0x2142220, th=0x27d4720, wasBusy=true) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/workinghardstate.cpp:66
#6  0x00007fbb66d11480 in non-virtual thunk to ThreadWeaver::WorkingHardState::applyForWork(ThreadWeaver::Thread*, bool) () from /opt/local/lib/x86_64-linux-gnu/libKF5ThreadWeaver.so.5
#7  0x00007fbb66d0d25e in ThreadWeaver::Weaver::applyForWork (this=<optimized out>, th=0x8, wasBusy=true) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/weaver.cpp:568
#8  0x00007fbb66d0f4c1 in ThreadWeaver::Thread::run (this=0x27d4720) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-threadweaver/work/threadweaver-5.52.0/src/thread.cpp:103
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x27d4720) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 3 (Thread 0x7fbb72a48700 (LWP 14243)):
#0  0x00007fbb8acb1404 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007fbb735879cb in cnd_wait (cond=<optimized out>, mtx=<optimized out>) at ../mesa-18.3.3/src/../include/c11/threads_posix.h:155
#2  util_queue_thread_func (input=<optimized out>) at ../mesa-18.3.3/src/util/u_queue.c:270
#3  0x00007fbb735882e6 in impl_thrd_routine (p=<optimized out>) at ../mesa-18.3.3/src/../include/c11/threads_posix.h:87
#4  0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#5  0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 2 (Thread 0x7fbb8081f700 (LWP 14241)):
#0  0x00007fbb8cbb3c9d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fbb85492761 in g_main_context_poll (priority=0, context=<optimized out>, timeout=<optimized out>, fds=<optimized out>, n_fds=<optimized out>) at gmain.c:4209
#2  g_main_context_iterate (context=<optimized out>, block=<optimized out>, dispatch=<optimized out>, self=<optimized out>) at gmain.c:3903
#3  0x00007fbb85492a21 in g_main_context_iteration (context=0x7fbb7c001600, may_block=1) at gmain.c:3969
#4  0x00007fbb8d9b7aeb in QEventDispatcherGlib::processEvents (this=0x7fbb7c0008c0, flags=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:425
#5  0x00007fbb8d9625bf in QEventLoop::processEvents (this=0x7fbb8081ed88, flags=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/kernel/qeventloop.cpp:134
#6  QEventLoop::exec (this=0x7fbb8081ed88, flags=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/kernel/qeventloop.cpp:212
#7  0x00007fbb8d7a6fe7 in QThread::exec (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread.cpp:515
#8  0x00007fbb8ddef610 in QDBusConnectionManager::run (this=0x7fbb8e0502e0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/dbus/qdbusconnection.cpp:178
#9  0x00007fbb8d7aab7a in QThreadPrivate::start (arg=0x7fbb8e0502e0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.8/qtbase/src/corelib/thread/qthread_unix.cpp:368
#10 0x00007fbb8acad184 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#11 0x00007fbb8cbc103d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 1 (Thread 0x7fbb93578840 (LWP 14240)):
[KCrash Handler]
#6  0x00007fbb92ff29c0 in KateHighlighting::applyFormat (this=0x28d0ce0, offset=18, length=4, format=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/syntax/katehighlight.cpp:261
#7  0x00007fbb8c2c16cc in KSyntaxHighlighting::AbstractHighlighter::highlightLine (this=0x28d0ce0, text=..., state=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ksyntaxhighlighting/work/syntax-highlighting-5.52.0/src/lib/abstracthighlighter.cpp:283
#8  0x00007fbb92ff263d in KateHighlighting::doHighlight (this=0x28d0ce0, prevLine=<optimized out>, textLine=0x28d41a0, nextLine=<optimized out>, ctxChanged=@0x7ffdec074c7f: false, tabWidth=4) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/syntax/katehighlight.cpp:207
#9  0x00007fbb92f999eb in KateBuffer::doHighlight (this=0x2139e70, startLine=<optimized out>, endLine=<optimized out>, invalidate=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katebuffer.cpp:395
#10 0x00007fbb92f7b9ef in KTextEditor::DocumentPrivate::kateTextLine (this=0x212a220, i=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katedocument.cpp:5180
#11 0x00007fbb92fd78fa in KateLineLayout::textLine (this=0x2139640, reloadForce=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/render/katelinelayout.cpp:69
#12 0x00007fbb92fd0248 in KateRenderer::layoutLine (this=0x253ba30, lineLayout=..., maxwidth=-1, cacheLayout=true) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/render/katerenderer.cpp:1009
#13 0x00007fbb92fd3c26 in KateLayoutCache::line (this=0x2241480, realLine=0, virtualLine=-1) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/render/katelayoutcache.cpp:334
#14 0x00007fbb92fd3339 in KateLayoutCache::updateViewCache (this=<optimized out>, startPos=..., newViewLineCount=<optimized out>, viewLinesScrolled=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/render/katelayoutcache.cpp:242
#15 0x00007fbb93016db6 in KateViewInternal::doUpdateView (this=0x223d850, changed=true, viewLinesScrolled=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/view/kateviewinternal.cpp:637
#16 0x00007fbb93015261 in KateViewInternal::updateView (this=0x223d850, changed=<optimized out>, viewLinesScrolled=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/view/kateviewinternal.cpp:611
#17 0x00007fbb9300ab42 in KTextEditor::ViewPrivate::updateView (changed=255, this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/view/kateview.cpp:2044
#18 KTextEditor::ViewPrivate::updateDocumentConfig (this=0x253d570) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/view/kateview.cpp:1902
#19 0x00007fbb92f8dc99 in KTextEditor::DocumentPrivate::updateConfig (this=0x212a220) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katedocument.cpp:4418
#20 0x00007fbb93053737 in KateConfig::configEnd (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/utils/kateconfig.cpp:73
#21 KateDocumentConfig::setEncoding (this=0x213e070, encoding=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/utils/kateconfig.cpp:937
#22 0x00007fbb92f9a018 in KateBuffer::openFile (this=0x2139e70, m_file=..., enforceTextCodec=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katebuffer.cpp:208
#23 0x00007fbb92f7f3ad in KTextEditor::DocumentPrivate::openFile (this=0x212a220) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katedocument.cpp:2250
#24 0x00007fbb92c40af6 in KParts::ReadOnlyPartPrivate::openLocalFile (this=0x2130720) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-kparts/work/kparts-5.52.0/src/readonlypart.cpp:190
#25 0x00007fbb92c4086d in KParts::ReadOnlyPart::openUrl (this=0x212a220, url=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-kparts/work/kparts-5.52.0/src/readonlypart.cpp:153
#26 0x00007fbb92f84d53 in KTextEditor::DocumentPrivate::openUrl (this=0x212a220, url=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_KF5-Frameworks/kf5-ktexteditor/work/ktexteditor-5.52.0/src/document/katedocument.cpp:2644
#27 0x0000000000435aef in KateDocManager::openUrl (this=0x7ffdec075748, url=..., encoding=..., isTempFile=false, docInfo=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/katedocmanager.cpp:191
#28 0x0000000000449182 in KateViewManager::openUrl (this=0x222fde0, url=..., encoding=..., activate=true, isTempFile=false, docInfo=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/kateviewmanager.cpp:298
#29 0x0000000000433ddc in KateApp::openDocUrl (this=<optimized out>, url=..., encoding=..., isTempFile=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/kateapp.cpp:295
#30 0x0000000000433295 in KateApp::startupKate (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/kateapp.cpp:184
#31 0x0000000000432705 in KateApp::init (this=0x7ffdec075710) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/kateapp.cpp:106
#32 0x0000000000430ccd in main (argc=2, argv=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kate/kf5-kate/work/kate-18.08.3/kate/main.cpp:579

The reporter indicates this bug may be a duplicate of or related to bug 401207.

Possible duplicates by query: bug 401207.

Reported using DrKonqi
Comment 1 Christoph Cullmann 2019-06-10 17:46:19 UTC
Thanks for the report with usable backtrace, considering the line numbers, I think this should be already fixed in master.

Please try with master, the fix should be:

commit e540262fb7230dfd40794d20c5d0e34dbc748b03
Author: Dāvis Mosāns <davispuh@gmail.com>
Date:   Sat Mar 16 16:40:24 2019 +0100

    Don't crash on malformed syntax highlighting files
    
    Test Plan:
    1. Create malformed syntax highlighting file with missing end tags
    2. Place it in ~/.local/share/katepart5/syntax/
    3. Open Kate with file which uses that syntax highlighting
    
    Reviewers: cullmann, dhaumann
    
    Reviewed By: cullmann
    
    Subscribers: kwrite-devel, kde-frameworks-devel
    
    Tags: #kate, #frameworks
    
    Differential Revision: https://phabricator.kde.org/D19533

And no, the assert is correct.
If we arrive here with a invalid iterator, all is broken, this shall no happen.
We don't add early out for all cases of internal programming errors that shall be fixed (and got fixed).
Comment 2 RJVB 2019-06-10 18:12:16 UTC
>And no, the assert is correct.
>If we arrive here with a invalid iterator, all is broken, this shall no happen.

Well, I don't agree with that. I have said it before and will continue to hammer it down: it's unprofessional to allow production builds to crash because of situations of which you have foreseen that they might happen. If the situation cannot be caught when it arrives an immediate abort is indeed the only solution rather than letting the software maybe crash at a later point. In all other situations thought should be given to users who might lose important data.

Once there is sufficient proof that the situation can no longer arise the code can be cleaned up, but asserts have the nasty habit of remaining to clutter the code.
I do agree that there should be a Q_ASSERT variant which makes it easy to execute a bit of graceful error handling.
Comment 3 RJVB 2019-06-11 09:50:38 UTC
I can indeed no longer reproduce the crash with that commit in place (but will keep my own mod in place too).
Comment 4 Christoph Cullmann 2019-06-11 12:54:24 UTC
I don't think that it makes sense to apply patches to our code for issues that got fixed just to change the coding style to your needs.

But I can't stop people doing things they like.

As your change will alter the line numbers in your code base, this will make backtraces from people using that version less useless for us, if we don't look at your code base (independent of the version they specify here).
Comment 5 RJVB 2019-06-11 15:48:10 UTC
Well, you kept the assert I tripped over, didn't you? Either you had your reasons for that, or that just proves one of my points above :)
Comment 6 Christoph Cullmann 2019-06-11 17:20:03 UTC
The assert is there that I/we get a nicer kind of failure in a debug build if one ever breaks that invariant during development and to document the intend.

Why should I remove that?

If I remove it and break stuff during development, I will need to read a backtrace and figure out the failure.

With the assert I get a verbose error message and have the knowledge that it is not wanted to ever arrive with an invalid iterator here.

And for the release builds, it produces zero code, the user will not be burdened with unneeded run-time checks.

Actually, below in your backtrace, I don't see how you tripped over the assert, you did run in the release build crash.

That won't change if I remove the assert now and the invariant is broken again, we just get a worse developer experience for debug compiles.

Perhaps you use assertions for other things, I use them in most cases for the stuff you read for example here

https://en.wikipedia.org/wiki/Assertion_(software_development)

* Assertions during the development cycle

I would be happy if that assertion could be proven during compile time as some static assertion, but static analysis will not do that for you with reasonable effort. That would actually be the nicest kind of assert there: no compile if we break this logic.