Bug 387407 - Kate crashed after opening a file while save dialog was open
Summary: Kate crashed after opening a file while save dialog was open
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: general (other bugs)
Version First Reported In: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2017-11-28 15:38 UTC by Justin Lawen
Modified: 2017-12-20 19:10 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Justin Lawen 2017-11-28 15:38:42 UTC
Application: kate (17.08.3)

Qt Version: 5.9.2
Frameworks Version: 5.40.0
Operating System: Linux 4.14.1-1-default x86_64
Distribution: "openSUSE Tumbleweed"

-- Information about the crash:
- What I was doing when the application crashed:
Open new Kate window, or close all tabs; this leaves the default "untitled" tab
Open save dialog for blank tab, and leave it open
Attempt to open a file in dolphin

Expected: File is opened in a new tab (since blank tab is being saved)
Instead: Kate attempts to overwrite blank tab with new file, and crashes

Crash occurs when there is an attempt to open a file into a window which has the save dialog open for the blank tab. Crash does not occur if file opens into a new window, or if any tab is not empty.

The crash can be reproduced every time.

-- Backtrace:
Application: Kate (kate), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fc428378900 (LWP 7510))]

Thread 3 (Thread 0x7fc409e62700 (LWP 7512)):
#0  0x00007fc422d08f0b in poll () from /lib64/libc.so.6
#1  0x00007fc41cf9a149 in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007fc41cf9a25c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#3  0x00007fc42363225b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#4  0x00007fc4235da73a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#5  0x00007fc42340a1fa in QThread::exec() () from /usr/lib64/libQt5Core.so.5
#6  0x00007fc423ab1a45 in QDBusConnectionManager::run() () from /usr/lib64/libQt5DBus.so.5
#7  0x00007fc42340ec0e in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5
#8  0x00007fc41ea98558 in start_thread () from /lib64/libpthread.so.0
#9  0x00007fc422d136bf in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7fc412d5b700 (LWP 7511)):
#0  0x00007fc422d08f0b in poll () from /lib64/libc.so.6
#1  0x00007fc41eebf387 in ?? () from /usr/lib64/libxcb.so.1
#2  0x00007fc41eec117a in xcb_wait_for_event () from /usr/lib64/libxcb.so.1
#3  0x00007fc415b0f579 in QXcbEventReader::run() () from /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007fc42340ec0e in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5
#5  0x00007fc41ea98558 in start_thread () from /lib64/libpthread.so.0
#6  0x00007fc422d136bf in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7fc428378900 (LWP 7510)):
[KCrash Handler]
#6  0x00007fc422c510d0 in raise () from /lib64/libc.so.6
#7  0x00007fc422c526b1 in abort () from /lib64/libc.so.6
#8  0x00007fc422c94427 in __libc_message () from /lib64/libc.so.6
#9  0x00007fc422c9ab83 in malloc_printerr () from /lib64/libc.so.6
#10 0x00007fc422c9c489 in _int_free () from /lib64/libc.so.6
#11 0x00007fc42360740b in QObjectPrivate::deleteChildren() () from /usr/lib64/libQt5Core.so.5
#12 0x00007fc424ae67dc in QWidget::~QWidget() () from /usr/lib64/libQt5Widgets.so.5
#13 0x00007fc427dc6b19 in KTextEditor::ViewPrivate::~ViewPrivate (this=0x556677d98700, __in_chrg=<optimized out>) at /usr/src/debug/ktexteditor-5.40.0/src/view/kateview.cpp:272
#14 0x0000556676796fc7 in KateViewManager::deleteView (this=this@entry=0x556677e6dd80, view=<optimized out>, view@entry=0x556677d98700) at /usr/src/debug/kate-17.08.3/kate/kateviewmanager.cpp:503
#15 0x0000556676797253 in KateViewManager::documentWillBeDeleted (this=0x556677e6dd80, doc=<optimized out>) at /usr/src/debug/kate-17.08.3/kate/kateviewmanager.cpp:724
#16 0x00005566767c67dc in KateViewManager::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7fff7e223e20) at /usr/src/debug/kate-17.08.3/build/kate/kdeinit_kate_autogen/EWIEGA46WW/moc_kateviewmanager.cpp:249
#17 0x00007fc42360963a in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5
#18 0x00005566767c0b42 in KateDocManager::documentWillBeDeleted (this=this@entry=0x7fff7e225758, _t1=<optimized out>) at /usr/src/debug/kate-17.08.3/build/kate/kdeinit_kate_autogen/EWIEGA46WW/moc_katedocmanager.cpp:359
#19 0x0000556676781a08 in KateDocManager::closeDocuments (this=this@entry=0x7fff7e225758, documents=..., closeUrl=closeUrl@entry=true) at /usr/src/debug/kate-17.08.3/kate/katedocmanager.cpp:247
#20 0x0000556676782cc5 in KateDocManager::closeDocument (this=this@entry=0x7fff7e225758, doc=<optimized out>, doc@entry=0x55667780b730, closeUrl=closeUrl@entry=true) at /usr/src/debug/kate-17.08.3/kate/katedocmanager.cpp:281
#21 0x0000556676782ddd in KateDocManager::openUrl (this=0x7fff7e225758, url=..., encoding=..., isTempFile=<optimized out>, docInfo=...) at /usr/src/debug/kate-17.08.3/kate/katedocmanager.cpp:204
#22 0x0000556676799066 in KateViewManager::openUrl (this=this@entry=0x556677e6dd80, url=..., encoding=..., activate=activate@entry=true, isTempFile=isTempFile@entry=false, docInfo=...) at /usr/src/debug/kate-17.08.3/kate/kateviewmanager.cpp:298
#23 0x0000556676778d3d in KateApp::openDocUrl (this=this@entry=0x7fff7e225720, url=..., encoding=..., isTempFile=isTempFile@entry=false) at /usr/src/debug/kate-17.08.3/kate/kateapp.cpp:288
#24 0x00005566767c9898 in KateAppAdaptor::tokenOpenUrlAt (this=this@entry=0x7fff7e2257a8, url=..., line=-1, column=-1, encoding=..., isTempFile=false) at /usr/src/debug/kate-17.08.3/kate/kateappadaptor.cpp:85
#25 0x00005566767c2e97 in KateAppAdaptor::qt_static_metacall (_o=_o@entry=0x7fff7e2257a8, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=6, _a=_a@entry=0x7fff7e2243d0) at /usr/src/debug/kate-17.08.3/build/kate/kdeinit_kate_autogen/EWIEGA46WW/moc_kateappadaptor.cpp:139
#26 0x00005566767c7185 in KateAppAdaptor::qt_metacall (this=0x7fff7e2257a8, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x7fff7e2243d0) at /usr/src/debug/kate-17.08.3/build/kate/kdeinit_kate_autogen/EWIEGA46WW/moc_kateappadaptor.cpp:211
#27 0x00007fc423abbf48 in QDBusConnectionPrivate::deliverCall(QObject*, int, QDBusMessage const&, QVector<int> const&, int) () from /usr/lib64/libQt5DBus.so.5
#28 0x00007fc423ac1088 in QDBusConnectionPrivate::activateCall(QObject*, int, QDBusMessage const&) [clone .part.143] () from /usr/lib64/libQt5DBus.so.5
#29 0x00007fc423ac19bf in QDBusConnectionPrivate::activateObject(QDBusConnectionPrivate::ObjectTreeNode&, QDBusMessage const&, int) () from /usr/lib64/libQt5DBus.so.5
#30 0x00007fc423ac3e7e in QDBusActivateObjectEvent::placeMetaCall(QObject*) () from /usr/lib64/libQt5DBus.so.5
#31 0x00007fc42360a022 in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5
#32 0x00007fc424aaeafc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#33 0x00007fc424ab5eb4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#34 0x00007fc4235dc128 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#35 0x00007fc4235de715 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib64/libQt5Core.so.5
#36 0x00007fc423632bc3 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/libQt5Core.so.5
#37 0x00007fc41cf99f97 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#38 0x00007fc41cf9a1d0 in ?? () from /usr/lib64/libglib-2.0.so.0
#39 0x00007fc41cf9a25c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#40 0x00007fc42363223f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#41 0x00007fc4235da73a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#42 0x00007fc424c85487 in QDialog::exec() () from /usr/lib64/libQt5Widgets.so.5
#43 0x00007fc424c853ac in QDialog::exec() () from /usr/lib64/libQt5Widgets.so.5
#44 0x00007fc424c962b5 in QFileDialog::getSaveFileUrl(QWidget*, QString const&, QUrl const&, QString const&, QString*, QFlags<QFileDialog::Option>, QStringList const&) () from /usr/lib64/libQt5Widgets.so.5
#45 0x00007fc427d318bb in KTextEditor::DocumentPrivate::documentSaveAs (this=0x55667780b730) at /usr/src/debug/ktexteditor-5.40.0/src/document/katedocument.cpp:4304
#46 0x00007fc427d2e8e7 in KTextEditor::DocumentPrivate::documentSave (this=0x55667780b730) at /usr/src/debug/ktexteditor-5.40.0/src/document/katedocument.cpp:4295
#47 0x00007fc427ebb853 in KTextEditor::DocumentPrivate::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7fff7e224e40) at /usr/src/debug/ktexteditor-5.40.0/build/src/KF5TextEditor_autogen/DV7UALDUNI/moc_katedocument.cpp:512
#48 0x00007fc42360963a in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5
#49 0x00007fc424aa8982 in QAction::triggered(bool) () from /usr/lib64/libQt5Widgets.so.5
#50 0x00007fc424aaae1c in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQt5Widgets.so.5
#51 0x00007fc424aab625 in QAction::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#52 0x00007fc424aaeafc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#53 0x00007fc424ab5eb4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#54 0x00007fc4235dc128 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#55 0x00007fc424327272 in QShortcutMap::dispatchEvent(QKeyEvent*) () from /usr/lib64/libQt5Gui.so.5
#56 0x00007fc42432733a in QShortcutMap::tryShortcut(QKeyEvent*) () from /usr/lib64/libQt5Gui.so.5
#57 0x00007fc4242d9897 in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () from /usr/lib64/libQt5Gui.so.5
#58 0x00007fc4242f79e7 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/lib64/libQt5Gui.so.5
#59 0x00007fc4242fc6e5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib64/libQt5Gui.so.5
#60 0x00007fc4242d5f9b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5
#61 0x00007fc415b6f420 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/libQt5XcbQpa.so.5
#62 0x00007fc41cf99f97 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#63 0x00007fc41cf9a1d0 in ?? () from /usr/lib64/libglib-2.0.so.0
#64 0x00007fc41cf9a25c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#65 0x00007fc42363223f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#66 0x00007fc4235da73a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#67 0x00007fc4235e2fc4 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#68 0x0000556676772d10 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kate-17.08.3/kate/main.cpp:582

Possible duplicates by query: bug 384669, bug 334746.

Reported using DrKonqi
Comment 1 Christoph Cullmann 2017-12-20 19:10:19 UTC
This should be fixed by commit:

commit e3ece7bd45d2743b3c36ad856abd12ac9ba282d6
Author: Christoph Roick <chrisito@gmx.de>
Date:   Wed Nov 15 23:45:54 2017 +0100

    Reuse unmodified empty document instead of closing it
    
    Summary:
    - In VI-Mode, using :e filename or :tabe filename in the empty
      unmodified initial document makes Kate crash. The caller is
      deleted by closing the document.
    - Reusing the already opened document avoids the problem.
    
    Test Plan: - use :e filename in VI-Mode from a fresh kate instance
    
    Reviewers: #kate, cullmann
    
    Reviewed By: #kate, cullmann
    
    Subscribers: cullmann
    
    Tags: #kate
    
    Differential Revision: https://phabricator.kde.org/D8713

There is now no longer a code path from KateDocManager::openUrl to KateDocManager::closeDocument as seen in the below crash.