Version: 4.2.96 (using KDE 4.2.96) OS: Linux Installed from: Fedora RPMs steps to reproduce: 1)open attached file crashme.js 2)put cursor on marked line 3)press ctrl+shift+minus 4)press up key actual result: crash expected result: cursor moved up
Created attachment 35479 [details] reproducer file
Created attachment 35480 [details] backtrace and backtrace full
paste backtrace #0 KateLineLayout::viewLineCount (this=<value optimized out>, this=<value optimized out>) at /usr/src/debug/kdelibs-4.2.96/kate/render/katelinelayout.cpp:173 #1 KateLineLayout::viewLine (this=<value optimized out>, this=<value optimized out>) at /usr/src/debug/kdelibs-4.2.96/kate/render/katelinelayout.cpp:179 #2 0x00007fc89fe1f1ce in KateLayoutCache::textLayout (this=<value optimized out>, realLine=24, _viewLine=-1) at /usr/src/debug/kdelibs-4.2.96/kate/render/katelayoutcache.cpp:346 #3 0x00007fc89fe6c360 in KateViewInternal::previousLayout (this=0x2869220) at /usr/src/debug/kdelibs-4.2.96/kate/view/kateviewinternal.cpp:1282 #4 0x00007fc89fe742cf in KateViewInternal::cursorUp (this=0x2869220, sel=false) at /usr/src/debug/kdelibs-4.2.96/kate/view/kateviewinternal.cpp:1462 #5 0x00007fc89fe5e9fd in KateView::qt_metacall (this=0x285e050, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffc40e1c10) at /usr/src/debug/kdelibs-4.2.96/x86_64-redhat-linux-gnu/kate/kateview.moc:371 #6 0x00000031b4754fdc in QMetaObject::activate (sender=0x29245a0, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x1) at kernel/qobject.cpp:3113 #7 0x0000003f2c188fe7 in QAction::triggered (this=0x7fffc40e1a20, _t1=false) at .moc/release-shared/moc_qaction.cpp:236 #8 0x0000003f2c18a42f in QAction::activate (this=0x29245a0, event=<value optimized out>) at kernel/qaction.cpp:1160 #9 0x0000003f2c18ceef in QAction::event (this=0x7fffc40e1a20, e=<value optimized out>) at kernel/qaction.cpp:1079 #10 0x00007fc8c19bb5cd in KAction::event (this=0x7fffc40e1a20, event=0x7fffc40e2120) at /usr/src/debug/kdelibs-4.2.96/kdeui/actions/kaction.cpp:88 #11 0x0000003f2c18ee2c in QApplicationPrivate::notify_helper (this=0x1f10890, receiver=0x29245a0, e=0x7fffc40e2120) at kernel/qapplication.cpp:4056 #12 0x0000003f2c195e5e in QApplication::notify (this=0x7fffc40e4a20, receiver=0x29245a0, e=0x7fffc40e2120) at kernel/qapplication.cpp:4021 #13 0x00007fc8c1a8c456 in KApplication::notify (this=0x7fffc40e4a20, receiver=0x29245a0, event=0x7fffc40e2120) at /usr/src/debug/kdelibs-4.2.96/kdeui/kernel/kapplication.cpp:302 #14 0x00000031b473fcbc in QCoreApplication::notifyInternal (this=0x7fffc40e4a20, receiver=0x29245a0, event=0x7fffc40e2120) at kernel/qcoreapplication.cpp:610 #15 0x0000003f2c1c35e6 in QCoreApplication::sendEvent (event=<value optimized out>, receiver=<value optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:213 #16 QShortcutMap::dispatchEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qshortcutmap.cpp:884 #17 0x0000003f2c1c5457 in QShortcutMap::tryShortcutEvent (this=0x1f109a8, o=<value optimized out>, e=0x7fffc40e25b0) at kernel/qshortcutmap.cpp:369 #18 0x0000003f2c196d8e in QApplication::notify (this=0x7fffc40e4a20, receiver=0x2869220, e=0x7fffc40e25b0) at kernel/qapplication.cpp:3645 #19 0x00007fc8c1a8c456 in KApplication::notify (this=0x7fffc40e4a20, receiver=0x2869220, event=0x7fffc40e25b0) at /usr/src/debug/kdelibs-4.2.96/kdeui/kernel/kapplication.cpp:302 #20 0x00000031b473fcbc in QCoreApplication::notifyInternal (this=0x7fffc40e4a20, receiver=0x2869220, event=0x7fffc40e25b0) at kernel/qcoreapplication.cpp:610 #21 0x0000003f2c21e4ba in QKeyMapper::sendKeyEvent (keyWidget=0x2869220, grab=<value optimized out>, type=QEvent::KeyPress, code=16777235, modifiers=<value optimized out>, text=@0x7fffc40e27d0, autorepeat=false, count=1, nativeScanCode=111, nativeVirtualKey=65362, nativeModifiers=16) at kernel/qkeymapper_x11.cpp:1675 #22 0x0000003f2c220a20 in QKeyMapperPrivate::translateKeyEvent (this=0x1f4dac0, keyWidget=0x2869220, event=<value optimized out>, grab=false) at kernel/qkeymapper_x11.cpp:1645 #23 0x0000003f2c1fa0a3 in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fffc40e4390) at kernel/qapplication_x11.cpp:3443 #24 0x0000003f2c2223bc in x11EventSourceDispatch (s=<value optimized out>, callback=<value optimized out>, user_data=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:146 #25 0x0000003030c37afe in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #26 0x0000003030c3b1d8 in ?? () from /lib64/libglib-2.0.so.0 #27 0x0000003030c3b300 in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #28 0x00000031b47683b6 in QEventDispatcherGlib::processEvents (this=0x1ee7d90, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327 #29 0x0000003f2c221b6e in QGuiEventDispatcherGlib::processEvents (this=0x7fffc40e1a20, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202 #30 0x00000031b473e5f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 36}) at kernel/qeventloop.cpp:149 #31 0x00000031b473e9c4 in QEventLoop::exec (this=0x7fffc40e46c0, flags={i = 0}) at kernel/qeventloop.cpp:201 #32 0x00000031b4740b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888 #33 0x0000000000457de8 in main (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/debug/krusader-6310/krusader/main.cpp:268
This could have some relation with bug 200796. Thanks
*** Bug 211384 has been marked as a duplicate of this bug. ***
*** Bug 213328 has been marked as a duplicate of this bug. ***
Problem is because KateViewInternal::m_displayCursor does not get repositioned (i.e. it's hidden). Hence it's invalid (it points to some hidden line) and cannot be found in KateCodeFoldingTree::getRealLine. Dominik, I see you once did something like this when folding a local block. I think we need something like that also here. Should I try to make collapseToplevel also return the last visible line and use that in a KateView slot, similar to slotCollapseLocal ? Can I just add stuff to KateView or should I only add stuff to KateViewInternal?
Yes, the display cursor is not updated and thus the crash. It needs to be updated correctly in all views (active + inactive/splitted views). Everything that's only needed in the View should be in KateViewInternal. KateView implements all the KTE::View+View-extension interfaces and should stay rather clean. It's supposed to be the interface for all other katepart code, i.e. no access to KateViewInternal anywhere else but KateView.
SVN commit 1064050 by pletourn: Prevent crash when folding BUG:200858 M +17 -14 syntax/katecodefolding.cpp M +8 -1 view/kateviewinternal.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1064050
Pascal, does that maybe also fix bug #180082 ?
I doubt it
*** Bug 164772 has been marked as a duplicate of this bug. ***
SVN commit 1077737 by mwolff: backport r1064050 by pletourn: Prevent crash when folding CCBUG: 200858 M +17 -14 syntax/katecodefolding.cpp M +8 -1 view/kateviewinternal.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1077737
See bug 226322: Pletourn - has there been another commit other than r1064050 that was needed to fix this crash? I only backported that one to 4.3.5.
*** Bug 233432 has been marked as a duplicate of this bug. ***
*** Bug 235799 has been marked as a duplicate of this bug. ***
Git commit 5888f4b7020115f9bf9b55ff12d33e212d4258f4 by Dominik Haumann. Committed on 16/04/2013 at 15:29. Pushed by dhaumann into branch 'master'. make sure cursor stays visible/valid when text is folded FIXED-IN: 4.11 Related: bug 311866 M +9 -0 part/buffer/katetextfolding.cpp M +11 -1 part/buffer/katetextfolding.h M +9 -7 part/view/kateviewinternal.cpp http://commits.kde.org/kate/5888f4b7020115f9bf9b55ff12d33e212d4258f4