https://bugs.kde.org/show_bug.cgi?id=457688
Bug ID: 457688
Summary: Crash after a safe assert in tile_hash_table on adding
a Filter Mask to a layer
Product: krita
Version: git master (please specify the git hash!)
Platform: Mint (Ubuntu based)
OS: Linux
Status: REPORTED
Severity: crash
Priority: NOR
Component: Layer Stack
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
SUMMARY
Safe assert occured when I tried to add a filter as a mask to a layer.
If you ignore the safe assert, it will appear again and again and then Krita
will crash.
STEPS TO REPRODUCE
1. Open the test file provided.
2. Go to "Filter -> Adjust -> Color Adjustment Curves"
3. Press "Create Filter Mask"
OBSERVED RESULT
4. Safe assert:
m_image KisImage(0x555557075540, name = "OpenRaster Image (name)")
QPaintDevice: Cannot destroy paint device that is being painted
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
5. If you ignore the safe assert in the dev build, you'll get it a few more
times, and then eventually a crash:
Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
0x00007ffff6211a26 in QPlatformPixmap::mask() const () from
/lib/x86_64-linux-gnu/libQt5Gui.so.5
EXPECTED RESULT
No safe assert.
No crash after ignoring safe asserts.
SOFTWARE/OS VERSIONS
Krita
Version: 5.2.0-prealpha (git e13edec3dc)
Hidpi: true
Qt
Version (compiled): 5.12.8
Version (loaded): 5.12.8
OS Information
Build ABI: x86_64-little_endian-lp64
Build CPU: x86_64
CPU: x86_64
Kernel Type: linux
Kernel Version: 5.13.0-35-generic
Pretty Productname: Linux Mint 20.3
Product Type: linuxmint
Product Version: 20.3
Desktop: X-Cinnamon
SAFE ASSERT LOG (shortened):
m_image KisImage(0x555557075540, name = "OpenRaster Image (name)")
QPaintDevice: Cannot destroy paint device that is being painted
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
Thread 1 "krita" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: Nie ma takiego pliku ani katalogu.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff5748859 in __GI_abort () at abort.c:79
#2 0x00007ffff5b9caad in () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#3 0x00007ffff6d5bf64 in kis_assert_common(char const*, char const*, int,
bool, bool) (assertion=<optimized out>, file=<optimized out>, line=<optimized
out>, throwException=<optimized out>, isIgnorable=<optimized out>)
at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:208
#4 0x00007ffff70d4eb8 in
KisTileHashTableTraits2<KisTile>::calculateHashSafe(int, int) (col=-16777216,
row=-16777216, this=<optimized out>) at
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h:149
#5 KisTileHashTableTraits2<KisTile>::calculateHashSafe(int, int)
(this=0x555558cf6ea0, row=-16777216, col=-16777216) at
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h:149
#6 KisTileHashTableTraits2<KisTile>::getReadOnlyTileLazy(int, int, bool&)
(this=0x555558cf6ea0, col=col@entry=-16777216, row=row@entry=-16777216,
existingTile=@0x7fffffffb940: 32)
at /home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h:406
#7 0x00007ffff70eb0e1 in KisTiledDataManager::getTile(int, int, bool)
(writable=<optimized out>, row=-16777216, col=-16777216, this=0x55555e2d7ca0)
at /home/tymon/kritadev/krita/libs/image/tiles3/kis_tiled_data_manager.h:116
#8 KisTiledDataManager::getTilesPair(int, int, bool, KisSharedPtr<KisTile>*,
KisSharedPtr<KisTile>*) (oldTile=0x555563893ed8, tile=0x555563893ed0,
writable=<optimized out>, row=-16777216, col=-16777216, this=0x55555e2d7ca0)
at /home/tymon/kritadev/krita/libs/image/tiles3/kis_tiled_data_manager.h:95
#9 KisRandomAccessor2::fetchTileData(int, int) (this=0x555565f4b9f0,
col=-16777216, row=-16777216) at
/home/tymon/kritadev/krita/libs/image/tiles3/kis_random_accessor.cc:113
#10 0x00007ffff70eb486 in KisRandomAccessor2::moveTo(int, int)
(this=0x555565f4b9f0, x=-1073741824, y=-1073741824) at
/home/tymon/kritadev/krita/libs/image/tiles3/kis_random_accessor.cc:80
#11 0x00007ffff72d9a5f in createThumbnailDeviceInternal(KisPaintDevice const*,
qint32, qint32, qint32, qint32, qint32, qint32, QRect)
(srcDev=<optimized out>, srcX0=-1073741824, srcY0=-1073741824,
srcWidth=2147483647, srcHeight=2147483647, w=62, h=62, outputRect=...) at
/home/tymon/kritadev/krita/libs/image/kis_paint_device.cc:1714
CRASH LOG (shortened):
m_image KisImage(0x55555938ebc0, name = "OpenRaster Image (name)")
SAFE ASSERT (krita): "dst->lodData->levelOfDetail() ==
defaultBounds->currentLevelOfDetail()" in file
/home/tymon/kritadev/krita/libs/image/kis_paint_device.cc, line 852
SAFE ASSERT (krita): "dst->lodData->levelOfDetail() ==
defaultBounds->currentLevelOfDetail()" in file
/home/tymon/kritadev/krita/libs/image/kis_paint_device.cc, line 852
QPaintDevice: Cannot destroy paint device that is being painted
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
SAFE ASSERT (krita): "qAbs(row) < 0x7FFF && qAbs(col) < 0x7FFF" in file
/home/tymon/kritadev/krita/libs/image/tiles3/kis_tile_hash_table2.h, line 151
Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
0x00007ffff6211a26 in QPlatformPixmap::mask() const () from
/lib/x86_64-linux-gnu/libQt5Gui.so.5
(gdb) bt
#0 0x00007ffff6211a26 in QPlatformPixmap::mask() const () at
/lib/x86_64-linux-gnu/libQt5Gui.so.5
#1 0x00007ffff6414c0a in QPainter::setBrushOrigin(QPointF const&) () at
/lib/x86_64-linux-gnu/libQt5Gui.so.5
#2 0x00007fffd1ed62f5 in QPainter::setBrushOrigin(QPoint const&) (p=<synthetic
pointer>..., this=0x7fffffffc6b8) at
/usr/include/x86_64-linux-gnu/qt5/QtCore/qpoint.h:131
#3 NodeDelegate::drawThumbnail(QPainter*, QStyleOptionViewItem const&,
QModelIndex const&) const (this=0x55555a3d6ad0, p=0x7fffffffc6b8, option=...,
index=...)
at
/home/tymon/kritadev/krita/plugins/dockers/layerdocker/NodeDelegate.cpp:307
#4 0x00007fffd1eddfc3 in NodeDelegate::paint(QPainter*, QStyleOptionViewItem
const&, QModelIndex const&) const (this=0x55555a3d6ad0, p=0x7fffffffc6b8,
o=..., index=...)
at
/home/tymon/kritadev/krita/plugins/dockers/layerdocker/NodeDelegate.cpp:134
#5 0x00007ffff6a8d56a in QTreeView::drawRow(QPainter*, QStyleOptionViewItem
const&, QModelIndex const&) const () at
/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6 0x00007ffff6a92a83 in QTreeView::drawTree(QPainter*, QRegion const&) const
() at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
--
You are receiving this mail because:
You are watching all bug changes.