Bug 366493 - Crashes when refreshing a file with more than 4096 chars in a line
Summary: Crashes when refreshing a file with more than 4096 chars in a line
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: kwrite (show other bugs)
Version: unspecified
Platform: Fedora RPMs Linux
: VHI crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords: drkonqi
: 369022 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-08-07 13:13 UTC by Arjun AK
Modified: 2016-09-30 18:50 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: KDE Frameworks 5.26


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arjun AK 2016-08-07 13:13:43 UTC
Application: kwrite (16.04.3)

Qt Version: 5.6.1
Frameworks Version: 5.24.0
Operating System: Linux 4.6.5-300.fc24.x86_64 x86_64
Distribution (Platform): Fedora RPMs

-- Information about the crash:
Steps to reproduce:
1. printf '=%.0s' {1..4097} > crash
2. Open the file using kate and click on "Temporarily raise limit and reload" or "Close" 
3. Press F5

The crash can be reproduced every time.

-- Backtrace:
Application: KWrite (kwrite), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fdcd679c900 (LWP 25673))]

Thread 2 (Thread 0x7fdcc3fff700 (LWP 25675)):
#0  0x00007ffdb61c4c59 in clock_gettime ()
#1  0x00007fdce53ef426 in clock_gettime () at /lib64/libc.so.6
#2  0x00007fdce6089ab3 in qt_gettime() () at /lib64/libQt5Core.so.5
#3  0x00007fdce61d9869 in QTimerInfoList::updateCurrentTime() () at /lib64/libQt5Core.so.5
#4  0x00007fdce61d9c65 in QTimerInfoList::timerWait(timespec&) () at /lib64/libQt5Core.so.5
#5  0x00007fdce61dadac in timerSourcePrepareHelper(GTimerSource*, int*) () at /lib64/libQt5Core.so.5
#6  0x00007fdce61dae75 in timerSourcePrepare(_GSource*, int*) () at /lib64/libQt5Core.so.5
#7  0x00007fdce1d33f7d in g_main_context_prepare () at /lib64/libglib-2.0.so.0
#8  0x00007fdce1d3496b in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#9  0x00007fdce1d34b5c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#10 0x00007fdce61db24b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#11 0x00007fdce618a5ea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#12 0x00007fdce5fe9343 in QThread::exec() () at /lib64/libQt5Core.so.5
#13 0x00007fdce63e1559 in QDBusConnectionManager::run() () at /lib64/libQt5DBus.so.5
#14 0x00007fdce5fed99a in QThreadPrivate::start(void*) () at /lib64/libQt5Core.so.5
#15 0x00007fdce2f605ca in start_thread () at /lib64/libpthread.so.0
#16 0x00007fdce53e0ead in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7fdcd679c900 (LWP 25673)):
[KCrash Handler]
#6  0x00007fdcea2db018 in KateMessageWidget::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) () at /lib64/libKF5TextEditor.so.5
#7  0x00007fdcea2afa6c in KTextEditor::ViewPrivate::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) () at /lib64/libKF5TextEditor.so.5
#8  0x00007fdcea223302 in KTextEditor::DocumentPrivate::postMessage(KTextEditor::Message*) () at /lib64/libKF5TextEditor.so.5
#9  0x00007fdcea2308aa in KTextEditor::DocumentPrivate::openFile() () at /lib64/libKF5TextEditor.so.5
#10 0x00007fdce9a95751 in KParts::ReadOnlyPartPrivate::openLocalFile() () at /lib64/libKF5Parts.so.5
#11 0x00007fdce9a965e4 in KParts::ReadOnlyPart::openUrl(QUrl const&) () at /lib64/libKF5Parts.so.5
#12 0x00007fdcea21b7de in KTextEditor::DocumentPrivate::openUrl(QUrl const&) () at /lib64/libKF5TextEditor.so.5
#13 0x00007fdcea21ba92 in KTextEditor::DocumentPrivate::documentReload() () at /lib64/libKF5TextEditor.so.5
#14 0x00007fdcea3aaa6e in KTextEditor::ViewPrivate::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () at /lib64/libKF5TextEditor.so.5
#15 0x00007fdce61b3b92 in QMetaObject::activate(QObject*, int, int, void**) () at /lib64/libQt5Core.so.5
#16 0x00007fdce6aa0672 in QAction::triggered(bool) () at /lib64/libQt5Widgets.so.5
#17 0x00007fdce6aa3292 in QAction::activate(QAction::ActionEvent) () at /lib64/libQt5Widgets.so.5
#18 0x00007fdce6aa3c1c in QAction::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#19 0x00007fdce6aa9c0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#20 0x00007fdce6aaf0ef in QApplication::notify(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#21 0x00007fdce618b7aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#22 0x00007fdce657d478 in QShortcutMap::dispatchEvent(QKeyEvent*) () at /lib64/libQt5Gui.so.5
#23 0x00007fdce657d519 in QShortcutMap::tryShortcut(QKeyEvent*) () at /lib64/libQt5Gui.so.5
#24 0x00007fdce6538a6d in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () at /lib64/libQt5Gui.so.5
#25 0x00007fdce654f434 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () at /lib64/libQt5Gui.so.5
#26 0x00007fdce65546b5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /lib64/libQt5Gui.so.5
#27 0x00007fdce65353cb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Gui.so.5
#28 0x00007fdccfd73600 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQt5XcbQpa.so.5
#29 0x00007fdce1d34703 in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#30 0x00007fdce1d34ab0 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#31 0x00007fdce1d34b5c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#32 0x00007fdce61db22f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#33 0x00007fdce618a5ea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt5Core.so.5
#34 0x00007fdce619217c in QCoreApplication::exec() () at /lib64/libQt5Core.so.5
#35 0x000055d174d508e2 in main ()

Reported using DrKonqi
Comment 1 Dominik Haumann 2016-09-02 14:20:45 UTC
Valgrind trace of today's build:

==9727== Invalid read of size 8
==9727==    at 0x4F9C7C3: QHash<KTextEditor::Message*, QList<QSharedPointer<QAction> > >::findNode(KTextEditor::Message* const&, unsigned int*) const (qhash.h:919)
==9727==    by 0x4F99EBB: QHash<KTextEditor::Message*, QList<QSharedPointer<QAction> > >::contains(KTextEditor::Message* const&) const (qhash.h:894)
==9727==    by 0x507F623: KateMessageWidget::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) (katemessagewidget.cpp:188)
==9727==    by 0x50525DF: KTextEditor::ViewPrivate::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) (kateview.cpp:3460)
==9727==    by 0x4F9338C: KTextEditor::DocumentPrivate::postMessage(KTextEditor::Message*) (katedocument.cpp:5966)
==9727==    by 0x4F7CAA5: KTextEditor::DocumentPrivate::openFile() (katedocument.cpp:2329)
==9727==    by 0x5AA7B74: KParts::ReadOnlyPartPrivate::openLocalFile() (readonlypart.cpp:187)
==9727==    by 0x5AA7801: KParts::ReadOnlyPart::openUrl(QUrl const&) (readonlypart.cpp:150)
==9727==    by 0x4F7EC73: KTextEditor::DocumentPrivate::openUrl(QUrl const&) (katedocument.cpp:2634)
==9727==    by 0x4F8842C: KTextEditor::DocumentPrivate::documentReload() (katedocument.cpp:4258)
==9727==    by 0x5048A06: KTextEditor::ViewPrivate::reloadFile() (kateview.cpp:1396)
==9727==    by 0x517EEE8: KTextEditor::ViewPrivate::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_kateview.cpp:736)
==9727==  Address 0x48 is not stack'd, malloc'd or (recently) free'd
==9727==
Comment 2 Dominik Haumann 2016-09-04 13:32:03 UTC
Git commit 7d01d0f427902bd85355b155e68218dc172f7fbd by Dominik Haumann.
Committed on 04/09/2016 at 13:31.
Pushed by dhaumann into branch 'master'.

Fix crash when reloading documents with auto-wrapped line due to line length limit

REVIEW: 128816

M  +13   -13   src/document/katedocument.cpp
M  +0    -5    src/document/katedocument.h

http://commits.kde.org/ktexteditor/7d01d0f427902bd85355b155e68218dc172f7fbd
Comment 3 Dominik Haumann 2016-09-30 18:50:20 UTC
*** Bug 369022 has been marked as a duplicate of this bug. ***