https://bugs.kde.org/show_bug.cgi?id=411081

Dmitry Kazakov <dimul...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDSINFO                   |RESOLVED
      Latest Commit|https://invent.kde.org/kde/ |https://invent.kde.org/kde/
                   |krita/commit/2fdd504dfe6ec6 |krita/commit/8b436ffc8ab139
                   |3b654ee0878c9f95cb69d4a6ad  |98a3d04702583f07c38a20a319
                   |https://invent.kde.org/kde/ |https://invent.kde.org/kde/
                   |krita/commit/8b436ffc8ab139 |krita/commit/57c8db26dc9486
                   |98a3d04702583f07c38a20a319  |eff6fab9e046b2df2320f23183

--- Comment #30 from Dmitry Kazakov <dimul...@gmail.com> ---
Git commit 8b436ffc8ab13998a3d04702583f07c38a20a319 by Dmitry Kazakov.
Committed on 13/09/2019 at 08:55.
Pushed by dkazakov into branch 'krita/4.2'.

Fix checking if swap location is set to a writable location

QFileInfo::isWritable() doesn't work on NTFS by default, so we should
just try to create a test fiel to check that.
Related: bug 411129

M  +31   -5    libs/image/kis_image_config.cpp

https://invent.kde.org/kde/krita/commit/8b436ffc8ab13998a3d04702583f07c38a20a319

--- Comment #31 from Dmitry Kazakov <dimul...@gmail.com> ---
Git commit ea97d0bc790d1be287ab61ac910586eecd23d1e7 by Dmitry Kazakov.
Committed on 13/09/2019 at 08:53.
Pushed by dkazakov into branch 'krita/4.2'.

Fix ConcurrentMap::migrationInProcess() to handle initialization value (0)
properly

Job coordinator of the table may have three states:

1) jobCoordinator == 0: the table was initialized, but no migration
   has ever been started for this table
2) jobCoordinator > 1: a table migration is in progress right now. The
   caller should join *jobCoordinator to help finishing the migration.
3) jobCoordinator == 1: the table migration has been finished. It means
   that the table doesn't have any values in it anymore.

The patch actually fixes the map to consider case 1 as a situation, when
there is no migration.

M  +1    -1    libs/image/3rdparty/lock_free_map/concurrent_map.h

https://invent.kde.org/kde/krita/commit/ea97d0bc790d1be287ab61ac910586eecd23d1e7

--- Comment #32 from Dmitry Kazakov <dimul...@gmail.com> ---
Git commit 57c8db26dc9486eff6fab9e046b2df2320f23183 by Dmitry Kazakov.
Committed on 13/09/2019 at 08:54.
Pushed by dkazakov into branch 'krita/4.2'.

Fix random crash when swap-file location has not got enough disk space

Lockfree hash table iterators have a requirement of no-concurrent-inserts,
so we must ensure that the swapper and pooler do *not* insert any tiles,
why iteration is in progress. KisTileDataStore::trySwapTileData() is called
exactly from inside of the swapper iteration loop.

If we break this requirement, the insert operation may request a table
migration, and the iterator will continue iterating the old, invalid,
table.

The actual crash happened after line 'item = iter->next()' in
KisTileDataSwapper::pass(), which actually returned value '1', meaning
"Redirect". Address 0x0000000000000029 is a fetch of
KisTileData::m_mementoFlag (offset 0x28) with 'this' set to 0x01 :)

M  +3    -0    libs/image/3rdparty/lock_free_map/concurrent_map.h
M  +1    -4    libs/image/tiles3/kis_tile_data_store.cc

https://invent.kde.org/kde/krita/commit/57c8db26dc9486eff6fab9e046b2df2320f23183

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to