Bug 315963 - Krita crashes while using Ctrl+Z(undo) multiple times in textline edit tool
Summary: Krita crashes while using Ctrl+Z(undo) multiple times in textline edit tool
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: 2.7 Pre-Alpha
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-01 15:47 UTC by Somsubhra
Modified: 2013-06-24 13:28 UTC (History)
2 users (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 Somsubhra 2013-03-01 15:47:29 UTC
Application: krita (2.7 Pre-Alpha)
KDE Platform Version: 4.9.4 (Compiled from sources)
Qt Version: 4.8.3
Operating System: Linux 3.5.0-17-generic x86_64
Distribution: Linux Mint 14 Nadia

-- Information about the crash:
- What I was doing when the application crashed:
While using the textline edit tool for editing text, using Ctrl+Z multiple times(or the same number of times as the length of the text you entered), Krita crashes

The crash can be reproduced every time.

-- Backtrace:
Application: Krita (krita), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f930ffee780 (LWP 4483))]

Thread 6 (Thread 0x7f92f11f3700 (LWP 4484)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f930d4fc04b in wait (time=18446744073709551615, this=0x1b19da0) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1b19d50, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f930d4f7f67 in QSemaphore::acquire (this=0x1b19ad0, n=1) at thread/qsemaphore.cpp:144
#4  0x00007f92f9b9d78e in KisTileDataPooler::waitForWork (this=this@entry=0x1b19ac0) at /home/somsubhra/kde4/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:162
#5  0x00007f92f9b9dedb in KisTileDataPooler::run (this=0x1b19ac0) at /home/somsubhra/kde4/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:184
#6  0x00007f930d4fbaec in QThreadPrivate::start (arg=0x1b19ac0) at thread/qthread_unix.cpp:338
#7  0x00007f93092d6e9a in start_thread (arg=0x7f92f11f3700) at pthread_create.c:308
#8  0x00007f930f54fcbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#9  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f92f09f2700 (LWP 4485)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f930d4fc04b in wait (time=18446744073709551615, this=0x1b1a130) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1b1a0e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f930d4f8338 in QSemaphore::tryAcquire (this=0x1b19e10, n=1, timeout=<optimized out>) at thread/qsemaphore.cpp:221
#4  0x00007f92f9bbb4ca in KisTileDataSwapper::run (this=0x1b19af8) at /home/somsubhra/kde4/src/calligra/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007f930d4fbaec in QThreadPrivate::start (arg=0x1b19af8) at thread/qthread_unix.cpp:338
#6  0x00007f93092d6e9a in start_thread (arg=0x7f92f09f2700) at pthread_create.c:308
#7  0x00007f930f54fcbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#8  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f92ea9ad700 (LWP 4490)):
#0  0x00007f930f549023 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f930d624023 in qt_safe_select (nfds=23, fdread=0x7f92d4000aa8, fdwrite=0x7f92d4000d40, fdexcept=0x7f92d4000fd8, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f930d6289e4 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f92d40008f0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f930d629572 in QEventDispatcherUNIX::processEvents (this=0x7f92d50fe1e0, flags=...) at kernel/qeventdispatcher_unix.cpp:926
#4  0x00007f930d5f72bf in QEventLoop::processEvents (this=this@entry=0x7f92ea9acdd0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f930d5f7548 in QEventLoop::exec (this=0x7f92ea9acdd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f930d4f8b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f930d5d79af in QInotifyFileSystemWatcherEngine::run (this=0x1f7d7a0) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f930d4fbaec in QThreadPrivate::start (arg=0x1f7d7a0) at thread/qthread_unix.cpp:338
#9  0x00007f93092d6e9a in start_thread (arg=0x7f92ea9ad700) at pthread_create.c:308
#10 0x00007f930f54fcbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f92cfd54700 (LWP 4504)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f930d4fc04b in wait (time=18446744073709551615, this=0x3518560) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x35180e0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f930e4c9f16 in QFileInfoGatherer::run (this=0x35180d0) at dialogs/qfileinfogatherer.cpp:214
#4  0x00007f930d4fbaec in QThreadPrivate::start (arg=0x35180d0) at thread/qthread_unix.cpp:338
#5  0x00007f93092d6e9a in start_thread (arg=0x7f92cfd54700) at pthread_create.c:308
#6  0x00007f930f54fcbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f92ced52700 (LWP 4505)):
#0  0x00007f930f549023 in select () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f930d624023 in qt_safe_select (nfds=41, fdread=0x7f92b8000ac8, fdwrite=0x7f92b8000d60, fdexcept=0x7f92b8000ff8, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f930d6289e4 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7f92b8000910, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f930d629572 in QEventDispatcherUNIX::processEvents (this=0x7f92b80008f0, flags=...) at kernel/qeventdispatcher_unix.cpp:926
#4  0x00007f930d5f72bf in QEventLoop::processEvents (this=this@entry=0x7f92ced51dd0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f930d5f7548 in QEventLoop::exec (this=0x7f92ced51dd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f930d4f8b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f930d5d79af in QInotifyFileSystemWatcherEngine::run (this=0x3518800) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f930d4fbaec in QThreadPrivate::start (arg=0x3518800) at thread/qthread_unix.cpp:338
#9  0x00007f93092d6e9a in start_thread (arg=0x7f92ced52700) at pthread_create.c:308
#10 0x00007f930f54fcbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f930ffee780 (LWP 4483)):
[KCrash Handler]
#6  data (this=0x8) at ../../include/QtCore/../../src/corelib/tools/qshareddata.h:145
#7  QFont::QFont (this=0x7fffde5f2f70, font=...) at text/qfont.cpp:846
#8  0x00007f92f796e06d in ArtisticTextRange::font (this=<optimized out>) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/ArtisticTextRange.cpp:64
#9  0x00007f92f7966709 in ArtisticTextShape::charExtentsAt (this=<optimized out>, charIndex=<optimized out>) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/ArtisticTextShape.cpp:851
#10 0x00007f92f79704dd in ArtisticTextTool::createTextCursorShape (this=this@entry=0x4745340) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/ArtisticTextTool.cpp:683
#11 0x00007f92f7971f36 in ArtisticTextTool::setTextCursorInternal (this=0x4745340, textCursor=0) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/ArtisticTextTool.cpp:673
#12 0x00007f92f797204c in ArtisticTextTool::setTextCursor (this=0x4745340, textShape=<optimized out>, textCursor=<optimized out>) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/ArtisticTextTool.cpp:640
#13 0x00007f92f797b299 in AddTextRangeCommand::undo (this=0x2378af0) at /home/somsubhra/kde4/src/calligra/plugins/artistictextshape/AddTextRangeCommand.cpp:71
#14 0x00007f930b4fdbfe in KUndo2QStack::undo (this=0x1e57070) at /home/somsubhra/kde4/src/calligra/libs/kundo2/kundo2stack.cpp:684
#15 0x00007f92fa102b90 in KisDoc2::UndoStack::undo (this=0x1e57070) at /home/somsubhra/kde4/src/calligra/krita/ui/kis_doc2_p.h:46
#16 0x00007f930d60df5f in QMetaObject::activate (sender=0x24b5720, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffde5f3280) at kernel/qobject.cpp:3547
#17 0x00007f930dfd3a32 in QAction::triggered (this=this@entry=0x24b5720, _t1=false) at .moc/release-shared/moc_qaction.cpp:277
#18 0x00007f930dfd3c20 in QAction::activate (this=0x24b5720, event=event@entry=QAction::Trigger) at kernel/qaction.cpp:1257
#19 0x00007f930dfd3d87 in QAction::event (this=<optimized out>, e=<optimized out>) at kernel/qaction.cpp:1183
#20 0x00007f930ec08867 in KAction::event (this=<optimized out>, event=0x7fffde5f3830) at ../../kdeui/actions/kaction.cpp:131
#21 0x00007f930dfd9e9c in QApplicationPrivate::notify_helper (this=this@entry=0x123ee20, receiver=receiver@entry=0x24b5720, e=e@entry=0x7fffde5f3830) at kernel/qapplication.cpp:4562
#22 0x00007f930dfde30a in QApplication::notify (this=0x7fffde5f4b70, receiver=0x24b5720, e=0x7fffde5f3830) at kernel/qapplication.cpp:4423
#23 0x00007f930f162858 in KoApplication::notify (this=<optimized out>, receiver=0x24b5720, event=0x7fffde5f3830) at /home/somsubhra/kde4/src/calligra/libs/main/KoApplication.cpp:537
#24 0x00007f930d5f856e in QCoreApplication::notifyInternal (this=0x7fffde5f4b70, receiver=0x24b5720, event=0x7fffde5f3830) at kernel/qcoreapplication.cpp:915
#25 0x00007f930e00ad74 in sendEvent (event=0x7fffde5f3830, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#26 QShortcutMap::dispatchEvent (this=this@entry=0x123ef40, e=e@entry=0x7fffde5f3e10) at kernel/qshortcutmap.cpp:884
#27 0x00007f930e00c3a3 in QShortcutMap::tryShortcutEvent (this=0x123ef40, o=<optimized out>, e=0x7fffde5f3e10) at kernel/qshortcutmap.cpp:364
#28 0x00007f930dfdffe9 in QApplication::notify (this=0x7fffde5f4b70, receiver=0x3763960, e=0x7fffde5f3e10) at kernel/qapplication.cpp:3986
#29 0x00007f930f162858 in KoApplication::notify (this=<optimized out>, receiver=0x3763960, event=0x7fffde5f3e10) at /home/somsubhra/kde4/src/calligra/libs/main/KoApplication.cpp:537
#30 0x00007f930d5f856e in QCoreApplication::notifyInternal (this=0x7fffde5f4b70, receiver=0x3763960, event=0x7fffde5f3e10) at kernel/qcoreapplication.cpp:915
#31 0x00007f930e07ae79 in QKeyMapper::sendKeyEvent (keyWidget=keyWidget@entry=0x3763960, grab=grab@entry=false, type=QEvent::KeyPress, code=90, modifiers=..., text=..., autorepeat=autorepeat@entry=false, count=1, nativeScanCode=52, nativeVirtualKey=122, nativeModifiers=20) at kernel/qkeymapper_x11.cpp:1866
#32 0x00007f930e07b2b1 in QKeyMapperPrivate::translateKeyEvent (this=0x127d4e0, keyWidget=0x3763960, event=0x7fffde5f4850, grab=<optimized out>) at kernel/qkeymapper_x11.cpp:1836
#33 0x00007f930e056ed9 in QApplication::x11ProcessEvent (this=0x7fffde5f4b70, event=0x7fffde5f4850) at kernel/qapplication_x11.cpp:3630
#34 0x00007f930e07f9d9 in QEventDispatcherX11::processEvents (this=0x11b6b30, flags=...) at kernel/qeventdispatcher_x11.cpp:132
#35 0x00007f930d5f72bf in QEventLoop::processEvents (this=this@entry=0x7fffde5f4ac0, flags=...) at kernel/qeventloop.cpp:149
#36 0x00007f930d5f7548 in QEventLoop::exec (this=0x7fffde5f4ac0, flags=...) at kernel/qeventloop.cpp:204
#37 0x00007f930d5fc708 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1187
#38 0x00007f930fa012e2 in kdemain (argc=<optimized out>, argv=<optimized out>) at /home/somsubhra/kde4/src/calligra/krita/main.cc:80
#39 0x00007f930f47d76d in __libc_start_main (main=0x400680 <main(int, char**)>, argc=1, ubp_av=0x7fffde5f4c88, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffde5f4c78) at libc-start.c:226
#40 0x00000000004006b1 in _start ()

Possible duplicates by query: bug 313073, bug 308401, bug 305950.

Reported using DrKonqi
Comment 1 Halla Rempt 2013-03-30 13:10:30 UTC
Hi Somsubhra,

I guess you were editing a text on a path, right? And then tried to undo the creation of the shape. I've seen this bug before -- bug 313073, bug 308401, bug 305950 are the same -- but I thought it had been fixed. Apparently not :-( I'm not sure about the right solution, there is some weird stuff going in the destructor.
Comment 2 Robert Wloch 2013-05-09 08:34:32 UTC
The undo-crash can be reproduced very easily:
1. Start Krita and create new image with the default suggestions
2. Choose text tool and click and drag a textbox
3. Select the _full_ default text, that's inserted, e.g. with shift+arrow keys
4. Type any character to replace the selection
5. Try to undo with Ctrl+z -> Krita crashes
Comment 3 Halla Rempt 2013-06-24 13:27:53 UTC
Git commit ef1f66e247ae60b7987a0fee7e7e750b41f3df31 by Boudewijn Rempt.
Committed on 24/06/2013 at 13:25.
Pushed by rempt into branch 'master'.

Check whether the index into m_ranges is valid
Related: bug 319693, bug 318003

M  +8    -4    plugins/artistictextshape/ArtisticTextShape.cpp

http://commits.kde.org/calligra/ef1f66e247ae60b7987a0fee7e7e750b41f3df31
Comment 4 Halla Rempt 2013-06-24 13:28:04 UTC
Git commit e1ca57c2b520e7fefefc3d1dcf854e3b5e2328b7 by Boudewijn Rempt.
Committed on 24/06/2013 at 13:25.
Pushed by rempt into branch 'calligra/2.7'.

Check whether the index into m_ranges is valid
Related: bug 319693, bug 318003

M  +8    -4    plugins/artistictextshape/ArtisticTextShape.cpp

http://commits.kde.org/calligra/e1ca57c2b520e7fefefc3d1dcf854e3b5e2328b7
Comment 5 Halla Rempt 2013-06-24 13:28:56 UTC
Git commit c1d31f07b5032e5d9d3171af1643d2328f67f265 by Boudewijn Rempt.
Committed on 24/06/2013 at 13:25.
Pushed by rempt into branch 'calligra/2.6'.

Check whether the index into m_ranges is valid
Related: bug 319693, bug 318003

M  +8    -4    plugins/artistictextshape/ArtisticTextShape.cpp

http://commits.kde.org/calligra/c1d31f07b5032e5d9d3171af1643d2328f67f265