Bug 349320

Summary: Kate segfaults when closing edited file
Product: [Applications] kate Reporter: Vit Pelcak <vit>
Component: applicationAssignee: KWrite Developers <kwrite-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: christoph
Priority: NOR    
Version First Reported In: 5.0.0   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Vit Pelcak 2015-06-18 08:02:46 UTC
Open new file, edit it, close it and ignore changes.

(gdb) bt full
#0  KateMainWindow::queueModifiedOnDisc (this=0x8055a0, doc=0x21bf2e0)
    at /usr/src/debug/kate-15.04.2/kate/src/katemainwindow.cpp:1043
        modOnDisk = <optimized out>
#1  0x00007ffff7bae401 in KateMainWindow::qt_static_metacall (_o=0x8055a0, _c=<optimized out>, _id=<optimized out>, _a=0x210cdf0)
    at /usr/src/debug/kate-15.04.2/build/kate/src/moc_katemainwindow.cpp:388
No locals.
#2  0x00007ffff3221b66 in QObject::event (this=this@entry=0x8055a0, e=e@entry=0x1ba2340) at kernel/qobject.cpp:1245
        mce = 0x1ba2340
        sw = {receiver = 0x8055a0, previousSender = 0x0, currentSender = {sender = 0x0, signal = -1, ref = 1}, switched = true}
#3  0x00007ffff43af4d4 in QWidget::event (this=this@entry=0x8055a0, event=event@entry=0x1ba2340) at kernel/qwidget.cpp:9087
No locals.
#4  0x00007ffff44bc01b in QMainWindow::event (this=this@entry=0x8055a0, event=event@entry=0x1ba2340)
    at widgets/qmainwindow.cpp:1495
No locals.
#5  0x00007ffff6728c47 in KMainWindow::event (this=this@entry=0x8055a0, ev=ev@entry=0x1ba2340)
    at /usr/src/debug/kxmlgui-5.10.0/src/kmainwindow.cpp:821
No locals.
#6  0x00007ffff675ff05 in KXmlGuiWindow::event (this=0x8055a0, ev=0x1ba2340)
    at /usr/src/debug/kxmlgui-5.10.0/src/kxmlguiwindow.cpp:118
        ret = <optimized out>
#7  0x00007ffff436fbac in QApplicationPrivate::notify_helper (this=this@entry=0x60f520, receiver=receiver@entry=0x8055a0, 
    e=e@entry=0x1ba2340) at kernel/qapplication.cpp:3720
        consumed = <optimized out>
#8  0x00007ffff4374a00 in QApplication::notify (this=0x7fffffffdb70, receiver=0x8055a0, e=0x1ba2340)
    at kernel/qapplication.cpp:3503
        w = 0x8055a0
        extra = <optimized out>
        isProxyWidget = <optimized out>
        res = <optimized out>
#9  0x00007ffff31f14b5 in QCoreApplication::notifyInternal (this=0x7fffffffdb70, receiver=0x8055a0, event=event@entry=0x1ba2340)
    at kernel/qcoreapplication.cpp:935
        threadData = 0x60dce0
        loopLevelCounter = {threadData = 0x60dce0}
        result = false
        cbdata = {0x8055a0, 0x1ba2340, 0x7fffffffd5d0}
        d = <optimized out>
#10 0x00007ffff31f334f in sendEvent (event=0x1ba2340, receiver=<optimized out>) at kernel/qcoreapplication.h:228
No locals.
#11 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x60dce0)
    at kernel/qcoreapplication.cpp:1552
        e = 0x1ba2340
        pe = <optimized out>
        r = <optimized out>
        unlocker = {m = <synthetic pointer>}
        event_deleter = {d = 0x1ba2340}
        locker = {val = 6348040}
        startOffset = 0
        i = @0x60dcfc: 22
        cleanup = {receiver = 0x0, event_type = 0, data = 0x60dce0, exceptionCaught = true}
#12 0x00007ffff31f3988 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0)
    at kernel/qcoreapplication.cpp:1410
        data = <optimized out>
#13 0x00007ffff3249383 in postEventSourceDispatch (s=0x658840) at kernel/qeventdispatcher_glib.cpp:271
        source = 0x658840
#14 0x00007fffee8d9c74 in g_main_dispatch (context=0x7fffdc0016f0) at gmain.c:3122
        dispatch = 0x7ffff3249370 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x0
        callback = 0x0
        cb_funcs = <optimized out>
        cb_data = 0x0
        need_destroy = <optimized out>
        source = 0x658840
        current = 0x60bd80
        i = 0
#15 g_main_context_dispatch (context=context@entry=0x7fffdc0016f0) at gmain.c:3737
No locals.
#16 0x00007fffee8d9ec8 in g_main_context_iterate (context=context@entry=0x7fffdc0016f0, block=block@entry=1, 
    dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3808
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 15
        fds = 0x1c5e410
#17 0x00007fffee8d9f6c in g_main_context_iteration (context=0x7fffdc0016f0, may_block=1) at gmain.c:3869
        retval = <optimized out>
#18 0x00007ffff32487fc in QEventDispatcherGlib::processEvents (this=0x6a9c00, flags=...) at kernel/qeventdispatcher_glib.cpp:418
        d = 0x64bbb0
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#19 0x00007ffff31ef40b in QEventLoop::exec (this=this@entry=0x7fffffffd8a0, flags=..., flags@entry=...)
    at kernel/qeventloop.cpp:204
        locker = {val = 6353056}
        ref = {d = 0x1c5e380, locker = @0x7fffffffd820, exceptionCaught = true}
        d = 0x1c5e380
#20 0x00007ffff31f6a96 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
        threadData = 0x60dce0
        eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff362c470 <vtable for QEventLoop+16>, static staticMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff333df80 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff333de60 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff3229840 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x1c5e380}, static staticQtMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff3387cc0 <qt_meta_stringdata_Qt>, data = 0x7ffff3385440 <qt_meta_data_Qt>, 
                static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x7ffff3628e80 <QObject::staticMetaObject>, 
              stringdata = 0x7ffff339ba80 <qt_meta_stringdata_QEventLoop>, data = 0x7ffff339ba20 <qt_meta_data_QEventLoop>, 
              static_metacall = 0x7ffff329d820 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}}
---Type <return> to continue, or q <return> to quit---
        returnCode = <optimized out>
#21 0x00007ffff3bde0cc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1507
No locals.
#22 0x00007ffff436c275 in QApplication::exec () at kernel/qapplication.cpp:2956
No locals.
#23 0x00007ffff7ba9dae in kdemain (argc=1, argv=<optimized out>) at /usr/src/debug/kate-15.04.2/kate/src/main.cpp:439
        gotoColumnOption = {d = {d = 0x6fc7e0}}
        readStdInOption = {d = {d = 0x6fc940}}
        aboutData = {d = 0x6d40f0}
        startAnonymousSessionOption = {d = {d = 0x6ec370}}
        app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {
                _vptr.QObject = 0x7ffff4a50a10 <vtable for QApplication+16>, static staticMetaObject = {d = {superdata = 0x0, 
                    stringdata = 0x7ffff333df80 <qt_meta_stringdata_QObject>, data = 0x7ffff333de60 <qt_meta_data_QObject>, 
                    static_metacall = 0x7ffff3229840 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                    relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x60f520}, static staticQtMetaObject = {d = {
                    superdata = 0x0, stringdata = 0x7ffff3387cc0 <qt_meta_stringdata_Qt>, 
                    data = 0x7ffff3385440 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, 
                    extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff3628e80 <QObject::staticMetaObject>, 
                  stringdata = 0x7ffff339bc60 <qt_meta_stringdata_QCoreApplication>, 
                  data = 0x7ffff339bb40 <qt_meta_data_QCoreApplication>, 
                  static_metacall = 0x7ffff329d9a0 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffdb70}, static staticMetaObject = {d = {
                superdata = 0x7ffff362c5c0 <QCoreApplication::staticMetaObject>, 
                stringdata = 0x7ffff3f413a0 <qt_meta_stringdata_QGuiApplication>, 
                data = 0x7ffff3f411a0 <qt_meta_data_QGuiApplication>, 
                static_metacall = 0x7ffff3be72f0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x7ffff41f7a80 <QGuiApplication::staticMetaObject>, 
              stringdata = 0x7ffff46fbcc0 <qt_meta_stringdata_QApplication>, data = 0x7ffff46fbb40 <qt_meta_data_QApplication>, 
              static_metacall = 0x7ffff4372100 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}}
        tempfileOption = {d = {d = 0x6fcaa0}}
        parser = {d = 0x6fefc0}
        startSessionOption = {d = {d = 0x6fc410}}
        usePidOption = {d = {d = 0x6fd0c0}}
        gotoLineOption = {d = {d = 0x6fe4f0}}
        kateApp = {<QObject> = {_vptr.QObject = 0x7ffff7dd3b30 <vtable for KateApp+16>, static staticMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff333df80 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff333de60 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff3229840 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x6c7970}, static staticQtMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff3387cc0 <qt_meta_stringdata_Qt>, data = 0x7ffff3385440 <qt_meta_data_Qt>, 
                static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x7ffff3628e80 <QObject::staticMetaObject>, stringdata = 0x7ffff7bc46e0 <qt_meta_stringdata_KateApp>, 
              data = 0x7ffff7bc4560 <qt_meta_data_KateApp>, 
              static_metacall = 0x7ffff7baf360 <KateApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}, static s_self = 0x7fffffffdbc0, m_args = @0x7fffffffda10, 
          m_docManager = 0x6fcd60, m_pluginManager = 0x7be9e0, m_sessionManager = 0x7d1dd0, m_adaptor = 0x77f8a0, 
          m_mainWindows = {<QListSpecialMethods<KateMainWindow*>> = {<No data fields>}, {p = {static shared_null = {ref = {
                    atomic = {_q_value = -1}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0xffa710}, d = 0xffa710}}, 
          m_wrapper = 0x6f9950}
        dbusService = {<QObject> = {_vptr.QObject = 0x7ffff5d77bd0 <vtable for KDBusService+16>, static staticMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff333df80 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff333de60 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff3229840 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x1c148e0}, static staticQtMetaObject = {d = {
                superdata = 0x0, stringdata = 0x7ffff3387cc0 <qt_meta_stringdata_Qt>, data = 0x7ffff3385440 <qt_meta_data_Qt>, 
                static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = 0x7ffff3628e80 <QObject::staticMetaObject>, 
              stringdata = 0x7ffff5b75680 <qt_meta_stringdata_KDBusService>, data = 0x7ffff5b75560 <qt_meta_data_KDBusService>, 
              static_metacall = 0x7ffff5b72ba0 <KDBusService::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x1c11e50}
        startNewInstanceOption = {d = {d = 0x6fe2a0}}
        startBlockingOption = {d = {d = 0x6fd1c0}}
        useEncodingOption = {d = {d = 0x6fe890}}
#24 0x00007ffff77b18c5 in __libc_start_main (main=0x4007c0 <main(int, char**)>, argc=1, argv=0x7fffffffdd28, 
    init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd18) at libc-start.c:289
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 6987939756484401251, 4196304, 140737488346400, 0, 0, 
                -6987939755498071965, -6987958410818938781}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 
              0x4008d0 <__libc_csu_init>, 0x7fffffffdd28}, data = {prev = 0x0, cleanup = 0x0, canceltype = 4196560}}}
        not_first_call = <optimized out>
#25 0x00000000004007f9 in _start () at ../sysdeps/x86_64/start.S:118
No locals.

Reproducible: Always
Comment 1 Vit Pelcak 2015-06-18 08:04:05 UTC
kate-15.04.2-3.1.x86_64
Comment 2 Vit Pelcak 2015-06-18 08:05:10 UTC
Program received signal SIGSEGV, Segmentation fault.
KateMainWindow::queueModifiedOnDisc (this=0x8055a0, doc=0x21bf2e0)
    at /usr/src/debug/kate-15.04.2/kate/src/katemainwindow.cpp:1043
1043        bool modOnDisk = (uint)KateApp::self()->documentManager()->documentInfo(doc)->modifiedOnDisc;
Comment 3 Christoph Cullmann 2016-05-28 19:10:21 UTC
commit 34b3f6fa4cbe218d2718d5a851b6c49f51fa7f6f
Author: Kåre Särs <kare.sars@iki.fi>
Date:   Tue Jul 7 13:37:26 2015 +0300

    Fix crash on closing of unsaved, untitled document discarding changes
    
    The KateDocumentInfo pointer was not checked before use.