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: krita-bugs-n...@kde.org
          Reporter: tamtamy.tym...@gmail.com
  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.

Reply via email to