Bug 342222 - Pasting text in exisiting Multiline text box crashes Krita [@ KoShapeController::resourceManager]
Summary: Pasting text in exisiting Multiline text box crashes Krita [@ KoShapeControll...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tools (show other bugs)
Version: 2.9 Beta
Platform: Mint (Ubuntu based) Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-12-26 14:49 UTC by Aniruddha Hardikar
Modified: 2014-12-30 16:20 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aniruddha Hardikar 2014-12-26 14:49:37 UTC
Anytime you paste in text in a multiline box, Krita crashes. This only happens with documents saved earlier. It hasnt't crashed with multiline text boxes created in the same session. Really annoying when you're working with comics, as it becomes nearly impossible to edit text boxes later :(

Also, this crash doesn't seem happen on windows builds. 

I'm using the latest beta build from lime on Linux Mint 17 x64.

Reproducible: Always

Steps to Reproduce:
1. Open a new document of any size and create a multiline text box.
2. Type in anything in the text box. Save and close krita.
3. Open krita again and open the same document.
4. Try to paste in some text in the text box created earlier.

Actual Results:  
Krita crashes.

Expected Results:  
Text should be pasted in.

This crash has been there for the last few builds, but I wasn't sure if I should report it. But I figured  with2.9 just around the corner that I should, since it's an important tool as far as comics are concerned.
Comment 1 bunu 2014-12-26 23:10:44 UTC
[I am a GCI student]

Experiencing the same on Ubuntu 14.10. I am going to paste a backtrace.
Comment 2 bunu 2014-12-27 00:05:07 UTC
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 0x7fdf738508c0 (LWP 3206))]

Thread 6 (Thread 0x7fdf56d27700 (LWP 3207)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fdf71053894 in wait (time=18446744073709551615, this=0x2404350) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=mutex@entry=0x2404300, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007fdf7104f86b in QSemaphore::acquire (this=this@entry=0x2404030, n=n@entry=1) at thread/qsemaphore.cpp:144
#4  0x00007fdf6fc5582e in KisTileDataPooler::waitForWork (this=0x2404020) at /build/buildd/calligra-2.8.6/krita/image/tiles3/kis_tile_data_pooler.cc:162
#5  0x00007fdf6fc55c57 in KisTileDataPooler::run (this=0x2404020) at /build/buildd/calligra-2.8.6/krita/image/tiles3/kis_tile_data_pooler.cc:184
#6  0x00007fdf7105339f in QThreadPrivate::start (arg=0x2404020) at thread/qthread_unix.cpp:349
#7  0x00007fdf6b6b80a5 in start_thread (arg=0x7fdf56d27700) at pthread_create.c:309
#8  0x00007fdf730a277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 5 (Thread 0x7fdf56526700 (LWP 3208)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fdf71053894 in wait (time=18446744073709551615, this=0x23d19e0) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=mutex@entry=0x24045f0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007fdf7104fc73 in QSemaphore::tryAcquire (this=0x24043c0, n=n@entry=1, timeout=timeout@entry=-1) at thread/qsemaphore.cpp:221
#4  0x00007fdf6fc70803 in KisTileDataSwapper::waitForWork (this=this@entry=0x2404058) at /build/buildd/calligra-2.8.6/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#5  0x00007fdf6fc70aaa in KisTileDataSwapper::run (this=0x2404058) at /build/buildd/calligra-2.8.6/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#6  0x00007fdf7105339f in QThreadPrivate::start (arg=0x2404058) at thread/qthread_unix.cpp:349
#7  0x00007fdf6b6b80a5 in start_thread (arg=0x7fdf56526700) at pthread_create.c:309
#8  0x00007fdf730a277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 4 (Thread 0x7fdf39db6700 (LWP 3215)):
#0  0x00007fff69e00a5a in clock_gettime ()
#1  0x00007fdf730b0a9d in __GI___clock_gettime (clock_id=<optimized out>, tp=<optimized out>) at ../sysdeps/unix/clock_gettime.c:115
#2  0x00007fdf710a7865 in do_gettime (frac=<synthetic pointer>, sec=<synthetic pointer>) at tools/qelapsedtimer_unix.cpp:127
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:144
#4  0x00007fdf71183728 in updateCurrentTime (this=0x7fdf2c001178) at kernel/qeventdispatcher_unix.cpp:354
#5  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fdf2c000910, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:186
#6  0x00007fdf71183ee3 in QEventDispatcherUNIX::processEvents (this=0x7fdf2c0008f0, flags=...) at kernel/qeventdispatcher_unix.cpp:936
#7  0x00007fdf711524f1 in QEventLoop::processEvents (this=this@entry=0x7fdf39db5ce0, flags=...) at kernel/qeventloop.cpp:149
#8  0x00007fdf71152805 in QEventLoop::exec (this=this@entry=0x7fdf39db5ce0, flags=...) at kernel/qeventloop.cpp:204
#9  0x00007fdf71050c39 in QThread::exec (this=this@entry=0x299bb50) at thread/qthread.cpp:538
#10 0x00007fdf71134033 in QInotifyFileSystemWatcherEngine::run (this=0x299bb50) at io/qfilesystemwatcher_inotify.cpp:265
#11 0x00007fdf7105339f in QThreadPrivate::start (arg=0x299bb50) at thread/qthread_unix.cpp:349
#12 0x00007fdf6b6b80a5 in start_thread (arg=0x7fdf39db6700) at pthread_create.c:309
#13 0x00007fdf730a277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 3 (Thread 0x7fdf54ec6700 (LWP 3223)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fdf71053894 in wait (time=18446744073709551615, this=0x3559760) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=this@entry=0x35592c8, mutex=mutex@entry=0x35592c0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007fdf7204ce05 in QFileInfoGatherer::run (this=0x35592b0) at dialogs/qfileinfogatherer.cpp:214
#4  0x00007fdf7105339f in QThreadPrivate::start (arg=0x35592b0) at thread/qthread_unix.cpp:349
#5  0x00007fdf6b6b80a5 in start_thread (arg=0x7fdf54ec6700) at pthread_create.c:309
#6  0x00007fdf730a277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 2 (Thread 0x7fdf556c7700 (LWP 3224)):
#0  0x00007fff69e00a5a in clock_gettime ()
#1  0x00007fdf730b0a9d in __GI___clock_gettime (clock_id=<optimized out>, tp=<optimized out>) at ../sysdeps/unix/clock_gettime.c:115
#2  0x00007fdf710a7865 in do_gettime (frac=<synthetic pointer>, sec=<synthetic pointer>) at tools/qelapsedtimer_unix.cpp:127
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:144
#4  0x00007fdf71183728 in updateCurrentTime (this=0x7fdf41f36b08) at kernel/qeventdispatcher_unix.cpp:354
#5  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fdf41f362a0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:186
#6  0x00007fdf71183ee3 in QEventDispatcherUNIX::processEvents (this=0x7fdf4301f010, flags=...) at kernel/qeventdispatcher_unix.cpp:936
#7  0x00007fdf711524f1 in QEventLoop::processEvents (this=this@entry=0x7fdf556c6ce0, flags=...) at kernel/qeventloop.cpp:149
#8  0x00007fdf71152805 in QEventLoop::exec (this=this@entry=0x7fdf556c6ce0, flags=...) at kernel/qeventloop.cpp:204
#9  0x00007fdf71050c39 in QThread::exec (this=this@entry=0x3559860) at thread/qthread.cpp:538
#10 0x00007fdf71134033 in QInotifyFileSystemWatcherEngine::run (this=0x3559860) at io/qfilesystemwatcher_inotify.cpp:265
#11 0x00007fdf7105339f in QThreadPrivate::start (arg=0x3559860) at thread/qthread_unix.cpp:349
#12 0x00007fdf6b6b80a5 in start_thread (arg=0x7fdf556c7700) at pthread_create.c:309
#13 0x00007fdf730a277d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7fdf738508c0 (LWP 3206)):
[KCrash Handler]
#6  KoShapeController::resourceManager (this=this@entry=0x0) at /build/buildd/calligra-2.8.6/libs/flake/KoShapeController.cpp:197
#7  0x00007fdf6beafe74 in TextPasteCommand::TextPasteCommand (this=0x5a188e0, mimeData=0x5367490, document=<optimized out>, shapeController=0x0, canvas=0x3821a10, parent=<optimized out>, pasteAsText=false) at /build/buildd/calligra-2.8.6/libs/kotext/commands/TextPasteCommand.cpp:65
#8  0x00007fdf6bde9ed9 in KoTextEditor::paste (this=0x2c16050, canvas=0x3821a10, mimeData=0x5367490, pasteAsText=true, pasteAsText@entry=false) at /build/buildd/calligra-2.8.6/libs/kotext/KoTextEditor.cpp:646
#9  0x00007fdf5bba6947 in TextTool::paste (this=0x3de08b0) at /build/buildd/calligra-2.8.6/plugins/textshape/TextTool.cpp:1107
#10 0x00007fdf6e0eff4b in KoToolProxy::paste (this=0x3834170) at /build/buildd/calligra-2.8.6/libs/flake/KoToolProxy.cpp:545
#11 0x00007fdf72cad824 in KisPasteActionFactory::run (this=this@entry=0x7fff69cee4d0, view=0x20e63c0) at /build/buildd/calligra-2.8.6/krita/ui/actions/kis_selection_action_factories.cpp:304
#12 0x00007fdf72bbfc27 in KisSelectionManager::paste (this=0x3854ce0) at /build/buildd/calligra-2.8.6/krita/ui/kis_selection_manager.cc:365
#13 0x00007fdf71167a7a in QMetaObject::activate (sender=sender@entry=0x3856880, m=m@entry=0x7fdf72623540 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7fff69cee610) at kernel/qobject.cpp:3567
#14 0x00007fdf71b61bf2 in QAction::triggered (this=this@entry=0x3856880, _t1=false) at .moc/release-shared/moc_qaction.cpp:276
#15 0x00007fdf71b635c3 in QAction::activate (this=0x3856880, event=event@entry=QAction::Trigger) at kernel/qaction.cpp:1257
#16 0x00007fdf71b63b2c in QAction::event (this=<optimized out>, e=e@entry=0x7fff69cee9a0) at kernel/qaction.cpp:1183
#17 0x00007fdf6cc15012 in KAction::event (this=<optimized out>, event=0x7fff69cee9a0) at ../../kdeui/actions/kaction.cpp:131
#18 0x00007fdf71b6811c in QApplicationPrivate::notify_helper (this=this@entry=0x1eea4f0, receiver=receiver@entry=0x3856880, e=e@entry=0x7fff69cee9a0) at kernel/qapplication.cpp:4570
#19 0x00007fdf71b6e870 in QApplication::notify (this=0x7fff69cef5b0, receiver=receiver@entry=0x3856880, e=e@entry=0x7fff69cee9a0) at kernel/qapplication.cpp:4356
#20 0x00007fdf726bbbf7 in KoApplication::notify (this=<optimized out>, receiver=0x3856880, event=0x7fff69cee9a0) at /build/buildd/calligra-2.8.6/libs/main/KoApplication.cpp:617
#21 0x00007fdf7115386d in QCoreApplication::notifyInternal (this=0x7fff69cef5b0, receiver=0x3856880, event=event@entry=0x7fff69cee9a0) at kernel/qcoreapplication.cpp:953
#22 0x00007fdf71b99cb3 in sendEvent (event=0x7fff69cee9a0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#23 QShortcutMap::dispatchEvent (this=this@entry=0x1eea618, e=e@entry=0x7fff69ceecb0) at kernel/qshortcutmap.cpp:887
#24 0x00007fdf71b99e24 in QShortcutMap::tryShortcutEvent (this=0x1eea618, o=o@entry=0x3833be0, e=e@entry=0x7fff69ceecb0) at kernel/qshortcutmap.cpp:367
#25 0x00007fdf71b7009a in QApplication::notify (this=0x7fff69cef5b0, receiver=receiver@entry=0x3833be0, e=e@entry=0x7fff69ceecb0) at kernel/qapplication.cpp:3994
#26 0x00007fdf726bbbf7 in KoApplication::notify (this=<optimized out>, receiver=0x3833be0, event=0x7fff69ceecb0) at /build/buildd/calligra-2.8.6/libs/main/KoApplication.cpp:617
#27 0x00007fdf7115386d in QCoreApplication::notifyInternal (this=0x7fff69cef5b0, receiver=receiver@entry=0x3833be0, event=event@entry=0x7fff69ceecb0) at kernel/qcoreapplication.cpp:953
#28 0x00007fdf71b666d6 in sendSpontaneousEvent (event=event@entry=0x7fff69ceecb0, receiver=receiver@entry=0x3833be0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#29 qt_sendSpontaneousEvent (receiver=receiver@entry=0x3833be0, event=event@entry=0x7fff69ceecb0) at kernel/qapplication.cpp:5568
#30 0x00007fdf71c089e0 in QKeyMapper::sendKeyEvent (keyWidget=keyWidget@entry=0x3833be0, grab=grab@entry=255, type=QEvent::KeyPress, code=86, modifiers=..., text=..., autorepeat=false, count=1, nativeScanCode=55, nativeVirtualKey=118, nativeModifiers=4) at kernel/qkeymapper_x11.cpp:1866
#31 0x00007fdf71c08e62 in QKeyMapperPrivate::translateKeyEvent (this=<optimized out>, keyWidget=keyWidget@entry=0x3833be0, event=0x104000000, event@entry=0x7fff69cef230, grab=grab@entry=false) at kernel/qkeymapper_x11.cpp:1836
#32 0x00007fdf71be248c in QApplication::x11ProcessEvent (this=0x7fff69cef5b0, event=event@entry=0x7fff69cef230) at kernel/qapplication_x11.cpp:3642
#33 0x00007fdf71c0bd90 in QEventDispatcherX11::processEvents (this=0x1eea4b0, flags=...) at kernel/qeventdispatcher_x11.cpp:132
#34 0x00007fdf711524f1 in QEventLoop::processEvents (this=this@entry=0x7fff69cef490, flags=...) at kernel/qeventloop.cpp:149
#35 0x00007fdf71152805 in QEventLoop::exec (this=this@entry=0x7fff69cef490, flags=...) at kernel/qeventloop.cpp:204
#36 0x00007fdf71157f67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1225
#37 0x00007fdf71b664dc in QApplication::exec () at kernel/qapplication.cpp:3828
#38 0x00007fdf733c3901 in kdemain (argc=<optimized out>, argv=<optimized out>) at /build/buildd/calligra-2.8.6/krita/main.cc:108
#39 0x00007fdf72fc9ec5 in __libc_start_main (main=0x4006d0 <main(int, char**)>, argc=1, argv=0x7fff69cef6f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff69cef6e8) at libc-start.c:287
#40 0x00000000004006fe in _start ()
Comment 3 peat 2014-12-27 21:29:09 UTC
I can't reproduce this on my  Linux O.S 64_Bit. From the back trace above it also looks like a linux build it is failing on
Comment 4 peat 2014-12-27 21:32:37 UTC
Ah ok, I agree it crashes when you "paste" more text into the multiline box, I was just adding text via the keyboard and everything seemed fine
Comment 5 T Zachmann 2014-12-30 16:20:53 UTC
Git commit 39771484beaa03ed55429a05021d00d7278af53c by Thorsten Zachmann.
Committed on 30/12/2014 at 16:06.
Pushed by zachmann into branch 'calligra/2.9'.

Fix crash reported in bug 342222

For shapes that are created in the document a KoShapeController is set. However
when loading a shape this is not set as it is not available in the factory. This
results in a crash when pasting as there the KoShapeController is needed.
Therefore create a KoShapeController which can be set on text shapes during
loading. This is done the same in kopageapp and words.
REVIEW: 121733

M  +4    -0    krita/ui/KisDocument.cpp

http://commits.kde.org/calligra/39771484beaa03ed55429a05021d00d7278af53c