Summary: | Krita crashes when converting to a colorspace with fewer channels if a channel is unchecked | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Dmitry Kazakov <dimula73> |
Component: | General | Assignee: | Halla Rempt <halla> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | halla |
Priority: | NOR | ||
Version: | git master (please specify the git hash!) | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/calligra/0187de1f0239b41c32a54fd367c98378a602be74 | Version Fixed In: |
Description
Dmitry Kazakov
2013-12-28 20:35:27 UTC
What was the bit depth? This code somehow passes the lut docker, was that one visible? I got a crash, too, but only after an undo of the conversion to grayscale: Thread 1 (Thread 0x7f38dec4e8c0 (LWP 5754)): [KCrash Handler] #5 0x00007f38d5be4849 in raise () from /lib64/libc.so.6 #6 0x00007f38d5be5cd8 in abort () from /lib64/libc.so.6 #7 0x00007f38d6c6d204 in qt_message_output(QtMsgType, char const*) () from /usr/lib64/libQtCore.so.4 #8 0x00007f38d6c6d389 in ?? () from /usr/lib64/libQtCore.so.4 #9 0x00007f38d6c6db94 in qFatal(char const*, ...) () from /usr/lib64/libQtCore.so.4 #10 0x00007f38d6c6dbda in qt_assert(char const*, char const*, int) () from /usr/lib64/libQtCore.so.4 #11 0x00007f38dd952821 in KisLayer::setChannelFlags (this=0x508cf80, channelFlags=...) at /home/boud/kde/src/2.8/krita/image/kis_layer.cc:205 #12 0x00007f38dd897d3a in KisLayerPropsCommand::undo (this=0x1b21e680) at /home/boud/kde/src/2.8/krita/image/commands/kis_layer_props_command.cpp:75 #13 0x00007f38d9a543e4 in KUndo2Command::undo (this=0x60c8ed0) at /home/boud/kde/src/2.8/libs/kundo2/kundo2stack.cpp:231 #14 0x00007f38d9a552da in KUndo2QStack::undo (this=0x3bb2100) at /home/boud/kde/src/2.8/libs/kundo2/kundo2stack.cpp:684 #15 0x00007f38ddedfcc8 in KisDoc2::UndoStack::undo (this=0x3bb2100) at /home/boud/kde/src/2.8/krita/ui/kis_doc2_p.h:46 #16 0x00007f38d6d8ad68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #17 0x00007f38d79fe752 in QAction::triggered(bool) () from /usr/lib64/libQtGui.so.4 #18 0x00007f38d7a00123 in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQtGui.so.4 #19 0x00007f38d7a0027c in QAction::event(QEvent*) () from /usr/lib64/libQtGui.so.4 #20 0x00007f38d86452bf in KAction::event(QEvent*) () from /usr/lib64/libkdeui.so.5 #21 0x00007f38d7a048ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #22 0x00007f38d7a0ae70 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #23 0x00007f38dd45daa7 in KoApplication::notify (this=<optimized out>, receiver=0x50b8a50, event=0x7fff83987cb0) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:549 #24 0x00007f38d6d770ad in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4 #25 0x00007f38d7a35b86 in ?? () from /usr/lib64/libQtGui.so.4 #26 0x00007f38d7a35cb4 in ?? () from /usr/lib64/libQtGui.so.4 #27 0x00007f38d7a0c143 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #28 0x00007f38dd45daa7 in KoApplication::notify (this=<optimized out>, receiver=0x64e25f0, event=0x7fff83988000) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:549 #29 0x00007f38d6d770ad in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4 #30 0x00007f38d7a9ed79 in ?? () from /usr/lib64/libQtGui.so.4 #31 0x00007f38d7a9f119 in ?? () from /usr/lib64/libQtGui.so.4 #32 0x00007f38d7a7ad3f in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4 #33 0x00007f38d7aa21f0 in ?? () from /usr/lib64/libQtGui.so.4 #34 0x00007f38d6d75d0f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #35 0x00007f38d6d76005 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #36 0x00007f38d6d7b13b in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4 #37 0x00007f38de624b55 in kdemain (argc=<optimized out>, argv=<optimized out>) at /home/boud/kde/src/2.8/krita/main.cc:99 #38 0x00007f38d5bd0be5 in __libc_start_main () from /lib64/libc.so.6 #39 0x0000000000400a01 in _start () at ../sysdeps/x86_64/start.S:122 Also: [KCrash Handler] #5 0x00007f1e0e48e849 in raise () from /lib64/libc.so.6 #6 0x00007f1e0e48fcd8 in abort () from /lib64/libc.so.6 #7 0x00007f1e0f517204 in qt_message_output(QtMsgType, char const*) () from /usr/lib64/libQtCore.so.4 #8 0x00007f1e0f517389 in ?? () from /usr/lib64/libQtCore.so.4 #9 0x00007f1e0f517b94 in qFatal(char const*, ...) () from /usr/lib64/libQtCore.so.4 #10 0x00007f1e0f517bda in qt_assert(char const*, char const*, int) () from /usr/lib64/libQtCore.so.4 #11 0x00007f1e168b5e58 in testBit (i=2, this=0x7fffe16037b0) at /usr/include/QtCore/qbitarray.h:125 #12 retrieveData (selectedChannelIndex=<optimized out>, onlyOneChannelSelected=<optimized out>, m_channelFlags=..., image=..., this=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/opengl/kis_texture_tile_update_info.h:107 #13 KisOpenGLImageTextures::updateCache (this=0x5417ba0, rect=...) at /home/boud/kde/src/2.8/krita/ui/opengl/kis_opengl_image_textures.cpp:235 #14 0x00007f1e166c5c6f in KisCanvas2::startUpdateCanvasProjection (this=0x535f090, rc=...) at /home/boud/kde/src/2.8/krita/ui/canvas/kis_canvas2.cpp:569 #15 0x00007f1e166c6779 in KisCanvas2::startUpdateInPatches (this=this@entry=0x535f090, imageRect=...) at /home/boud/kde/src/2.8/krita/ui/canvas/kis_canvas2.cpp:470 #16 0x00007f1e166c93d0 in KisCanvas2::setDisplayFilter (this=0x535f090, displayFilter=displayFilter@entry=0x0) at /home/boud/kde/src/2.8/krita/ui/canvas/kis_canvas2.cpp:531 #17 0x00007f1deddacece in LutDockerDock::updateDisplaySettings (this=this@entry=0x4f96c10) at /home/boud/kde/src/2.8/krita/plugins/extensions/dockers/lut/lutdocker_dock.cpp:242 #18 0x00007f1deddaecd4 in clearLut (this=<optimized out>) at /home/boud/kde/src/2.8/krita/plugins/extensions/dockers/lut/lutdocker_dock.cpp:389 #19 LutDockerDock::qt_static_metacall (_o=0x4f96c10, _c=<optimized out>, _id=7, _a=0x7fffe1603d20) at /home/boud/kde/build/2.8/krita/plugins/extensions/dockers/lut/lutdocker_dock.moc:86 #20 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #21 0x00007f1e10673301 in QComboBox::currentIndexChanged(int) () from /usr/lib64/libQtGui.so.4 #22 0x00007f1e10673361 in ?? () from /usr/lib64/libQtGui.so.4 #23 0x00007f1e106758b0 in ?? () from /usr/lib64/libQtGui.so.4 #24 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #25 0x00007f1e0f67f224 in QAbstractItemModel::rowsRemoved(QModelIndex const&, int, int) () from /usr/lib64/libQtCore.so.4 #26 0x00007f1e0f61bb4e in QAbstractItemModel::endRemoveRows() () from /usr/lib64/libQtCore.so.4 #27 0x00007f1e1082ee34 in QStandardItemModel::removeRows(int, int, QModelIndex const&) () from /usr/lib64/libQtGui.so.4 #28 0x00007f1e10672fbc in QComboBox::clear() () from /usr/lib64/libQtGui.so.4 #29 0x00007f1deddad6af in LutDockerDock::slotImageColorSpaceChanged (this=this@entry=0x4f96c10) at /home/boud/kde/src/2.8/krita/plugins/extensions/dockers/lut/lutdocker_dock.cpp:164 #30 0x00007f1deddaee68 in LutDockerDock::qt_static_metacall (_o=0x4f96c10, _c=<optimized out>, _id=0, _a=0x7fffe1604260) at /home/boud/kde/build/2.8/krita/plugins/extensions/dockers/lut/lutdocker_dock.moc:72 #31 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #32 0x00007f1e161eaee2 in KisImage::sigColorSpaceChanged (this=this@entry=0x41324c0, _t1=0x3b28240) at /home/boud/kde/build/2.8/krita/image/kis_image.moc:259 #33 0x00007f1e161ee047 in KisImage::qt_static_metacall (_o=0x41324c0, _c=<optimized out>, _id=4, _a=0x7fffe16043f0) at /home/boud/kde/build/2.8/krita/image/kis_image.moc:131 #34 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #35 0x00007f1e160b5822 in KisImageSignalRouter::sigColorSpaceChanged (this=this@entry=0x3950fa0, _t1=0x3b28240) at /home/boud/kde/build/2.8/krita/image/moc_kis_image_signal_router.cpp:157 #36 0x00007f1e161f8c70 in KisImageSignalRouter::slotNotification (this=this@entry=0x3950fa0, type=...) at /home/boud/kde/src/2.8/krita/image/kis_image_signal_router.cpp:104 #37 0x00007f1e160b65b8 in KisImageSignalRouter::qt_static_metacall (_o=0x3950fa0, _c=<optimized out>, _id=10, _a=0x7fffe1604690) at /home/boud/kde/build/2.8/krita/image/moc_kis_image_signal_router.cpp:81 #38 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #39 0x00007f1e160b5757 in KisImageSignalRouter::sigNotification (this=<optimized out>, _t1=...) at /home/boud/kde/build/2.8/krita/image/moc_kis_image_signal_router.cpp:130 #40 0x00007f1e161f6dc5 in KisImageSignalRouter::emitNotification (this=<optimized out>, type=...) at /home/boud/kde/src/2.8/krita/image/kis_image_signal_router.cpp:68 #41 0x00007f1e161ee7a2 in KisImage::setProjectionColorSpace (this=0x41324c0, colorSpace=colorSpace@entry=0x3b28240) at /home/boud/kde/src/2.8/krita/image/kis_image.cc:754 #42 0x00007f1e16116f2f in KisImageSetProjectionColorSpaceCommand::undo (this=0x3a031d0) at /home/boud/kde/src/2.8/krita/image/commands/kis_image_set_projection_color_space_command.cpp:42 #43 0x00007f1e122fe3e4 in KUndo2Command::undo (this=0xc73bab0) at /home/boud/kde/src/2.8/libs/kundo2/kundo2stack.cpp:231 #44 0x00007f1e122ff2da in KUndo2QStack::undo (this=0x3085f00) at /home/boud/kde/src/2.8/libs/kundo2/kundo2stack.cpp:684 #45 0x00007f1e16789cc8 in KisDoc2::UndoStack::undo (this=0x3085f00) at /home/boud/kde/src/2.8/krita/ui/kis_doc2_p.h:46 #46 0x00007f1e0f634d68 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4 #47 0x00007f1e102a8752 in QAction::triggered(bool) () from /usr/lib64/libQtGui.so.4 #48 0x00007f1e102aa123 in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQtGui.so.4 #49 0x00007f1e102aa27c in QAction::event(QEvent*) () from /usr/lib64/libQtGui.so.4 #50 0x00007f1e10eef2bf in KAction::event(QEvent*) () from /usr/lib64/libkdeui.so.5 #51 0x00007f1e102ae8ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #52 0x00007f1e102b4e70 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #53 0x00007f1e15d07aa7 in KoApplication::notify (this=<optimized out>, receiver=0x3764330, event=0x7fffe1604d50) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:549 #54 0x00007f1e0f6210ad in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4 #55 0x00007f1e102dfb86 in ?? () from /usr/lib64/libQtGui.so.4 #56 0x00007f1e102dfcb4 in ?? () from /usr/lib64/libQtGui.so.4 #57 0x00007f1e102b6143 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4 #58 0x00007f1e15d07aa7 in KoApplication::notify (this=<optimized out>, receiver=0x5418330, event=0x7fffe16050a0) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:549 #59 0x00007f1e0f6210ad in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4 #60 0x00007f1e10348d79 in ?? () from /usr/lib64/libQtGui.so.4 #61 0x00007f1e10349119 in ?? () from /usr/lib64/libQtGui.so.4 #62 0x00007f1e10324d3f in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4 #63 0x00007f1e1034c1f0 in ?? () from /usr/lib64/libQtGui.so.4 #64 0x00007f1e0f61fd0f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #65 0x00007f1e0f620005 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #66 0x00007f1e0f62513b in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4 #67 0x00007f1e16eceb55 in kdemain (argc=<optimized out>, argv=<optimized out>) at /home/boud/kde/src/2.8/krita/main.cc:99 #68 0x00007f1e0e47abe5 in __libc_start_main () from /lib64/libc.so.6 #69 0x0000000000400a01 in _start () at ../sysdeps/x86_64/start.S:122 Git commit da4c5a32d551d897cec212cf7174aab8a3f3b099 by Boudewijn Rempt. Committed on 30/12/2013 at 19:35. Pushed by rempt into branch 'calligra/2.8'. Only set an OCIO display for floating point images M +1 -1 krita/plugins/extensions/dockers/lut/lutdocker_dock.cpp http://commits.kde.org/calligra/da4c5a32d551d897cec212cf7174aab8a3f3b099 Git commit 4009a3300acd1b652a0897d6f1139f8990ef330c by Boudewijn Rempt. Committed on 30/12/2013 at 19:35. Pushed by rempt into branch 'master'. Only set an OCIO display for floating point images M +1 -1 krita/plugins/extensions/dockers/lut/lutdocker_dock.cpp http://commits.kde.org/calligra/4009a3300acd1b652a0897d6f1139f8990ef330c Git commit 0187de1f0239b41c32a54fd367c98378a602be74 by Boudewijn Rempt. Committed on 30/12/2013 at 20:23. Pushed by rempt into branch 'master'. Don't crash when converting colorspace if channels are unchecked M +18 -17 krita/image/commands/kis_layer_props_command.cpp M +12 -12 krita/image/kis_colorspace_convert_visitor.cpp M +2 -0 krita/plugins/extensions/dockers/channeldocker/channeldocker_dock.cpp M +5 -12 krita/ui/canvas/kis_canvas2.cpp M +10 -1 krita/ui/canvas/kis_image_pyramid.cpp M +14 -4 krita/ui/opengl/kis_opengl_image_textures.cpp M +2 -1 krita/ui/opengl/kis_opengl_image_textures.h http://commits.kde.org/calligra/0187de1f0239b41c32a54fd367c98378a602be74 Git commit d05ba9448eda7464ba5a6b0a06c8a8a7e87c9c0d by Dmitry Kazakov, on behalf of Mathias Wein. Committed on 01/12/2021 at 10:06. Pushed by dkazakov into branch 'master'. Fix issues when soft proofing is active during colorspace conversion The color transform needs to be reset before updating the canvas. Also, there was an odd workaround to set new channel flags for the root layer, but this was an async signal that caused an update in the middle of invalidating the image data during conversion. Instead, simply fetch the (after the previous fix valid) new channel flags when the canvas gets notified about the color space change. Related: bug 441165, bug 426641 M +6 -0 libs/ui/canvas/kis_canvas2.cpp M +2 -0 libs/ui/opengl/KisOpenGLUpdateInfoBuilder.cpp M +0 -1 plugins/dockers/channeldocker/channeldocker_dock.cpp https://invent.kde.org/graphics/krita/commit/d05ba9448eda7464ba5a6b0a06c8a8a7e87c9c0d Git commit 413376726265eda75864eca9899c110ee7d5354e by Dmitry Kazakov, on behalf of Mathias Wein. Committed on 01/12/2021 at 10:16. Pushed by dkazakov into branch 'krita/5.0'. Fix issues when soft proofing is active during colorspace conversion The color transform needs to be reset before updating the canvas. Also, there was an odd workaround to set new channel flags for the root layer, but this was an async signal that caused an update in the middle of invalidating the image data during conversion. Instead, simply fetch the (after the previous fix valid) new channel flags when the canvas gets notified about the color space change. Related: bug 441165, bug 426641 (cherry picked from commit d05ba9448eda7464ba5a6b0a06c8a8a7e87c9c0d) M +6 -0 libs/ui/canvas/kis_canvas2.cpp M +2 -0 libs/ui/opengl/KisOpenGLUpdateInfoBuilder.cpp M +0 -1 plugins/dockers/channeldocker/channeldocker_dock.cpp https://invent.kde.org/graphics/krita/commit/413376726265eda75864eca9899c110ee7d5354e |