Summary: | krita crashes when it try to open tiled & separate planes tiff. | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | a246246_246-kde |
Component: | File formats | Assignee: | Dmitry Kazakov <dimula73> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | dimula73, halla |
Priority: | NOR | ||
Version: | 4.1.7 | ||
Target Milestone: | --- | ||
Platform: | macOS (DMG) | ||
OS: | macOS | ||
Latest Commit: | https://invent.kde.org/kde/krita/commit/8947e0c2b56befa1a7aad58950e2f71249f12789 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: |
tiff that crashes krita
rest files include screenshots. Gimp 2.8 showing y1-st.tif |
Created attachment 119805 [details]
rest files include screenshots.
Thanks for the report. I can confirm that both 4.1.7 and git master crash on your test file. 4.1.7 gives: krita: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed. KCrash: crashing... crashRecursionCounter = 2 malloc(): memory corruption Thread 1 "krita" received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff319e801 in __GI_abort () at abort.c:79 #2 0x00007ffff31e7897 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff3314b9a "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007ffff31ee90a in malloc_printerr (str=str@entry=0x7ffff3312e0e "malloc(): memory corruption") at malloc.c:5350 #4 0x00007ffff31f2994 in _int_malloc (av=av@entry=0x7ffff3549c40 <main_arena>, bytes=bytes@entry=56) at malloc.c:3738 #5 0x00007ffff31f52ed in __GI___libc_malloc (bytes=56) at malloc.c:3065 #6 0x00007ffff37fa1a8 in operator new (sz=sz@entry=56) at ../../../../src/libstdc++-v3/libsupc++/new_op.cc:50 #7 0x00007ffff13ea70a in KisMementoManager::registerTileChange (this=0x55555f4820d0, this@entry=0x0, tile=tile@entry=0x555561e355d0) at /home/boud/dev/4.1/libs/image/tiles3/kis_memento_manager.cc:134 #8 0x00007ffff13d553c in KisTile::init (this=this@entry=0x555561e355d0, col=col@entry=0, row=row@entry=0, defaultTileData=defaultTileData@entry=0x555560f1b790, mm=mm@entry=0x55555f4820d0) at /home/boud/dev/4.1/libs/image/tiles3/kis_tile.cc:45 #9 0x00007ffff13d5f43 in KisTile::KisTile (this=0x555561e355d0, col=0, row=0, defaultTileData=0x555560f1b790, mm=0x55555f4820d0) at /home/boud/dev/4.1/libs/image/tiles3/kis_tile.cc:51 #10 0x00007ffff13e4ff0 in KisTileHashTableTraits<KisTile>::getTileLazy (this=0x555561ff4be0, col=0, row=0, newTile=@0x7fffffffbfd0: false) at /home/boud/dev/4.1/libs/image/tiles3/kis_tile_hash_table_p.h:249 #11 0x00007ffff13f290b in KisTiledDataManager::getTile (writable=<optimized out>, row=0, col=0, this=0x5555623effe0) at /home/boud/dev/4.1/libs/image/tiles3/kis_tiled_data_manager.h:114 #12 KisTiledDataManager::getTilesPair (oldTile=0x55556234dd20, tile=0x55556234dd18, writable=<optimized out>, row=0, col=0, this=0x5555623effe0) at /home/boud/dev/4.1/libs/image/tiles3/kis_tiled_data_manager.h:101 #13 KisHLineIterator2::fetchTileDataForCache (this=this@entry=0x55556272d990, kti=..., col=col@entry=0, row=row@entry=0) at /home/boud/dev/4.1/libs/image/tiles3/kis_hline_iterator.cpp:206 #14 0x00007ffff13f4e0c in KisHLineIterator2::KisHLineIterator2 (this=0x55556272d990, dataManager=<optimized out>, x=<optimized out>, y=<optimized out>, w=<optimized out>, offsetX=<optimized out>, offsetY=0, writable=true, competionListener=0x55555f4885d0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/boud/dev/4.1/libs/image/tiles3/kis_hline_iterator.cpp:63 #15 0x00007ffff1646479 in KisPaintDevice::Private::KisPaintDeviceStrategy::createHLineIteratorNG ( this=this@entry=0x5555623b9370, dataManager=0x5555623effe0, x=x@entry=0, y=y@entry=0, w=w@entry=256, offsetX=0, offsetY=0) at /home/boud/dev/4.1/libs/image/kis_paint_device_strategies.h:92 #16 0x00007ffff163464a in KisPaintDevice::createHLineIteratorNG (this=this@entry=0x555561792820, x=0, y=0, w=256) at /home/boud/dev/4.1/libs/image/kis_paint_device.cc:1753 #17 0x00007fff9f44c063 in KisTIFFReaderTarget8bit::copyDataToChannels (this=0x55556004c4a0, x=<optimized out>, y=<optimized out>, dataWidth=<optimized out>, tiffstream=0x555562403bd0) at /home/boud/dev/4.1/plugins/impex/tiff/kis_tiff_reader.cc:35 #18 0x00007fff9f44346e in KisTIFFConverter::readTIFFDirectory (this=this@entry=0x7fffffffc620, image=image@entry=0x555557265fe0) at /home/boud/dev/4.1/plugins/impex/tiff/kis_tiff_converter.cc:601 #19 0x00007fff9f445745 in KisTIFFConverter::decode (this=this@entry=0x7fffffffc620, filename=...) at /home/boud/dev/4.1/plugins/impex/tiff/kis_tiff_converter.cc:242 #20 0x00007fff9f445a25 in KisTIFFConverter::buildImage (this=this@entry=0x7fffffffc620, filename=...) at /home/boud/dev/4.1/plugins/impex/tiff/kis_tiff_converter.cc:681 #21 0x00007fff9f451bee in KisTIFFImport::convert (this=0x55555e2cc1b0, document=0x55555f2f7980) at /home/boud/dev/4.1/plugins/impex/tiff/kis_tiff_import.cc:47 #22 0x00007ffff6c32351 in KisImportExportManager::doImport (this=this@entry=0x555561fee1a0, location=..., filter=...) at /home/boud/dev/4.1/libs/ui/KisImportExportManager.cpp:578 #23 0x00007ffff6c3336f in KisImportExportManager::convert (this=this@entry=0x555561fee1a0, direction=direction@entry=KisImportExportManager::Import, location=..., realLocation=..., mimeType=..., showWarnings=<optimized out>, exportConfiguration=..., isAsync=<optimized out>) at /home/boud/dev/4.1/libs/ui/KisImportExportManager.cpp:353 #24 0x00007ffff6c33c08 in KisImportExportManager::importDocument (this=this@entry=0x555561fee1a0, location=..., mimeType=...) at /home/boud/dev/4.1/libs/ui/KisImportExportManager.cpp:136 #25 0x00007ffff6c1244e in KisDocument::openFile (this=this@entry=0x55555f2f7980) at /home/boud/dev/4.1/libs/ui/KisDocument.cpp:1205 Master: 6 Leapfrog<ConcurrentMap<unsigned int, KisMementoItem*, DefaultKeyTraits<unsigned int>, DefaultValueTraits<KisMementoItem*> > >::find (table=0xffffffffffffffff, hash=<optimized out>) at /home/boud/dev/krita/libs/image/3rdparty/lock_free_map/leapfrog.h:163 #7 ConcurrentMap<unsigned int, KisMementoItem*, DefaultKeyTraits<unsigned int>, DefaultValueTraits<KisMementoItem*> >::get (key=<optimized out>, this=0x5562115976b8) at /home/boud/dev/krita/libs/image/3rdparty/lock_free_map/concurrent_map.h:264 #8 KisTileHashTableTraits2<KisMementoItem>::getReadOnlyTileLazy (this=0x5562115976b8, col=col@entry=0, row=row@entry=0, existingTile=@0x7ffdafa59730: false) at /home/boud/dev/krita/libs/image/tiles3/kis_tile_hash_table2.h:378 #9 0x00007ff5102de286 in KisMementoManager::getCommitedTile (this=<optimized out>, col=col@entry=0, row=row@entry=0, existingTile=@0x7ffdafa59730: false) at /home/boud/dev/krita/libs/image/tiles3/kis_memento_manager.cc:228 #10 0x00007ff5102e7285 in KisTiledDataManager::getTilesPair (oldTile=0x556211572f90, tile=0x556211572f88, writable=<optimized out>, row=0, col=0, this=0x5562115720a0) at /home/boud/dev/krita/libs/image/tiles3/kis_tiled_data_manager.h:110 #11 KisHLineIterator2::fetchTileDataForCache (this=this@entry=0x55621157a9d0, kti=..., col=col@entry=0, row=row@entry=0) at /home/boud/dev/krita/libs/image/tiles3/kis_hline_iterator.cpp:206 #12 0x00007ff5102e97ec in KisHLineIterator2::KisHLineIterator2 (this=0x55621157a9d0, dataManager=<optimized out>, x=<optimized out>, y=<optimized out>, w=<optimized out>, offsetX=<optimized out>, offsetY=0, writable=true, competionListener=0x55621157b830, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/boud/dev/krita/libs/image/tiles3/kis_hline_iterator.cpp:63 #13 0x00007ff510561299 in KisPaintDevice::Private::KisPaintDeviceStrategy::createHLineIteratorNG (this=this@entry=0x5562101d86b0, dataManager=0x5562115720a0, x=x@entry=0, y=y@entry=0, w=w@entry=256, offsetX=0, offsetY=0) at /home/boud/dev/krita/libs/image/kis_paint_device_strategies.h:92 #14 0x00007ff51054f40a in KisPaintDevice::createHLineIteratorNG (this=this@entry=0x55621157e540, x=0, y=0, w=256) at /home/boud/dev/krita/libs/image/kis_paint_device.cc:1752 #15 0x00007ff4b55e8d03 in KisTIFFReaderTarget8bit::copyDataToChannels (this=0x556211574260, x=<optimized out>, y=<optimized out>, dataWidth=<optimized out>, tiffstream=0x556211580ef0) at /home/boud/dev/krita/plugins/impex/tiff/kis_tiff_reader.cc:35 #16 0x00007ff4b55e0156 in KisTIFFConverter::readTIFFDirectory (this=this@entry=0x7ffdafa59da0, image=image@entry=0x556211592330) at /home/boud/dev/krita/plugins/impex/tiff/kis_tiff_converter.cc:604 #17 0x00007ff4b55e23b5 in KisTIFFConverter::decode (this=this@entry=0x7ffdafa59da0, filename=...) at /home/boud/dev/krita/plugins/impex/tiff/kis_tiff_converter.cc:242 #18 0x00007ff4b55e2695 in KisTIFFConverter::buildImage (this=this@entry=0x7ffdafa59da0, filename=...) at /home/boud/dev/krita/plugins/impex/tiff/kis_tiff_converter.cc:684 #19 0x00007ff4b55ee87e in KisTIFFImport::convert (this=0x5562102158c0, document=0x556209ebce70) at /home/boud/dev/krita/plugins/impex/tiff/kis_tiff_import.cc:47 #20 0x00007ff511bc79bd in KisImportExportManager::doImport (this=this@entry=0x5562115620f0, location=..., filter=...) at /home/boud/dev/krita/libs/ui/KisImportExportManager.cpp:595 #21 0x00007ff511bc8ea2 in KisImportExportManager::convert (this=this@entry=0x5562115620f0, direction=direction@entry=KisImportExportManager::Import, location=..., realLocation=..., mimeType=..., showWarnings=<optimized out>, exportConfiguration=..., isAsync=<optimized out>) at /home/boud/dev/krita/libs/ui/KisImportExportManager.cpp:360 #22 0x00007ff511bc96a8 in KisImportExportManager::importDocument (this=this@entry=0x5562115620f0, location=..., mimeType=...) at /home/boud/dev/krita/libs/ui/KisImportExportManager.cpp:136 #23 0x00007ff511bb420f in KisDocument::openFile (this=this@entry=0x556209ebce70) at /home/boud/dev/krita/libs/ui/KisDocument.cpp:1313 #24 0x00007ff511bb4c1b in KisDocument::openUrlInternal (this=this@entry=0x556209ebce70, url=...) at /home/boud/dev/krita/libs/ui/KisDocument.cpp:1739 #25 0x00007ff511bb50df in KisDocument::openUrl (this=0x556209ebce70, _url=..., flags=...) at /home/boud/dev/krita/libs/ui/KisDocument.cpp:1210 #26 0x00007ff511bd226d in KisMainWindow::openDocumentInternal (this=this@entry=0x556209299460, url=..., flags=flags@entry=...) at /home/boud/dev/krita/libs/ui/KisMainWindow.cpp:886 #27 0x00007ff511bd7c6e in KisMainWindow::openDocument (this=this@entry=0x556209299460, url=..., flags=flags@entry=...) at /home/boud/dev/krita/libs/ui/KisMainWindow.cpp:861 #28 0x00007ff511ba1330 in KisApplication::start (this=<optimized out>, args=...) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:587 #29 0x000055620477a8bb in main (argc=<optimized out>, argv=0x7ffdafa5aa18) at /home/boud/dev/krita/krita/main.cc:524 Created attachment 119806 [details]
Gimp 2.8 showing y1-st.tif
Looks like gimp 2.8 also has propblems with this file.
Valgrind output: ==30637== Invalid write of size 8 ==30637== at 0x4C367E3: memmove (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==30637== by 0x31DD79CB: ??? (in /usr/lib/x86_64-linux-gnu/libtiff.so.5.3.0) ==30637== by 0x31DFF89D: TIFFReadEncodedTile (in /usr/lib/x86_64-linux-gnu/libtiff.so.5.3.0) ==30637== by 0x5BA670F2: KisTIFFConverter::readTIFFDirectory(tiff*) (kis_tiff_converter.cc:599) ==30637== by 0x5BA693B4: KisTIFFConverter::decode(QString const&) (kis_tiff_converter.cc:242) ==30637== by 0x5BA7587D: KisTIFFImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (kis_tiff_import.cc:47) ==30637== by 0x5E429BC: KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) (KisImportExportManager.cpp:595) ==30637== by 0x5E43EA1: KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) (KisImportExportManager.cpp:360) ==30637== by 0x5E446A7: KisImportExportManager::importDocument(QString const&, QString const&) (KisImportExportManager.cpp:136) ==30637== by 0x5E2F20E: KisDocument::openFile() (KisDocument.cpp:1313) ==30637== by 0x5E2FC1A: KisDocument::openUrlInternal(QUrl const&) (KisDocument.cpp:1739) ==30637== by 0x5E300DE: KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) (KisDocument.cpp:1210) ==30637== Address 0x456c78b8 is 10,920 bytes inside a block of size 10,922 alloc'd ==30637== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==30637== by 0x5BA66FF7: KisTIFFConverter::readTIFFDirectory(tiff*) (kis_tiff_converter.cc:584) ==30637== by 0x5BA693B4: KisTIFFConverter::decode(QString const&) (kis_tiff_converter.cc:242) ==30637== by 0x5BA7587D: KisTIFFImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (kis_tiff_import.cc:47) ==30637== by 0x5E429BC: KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) (KisImportExportManager.cpp:595) ==30637== by 0x5E43EA1: KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) (KisImportExportManager.cpp:360) ==30637== by 0x5E446A7: KisImportExportManager::importDocument(QString const&, QString const&) (KisImportExportManager.cpp:136) ==30637== by 0x5E2F20E: KisDocument::openFile() (KisDocument.cpp:1313) ==30637== by 0x5E2FC1A: KisDocument::openUrlInternal(QUrl const&) (KisDocument.cpp:1739) ==30637== by 0x5E300DE: KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) (KisDocument.cpp:1210) ==30637== by 0x5E4D26C: KisMainWindow::openDocumentInternal(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (KisMainWindow.cpp:886) ==30637== by 0x5E52C6D: KisMainWindow::openDocument(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (KisMainWindow.cpp:861) ==30637== ==30637== Invalid read of size 1 ==30637== at 0x5BA74E25: KisBufferStreamContigBelow16::nextValue() (kis_buffer_stream.cc:51) ==30637== by 0x5BA74FD4: KisBufferStreamSeperate::nextValue() (kis_buffer_stream.cc:133) ==30637== by 0x5BA6FD80: KisTIFFReaderTarget8bit::copyDataToChannels(unsigned int, unsigned int, unsigned int, KisBufferStreamBase*) (kis_tiff_reader.cc:42) ==30637== by 0x5BA67155: KisTIFFConverter::readTIFFDirectory(tiff*) (kis_tiff_converter.cc:604) ==30637== by 0x5BA693B4: KisTIFFConverter::decode(QString const&) (kis_tiff_converter.cc:242) ==30637== by 0x5BA7587D: KisTIFFImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (kis_tiff_import.cc:47) ==30637== by 0x5E429BC: KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) (KisImportExportManager.cpp:595) ==30637== by 0x5E43EA1: KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) (KisImportExportManager.cpp:360) ==30637== by 0x5E446A7: KisImportExportManager::importDocument(QString const&, QString const&) (KisImportExportManager.cpp:136) ==30637== by 0x5E2F20E: KisDocument::openFile() (KisDocument.cpp:1313) ==30637== by 0x5E2FC1A: KisDocument::openUrlInternal(QUrl const&) (KisDocument.cpp:1739) ==30637== by 0x5E300DE: KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) (KisDocument.cpp:1210) ==30637== Address 0x456c78ba is 0 bytes after a block of size 10,922 alloc'd ==30637== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==30637== by 0x5BA66FF7: KisTIFFConverter::readTIFFDirectory(tiff*) (kis_tiff_converter.cc:584) ==30637== by 0x5BA693B4: KisTIFFConverter::decode(QString const&) (kis_tiff_converter.cc:242) ==30637== by 0x5BA7587D: KisTIFFImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (kis_tiff_import.cc:47) ==30637== by 0x5E429BC: KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) (KisImportExportManager.cpp:595) ==30637== by 0x5E43EA1: KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool) (KisImportExportManager.cpp:360) ==30637== by 0x5E446A7: KisImportExportManager::importDocument(QString const&, QString const&) (KisImportExportManager.cpp:136) ==30637== by 0x5E2F20E: KisDocument::openFile() (KisDocument.cpp:1313) ==30637== by 0x5E2FC1A: KisDocument::openUrlInternal(QUrl const&) (KisDocument.cpp:1739) ==30637== by 0x5E300DE: KisDocument::openUrl(QUrl const&, QFlags<KisDocument::OpenFlag>) (KisDocument.cpp:1210) ==30637== by 0x5E4D26C: KisMainWindow::openDocumentInternal(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (KisMainWindow.cpp:886) ==30637== by 0x5E52C6D: KisMainWindow::openDocument(QUrl const&, QFlags<KisMainWindow::OpenFlag>) (KisMainWindow.cpp:861) I forgot to say my gimp is 2.10.10, that is different with your view, but still incorrect. Thanks, then I don't have to check that myself :-) Git commit 48294d3a2e49ba38b7fa9e7525ed4e5d79dbad2c by Dmitry Kazakov. Committed on 16/09/2019 at 11:27. Pushed by dkazakov into branch 'master'. Fix crash when opening tiled TIFF with planar color data TIFFTileSize() returns a the size of the tile for one color plane, not for all the planes. M +2 -2 plugins/impex/tiff/kis_tiff_converter.cc https://invent.kde.org/kde/krita/commit/48294d3a2e49ba38b7fa9e7525ed4e5d79dbad2c Git commit 8947e0c2b56befa1a7aad58950e2f71249f12789 by Dmitry Kazakov. Committed on 21/09/2019 at 10:02. Pushed by dkazakov into branch 'krita/4.2'. Fix crash when opening tiled TIFF with planar color data TIFFTileSize() returns a the size of the tile for one color plane, not for all the planes. M +2 -2 plugins/impex/tiff/kis_tiff_converter.cc https://invent.kde.org/kde/krita/commit/8947e0c2b56befa1a7aad58950e2f71249f12789 |
Created attachment 119804 [details] tiff that crashes krita SUMMARY krita crashes when it try to open tiled & separate planes tiff. STEPS TO REPRODUCE 1. Just try to open attached tiff y1-st.tif OBSERVED RESULT Krita crashes. EXPECTED RESULT Open the file properly, at least show error dialog. SOFTWARE/OS VERSIONS macOS: mojave 10.14.4 (Graphics: Intel Iris Pro 1536 MB) ADDITIONAL INFORMATION I'm not really sure this tiff is valid. It is created the following steps. 1) create simple 8 bit tiff using imagemagick: % magick convert \( -size 320x240 xc:red -size 320x240 xc:blue -append \) \( -size 320x240 xc:green -size 320x240 xc:yellow -append \) +append -type TrueColor -depth 8 y1.tif $ tiffinfo y1.tif TIFF Directory at offset 0xe1008 (921608) Image Width: 640 Image Length: 480 Bits/Sample: 8 Compression Scheme: None Photometric Interpretation: RGB color FillOrder: msb-to-lsb Orientation: row 0 top, col 0 lhs Samples/Pixel: 3 Rows/Strip: 480 Planar Configuration: single image plane Page Number: 0-1 White Point: 0.3127-0.329 PrimaryChromaticities: 0.640000,0.330000,0.300000,0.600000,0.150000,0.060000 2) set it to tiled and planer contiguration to separate. % tiffcp -t -l 128 -w 256 -p separate y1.tif y1-st.tif tiffinfo y1-st.tif TIFF Directory at offset 0x120008 (1179656) Image Width: 640 Image Length: 480 Tile Width: 256 Tile Length: 128 Bits/Sample: 8 Compression Scheme: None Photometric Interpretation: RGB color FillOrder: msb-to-lsb Orientation: row 0 top, col 0 lhs Samples/Pixel: 3 Planar Configuration: separate image planes Page Number: 0-1 White Point: 0.3127-0.329 PrimaryChromaticities: 0.640000,0.330000,0.300000,0.600000,0.150000,0.060000 As is shown, tiffinfo does not show error, compare (from imagemagick 7.0.8-42 Q16) tells they are not different, pixel values seem to be OK. % magick compare -format '%c\n' -metric PSNR y1.tif y1-st.tif NULL: inf % magick convert -format '%c\n' y1-st.tif histogram:info:- 76800: ( 0, 0,255) #0000FF blue 76800: ( 0,128, 0) #008000 green 76800: (255, 0, 0) #FF0000 red 76800: (255,255, 0) #FFFF00 yellow Likewise, I create only tiled file and only separate planner file: % tiffcp -t -l 128 -w 256 y1.tif y1-t.tif % tiffcp -p separate y1.tif y1-s.tif they can be opened with krita with no problem. The file t1-st.tif can be shown on mac preview quite normally, but gimp shows it broken. (That's why I doubt the correctness of the tiff.)