Bug 289279 - Krita crashes in opengtl when converting from 8 bit to 16 bit float
Summary: Krita crashes in opengtl when converting from 8 bit to 16 bit float
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-18 13:33 UTC by Halla Rempt
Modified: 2012-02-11 10:44 UTC (History)
1 user (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 Halla Rempt 2011-12-18 13:33:49 UTC
Application: krita (2.4 Beta 5)
KDE Platform Version: 4.7.3 (4.7.3) "release 1"
Qt Version: 4.7.4
Operating System: Linux 2.6.37.6-0.9-desktop x86_64
Distribution: "openSUSE 11.4 (x86_64)"

-- Information about the crash:
I loaded a two-layer 8 bit integer ora file, then selected image/convert image type and select 16 bit floating point rgb as target.

The crash can be reproduced every time.

-- Backtrace:
Application: Krita (krita), signal: Segmentation fault
[Current thread is 1 (Thread 0x7fc25d21e760 (LWP 26151))]

Thread 7 (Thread 0x7fc236726700 (LWP 26158)):
#0  0x00007fc254312c63 in select () from /lib64/libc.so.6
#1  0x00007fc25cb0a6b1 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc25cb0f62d in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib64/libQtCore.so.4
#3  0x00007fc25cb1088f in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00007fc25cae1c22 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00007fc25cae1e35 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00007fc25c9f6be4 in QThread::exec() () from /usr/lib64/libQtCore.so.4
#7  0x00007fc25cac3358 in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#9  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#10 0x00007fc25431966d in clone () from /lib64/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7fc23babe700 (LWP 26164)):
#0  0x00007fc25c76d38c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fc25c9f9bbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc25c9f64c5 in QSemaphore::acquire(int) () from /usr/lib64/libQtCore.so.4
#3  0x00007fc25bb91e8e in KisTileDataPooler::waitForWork (this=0x7dcbf00) at /home/boud/kde/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:162
#4  0x00007fc25bb925fc in KisTileDataPooler::run (this=0x7dcbf00) at /home/boud/kde/src/calligra/krita/image/tiles3/kis_tile_data_pooler.cc:184
#5  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#6  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#7  0x00007fc25431966d in clone () from /lib64/libc.so.6
#8  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7fc235e64700 (LWP 26165)):
#0  0x00007fc25c76d38c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fc25c9f9bbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc25c9f66f9 in QSemaphore::tryAcquire(int, int) () from /usr/lib64/libQtCore.so.4
#3  0x00007fc25bbca78a in KisTileDataSwapper::run (this=0x7dcbf38) at /home/boud/kde/src/calligra/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#4  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#5  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#6  0x00007fc25431966d in clone () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7fc231251700 (LWP 26170)):
#0  0x00007fc25c76d38c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fc25c9f9bbb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc255d8cd14 in ?? () from /usr/lib64/libQtGui.so.4
#3  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#5  0x00007fc25431966d in clone () from /lib64/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fc235663700 (LWP 26171)):
#0  0x00007fc254312c63 in select () from /lib64/libc.so.6
#1  0x00007fc25cb0a6b1 in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc25cb0f62d in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timeval*) () from /usr/lib64/libQtCore.so.4
#3  0x00007fc25cb1088f in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00007fc25cae1c22 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00007fc25cae1e35 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00007fc25c9f6be4 in QThread::exec() () from /usr/lib64/libQtCore.so.4
#7  0x00007fc25cac3358 in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#9  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#10 0x00007fc25431966d in clone () from /lib64/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fc230a50700 (LWP 26191)):
#0  0x00007fc25c76d6f9 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fc25c9f9b22 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007fc25c9ee458 in ?? () from /usr/lib64/libQtCore.so.4
#3  0x00007fc25c9f94d5 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x00007fc25c768a3f in start_thread () from /lib64/libpthread.so.0
#5  0x00007fc25431966d in clone () from /lib64/libc.so.6
#6  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fc25d21e760 (LWP 26151)):
[KCrash Handler]
#6  0x00007fc24035b7d0 in vtable for llvm::AllocaInst () from /usr/local/lib/libGTLCore.so.0.8
#7  0x00007fc23fef91d6 in llvm::BasicBlock::~BasicBlock() () from /usr/local/lib/libGTLCore.so.0.8
#8  0x00007fc23fef9379 in llvm::BasicBlock::~BasicBlock() () from /usr/local/lib/libGTLCore.so.0.8
#9  0x00007fc23ff1b1fc in llvm::Function::dropAllReferences() () from /usr/local/lib/libGTLCore.so.0.8
#10 0x00007fc23ff56ff0 in llvm::Module::dropAllReferences() () from /usr/local/lib/libGTLCore.so.0.8
#11 0x00007fc23ff576db in llvm::Module::~Module() () from /usr/local/lib/libGTLCore.so.0.8
#12 0x00007fc23fa5b40a in GTLCore::ModuleData::~ModuleData (this=0x143dadd0, __in_chrg=<value optimized out>) at /home/boud/kde/src/opengtl/opengtl/OpenGTL/GTLCore/ModuleData_p.cpp:59
#13 0x00007fc23dd415f9 in OpenCTL::Module::~Module (this=0xa90420, __in_chrg=<value optimized out>) at /home/boud/kde/src/opengtl/opengtl/OpenCTL/OpenCTL/Module.cpp:70
#14 0x00007fc23df9ec6a in KoCTLCompositeOp::KoCTLCompositeOp (this=<value optimized out>, _template=<value optimized out>, cs=0xbf19e1, _pd=...) at /home/boud/kde/src/calligra/krita/plugins/colorspaces/ctlcs/KoCtlCompositeOp.cpp:71
#15 0x00007fc23df8ca80 in KoCtlColorSpace::KoCtlColorSpace (this=0xdff0eb0, info=<value optimized out>, profile=<value optimized out>) at /home/boud/kde/src/calligra/krita/plugins/colorspaces/ctlcs/KoCtlColorSpace.cpp:101
#16 0x00007fc23df900a7 in KoCtlColorSpaceFactory::createColorSpace (this=0xfb0ba0, profile=<value optimized out>) at /home/boud/kde/src/calligra/krita/plugins/colorspaces/ctlcs/KoCtlColorSpaceFactory.cpp:87
#17 0x00007fc258ecaaa6 in KoColorSpaceFactory::grabColorSpace (this=0xfb0ba0, profile=<value optimized out>) at /home/boud/kde/src/calligra/libs/pigment/KoColorSpaceFactory.cpp:100
#18 0x00007fc258ece7f6 in KoColorSpaceRegistry::grabColorSpace (this=0xc2a3a0, colorSpace=<value optimized out>) at /home/boud/kde/src/calligra/libs/pigment/KoColorSpaceRegistry.cpp:298
#19 0x00007fc25bd4ae0f in KisPaintDevice::init (this=0x7fffb79c3000, explicitDataManager=..., colorSpace=0x8181a70, defaultBounds=0x8c4c6d0, parent=..., name=<value optimized out>) at /home/boud/kde/src/calligra/krita/image/kis_paint_device.cc:212
#20 0x00007fc25bd4b9ab in KisPaintDevice::KisPaintDevice (this=0x7fffb79c3000, colorSpace=0x8181a70, name=...) at /home/boud/kde/src/calligra/krita/image/kis_paint_device.cc:183
#21 0x00007fc25bd4c4c7 in KisPaintDevice::convertTo (this=0x7de8600, dstColorSpace=0x8181a70, renderingIntent=KoColorConversionTransformation::IntentPerceptual) at /home/boud/kde/src/calligra/krita/image/kis_paint_device.cc:580
#22 0x00007fc25bc8029b in KisColorSpaceConvertVisitor::convertPaintDevice (this=0x7fffb79c3830, layer=0x801c0b0) at /home/boud/kde/src/calligra/krita/image/kis_colorspace_convert_visitor.cpp:113
#23 0x00007fc25bc82c3d in KisColorSpaceConvertVisitor::visit (this=0x7fffb79c3830, layer=0x7d93cd0) at /home/boud/kde/src/calligra/krita/image/kis_colorspace_convert_visitor.cpp:54
#24 0x00007fc25bcebde7 in KisImage::convertImageColorSpace (this=0x7d93f20, dstColorSpace=0x8181a70, renderingIntent=KoColorConversionTransformation::IntentPerceptual) at /home/boud/kde/src/calligra/krita/image/kis_image.cc:631
#25 0x00007fc22dffee5f in ColorSpaceConversion::slotImageColorSpaceConversion (this=<value optimized out>) at /home/boud/kde/src/calligra/krita/plugins/extensions/colorspaceconversion/colorspaceconversion.cc:109
#26 0x00007fc22e000b00 in ColorSpaceConversion::qt_metacall (this=0x9111fb0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=<value optimized out>) at /home/boud/kde/build/calligra/krita/plugins/extensions/colorspaceconversion/colorspaceconversion.moc:77
#27 0x00007fc25caf6e8f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#28 0x00007fc255896ed2 in QAction::triggered(bool) () from /usr/lib64/libQtGui.so.4
#29 0x00007fc2558970ca in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQtGui.so.4
#30 0x00007fc255cd1603 in ?? () from /usr/lib64/libQtGui.so.4
#31 0x00007fc255cd761a in ?? () from /usr/lib64/libQtGui.so.4
#32 0x00007fc2566769f0 in KMenu::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/libkdeui.so.5
#33 0x00007fc2558eee1c in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#34 0x00007fc255cd880b in QMenu::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#35 0x00007fc25589d264 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#36 0x00007fc2558a609c in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#37 0x00007fc2565b4cf6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#38 0x00007fc25cae27cc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#39 0x00007fc25589e275 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQtGui.so.4
#40 0x00007fc25591d154 in ?? () from /usr/lib64/libQtGui.so.4
#41 0x00007fc25591b5c9 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#42 0x00007fc2559440e4 in ?? () from /usr/lib64/libQtGui.so.4
#43 0x00007fc25cae1c22 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#44 0x00007fc25cae1e35 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#45 0x00007fc25cae627b in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4
#46 0x00007fc25ce1da6d in kdemain (argc=<value optimized out>, argv=<value optimized out>) at /home/boud/kde/src/calligra/krita/main.cc:71
#47 0x00007fc254264bfd in __libc_start_main () from /lib64/libc.so.6
#48 0x0000000000400929 in _start () at ../sysdeps/x86_64/elf/start.S:113

Reported using DrKonqi
Comment 1 Cyrille Berger 2011-12-19 20:42:04 UTC
Seems to only happen with multiple layers, could be a threading issue. I will have a look.
Comment 2 Cyrille Berger 2012-01-14 07:36:17 UTC
Git commit acbd862178d608382108e1250ae57f12f884680c by Cyrille Berger.
Committed on 14/01/2012 at 08:34.
Pushed by berger into branch 'master'.

introduce a gtl giant lock to make sure to avoid threading issues.

Possible fix for those bugs:
Related: bug 289729

M  +1    -0    krita/image/CMakeLists.txt
A  +33   -0    krita/image/kis_gtl_lock.cpp     [License: GPL (v2+)]
A  +42   -0    krita/image/kis_gtl_lock.h     [License: GPL (v2+)]
M  +1    -1    krita/plugins/colorspaces/ctlcs/CMakeLists.txt
M  +5    -0    krita/plugins/colorspaces/ctlcs/KoCtlColorConversionTransformation.cpp
M  +2    -0    krita/plugins/colorspaces/ctlcs/KoCtlColorProfile.cpp
M  +2    -0    krita/plugins/colorspaces/ctlcs/KoCtlColorTransformationFactory.cpp
M  +3    -0    krita/plugins/colorspaces/ctlcs/KoCtlCompositeOp.cpp
M  +2    -1    krita/plugins/extensions/shiva/shivafilter.cpp
M  +2    -0    krita/plugins/extensions/shiva/shivagenerator.cpp

http://commits.kde.org/calligra/acbd862178d608382108e1250ae57f12f884680c
Comment 3 Halla Rempt 2012-02-11 10:44:33 UTC
Conversion is extremely slow, but no crash anymore! Yay again!