Bug 444798

Summary: Possible issue with layer styles causing files to become unusable
Product: [Applications] krita Reporter: Jaiden Williams <jaw12121>
Component: layer stylesAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED WORKSFORME    
Severity: critical CC: eoinoneill1991, ghevan, griffinvalley, jaw12121, tamtamy.tymona
Priority: NOR Keywords: regression, release_blocker
Version First Reported In: 5.0.0-beta2   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Control File made to test issue

Description Jaiden Williams 2021-11-01 23:07:23 UTC
SUMMARY
I have been using multiple layer styles on my images, and after saving said files, and attempting to load them again, they have become unusable and apparently unrecoverable on current versions of krita next. Im not sure how to specifically replicate it however i have some general guides

STEPS TO REPRODUCE
1. add a layer style (ones i use are outer glow or stroke), with default settings
2. apply a gradient to the effect, and choose one in the list of custom gradients
3. effect will work for the remainder of the session, if saved and reopened, it crashes

OBSERVED RESULT
File will no longer open, krita crashes upon attempting to load

EXPECTED RESULT
For the file to load

SOFTWARE/OS VERSIONS
Windows: 10/11

ADDITIONAL INFORMATION
Comment 1 Tiar 2021-11-01 23:20:49 UTC
Can you please attach an example file that crashes for you?
Comment 2 Jaiden Williams 2021-11-02 21:38:04 UTC
Created attachment 143152 [details]
Control File made to test issue

I created a file that i was able to reproduce the bug
Comment 3 Bug Janitor Service 2021-11-03 04:35:33 UTC
Thanks for your comment!

Automatically switching the status of this bug to REPORTED so that the KDE team
knows that the bug is ready to get confirmed.

In the future you may also do this yourself when providing needed information.
Comment 4 wolthera 2021-11-03 17:36:59 UTC
Yeah, that seems to assert here:

Mind, my build is a bit old, maybe it got fixed already?

------------------

Thread 1 (Thread 0x7fe3c3264f80 (LWP 2402439)):
[KCrash Handler]
#4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#5  0x00007fe3c8543859 in __GI_abort () at abort.c:79
#6  0x00007fe3c899fbd7 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007fe3c9c4edaa 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:61
#8  0x00007fe3ca3f6a1e in KisAslLayerStyleSerializer::fetchEmbeddedResources(KisPSDLayerStyle const*) (style=0x55db77a0ffa0) at /home/wolthera/krita/src/libs/image/kis_asl_layer_style_serializer.cpp:763
#9  0x00007fe3ca422aec in KisPSDLayerStyle::embeddedResources(QSharedPointer<KisResourcesInterface>) const (this=<optimized out>, globalResourcesInterface=...) at /home/wolthera/krita/src/libs/image/kis_psd_layer_style.cpp:349
#10 0x00007fe3c9d9e67a in KoResource::requiredResources(QSharedPointer<KisResourcesInterface>) const (this=this@entry=0x55db77a0ffa0, globalResourcesInterface=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:159
#11 0x00007fe3ca42854b in KisRequiredResourcesOperators::createLocalResourcesSnapshot<KisPSDLayerStyle>(KisPSDLayerStyle*, QSharedPointer<KisResourcesInterface>) (object=0x55db77a0ffa0, globalResourcesInterface=...) at /usr/include/c++/9/bits/atomic_base.h:318
#12 0x00007fe3ca428872 in KisRequiredResourcesOperators::cloneWithResourcesSnapshot<QSharedPointer<KisPSDLayerStyle>, KisPSDLayerStyle>(KisPSDLayerStyle const*, QSharedPointer<KisResourcesInterface>) (object=<optimized out>, globalResourcesInterface=...) at /usr/include/c++/9/bits/atomic_base.h:318
#13 0x00007fe3ca422a38 in KisPSDLayerStyle::cloneWithResourcesSnapshot(QSharedPointer<KisResourcesInterface>) const (this=<optimized out>, globalResourcesInterface=...) at /usr/include/c++/9/bits/atomic_base.h:318
#14 0x00007fe3ca3ec592 in KisAslLayerStyleSerializer::<lambda(KisNodeSP)>::operator() (node=..., __closure=0x7ffeec89c3f0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:312
#15 KisLayerUtils::recursiveApplyNodes<KisSharedPtr<KisNode>, KisAslLayerStyleSerializer::assignAllLayerStylesToLayers(KisNodeSP, const QString&)::<lambda(KisNodeSP)> >(KisSharedPtr<KisNode>, KisAslLayerStyleSerializer::<lambda(KisNodeSP)>) (node=..., func=...) at /home/wolthera/krita/src/libs/image/kis_layer_utils.h:204
#16 0x00007fe3ca3ec7e6 in KisLayerUtils::recursiveApplyNodes<KisSharedPtr<KisNode>, KisAslLayerStyleSerializer::assignAllLayerStylesToLayers(KisNodeSP, const QString&)::<lambda(KisNodeSP)> >(KisSharedPtr<KisNode>, KisAslLayerStyleSerializer::<lambda(KisNodeSP)>) (node=..., func=...) at /usr/include/c++/9/bits/atomic_base.h:318
#17 0x00007fe3ca40520d in KisAslLayerStyleSerializer::assignAllLayerStylesToLayers(KisSharedPtr<KisNode>, QString const&) (this=this@entry=0x7ffeec89c710, root=..., storageLocation=...) at /usr/include/c++/9/bits/atomic_base.h:318
#18 0x00007fe3592e86a7 in KisKraLoader::loadBinaryData(KoStore*, KisSharedPtr<KisImage>, QString const&, bool) (this=this@entry=0x55db79f02640, store=store@entry=0x55db7787b050, image=..., uri=..., external=external@entry=true) at /home/wolthera/krita/src/plugins/impex/libkra/kis_kra_loader.cpp:527
#19 0x00007fe3593222fb in KraConverter::completeLoading(KoStore*) (this=0x7ffeec89ca10, store=0x55db7787b050) at /usr/include/c++/9/bits/atomic_base.h:318
#20 0x00007fe359323712 in KraConverter::buildImage(QIODevice*) (this=this@entry=0x7ffeec89ca10, io=io@entry=0x7ffeec89cae0) at /home/wolthera/krita/src/plugins/impex/libkra/kra_converter.cpp:106
#21 0x00007fe39007e38f in KraImport::convert(KisDocument*, QIODevice*, KisPinnedSharedPtr<KisPropertiesConfiguration>) (this=<optimized out>, document=0x55db79d04d50, io=0x7ffeec89cae0) at /home/wolthera/krita/src/plugins/impex/kra/kra_import.cpp:30
#22 0x00007fe3cae6b57c in KisImportExportManager::doImport(QString const&, QSharedPointer<KisImportExportFilter>) (this=0x55db7e273210, location=..., filter=...) at /home/wolthera/krita/src/libs/global/kis_shared_ptr.h:63
#23 0x00007fe3cae6cd7c in KisImportExportManager::convert(KisImportExportManager::Direction, QString const&, QString const&, QString const&, bool, KisPinnedSharedPtr<KisPropertiesConfiguration>, bool, bool) (this=0x55db7e273210, direction=<optimized out>, location=..., realLocation=..., mimeType=..., showWarnings=<optimized out>, exportConfiguration=..., isAsync=<optimized out>, isAdvancedExporting=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qsharedpointer_impl.h:326
#24 0x00007fe3cae6dafb in KisImportExportManager::importDocument(QString const&, QString const&) (this=this@entry=0x55db7e273210, location=..., mimeType=...) at /home/wolthera/krita/src/libs/global/kis_shared_ptr.h:206
#25 0x00007fe3cae58eca in KisDocument::openFile() (this=0x55db79d04d50) at /home/wolthera/krita/src/libs/ui/KisDocument.cpp:1729
#26 0x00007fe3cae59799 in KisDocument::openPathInternal(QString const&) (this=0x55db79d04d50, path=...) at /home/wolthera/krita/src/libs/ui/KisDocument.cpp:2291
#27 0x00007fe3cae59ee1 in KisDocument::openPath(QString const&, QFlags<KisDocument::OpenFlag>) (this=0x55db79d04d50, _path=..., flags=...) at /home/wolthera/krita/src/libs/ui/KisDocument.cpp:1634
#28 0x00007fe3cae7e515 in KisMainWindow::openDocumentInternal(QString const&, QFlags<KisMainWindow::OpenFlag>) (this=<optimized out>, path=..., flags=...) at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:1113
#29 0x00007fe3cae7eb25 in KisMainWindow::openDocument(QString const&, QFlags<KisMainWindow::OpenFlag>) (this=0x55db7709f8a0, path=..., flags=...) at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:1084
#30 0x00007fe3cae3fcd3 in KisApplication::start(KisApplicationArguments const&) (this=<optimized out>, args=...) at /usr/include/c++/9/bits/atomic_base.h:413
#31 0x000055db7100a313 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/wolthera/krita/src/krita/main.cc:672
[Inferior 1 (process 2402439) detached]
Comment 5 Tiar 2021-11-03 19:52:55 UTC
My build was 3864a5bb79 + the bundle saving MR and it also still safe asserts.
SAFE ASSERT (krita): "false && "KisPSDLayerStyle is not meant to be serializable!"" in file /home/tymon/kritadev/krita/libs/image/kis_psd_layer_style.cpp, line 146

However if I choose "Ignore" it opens and it seems to work. There is a gradient that goes from white to red/pinkish. I haven't checked Krita 4.x yet to see the expected result though.
Comment 6 Eoin O'Neill 2021-11-17 04:16:58 UTC
Hi Jaiden Williams,

This is currently working on my master branch with the given test file. Would you try the latest nightly again and see if this error still occurs?
Comment 7 vanyossi 2021-11-17 20:43:52 UTC
I encountered a similar issue to this during tests, however recent builds does not make krita crash or froze upon loading files with layer styles. The file attached does not cause any issue.
Comment 8 Bug Janitor Service 2021-12-02 04:38:38 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 9 Bug Janitor Service 2021-12-17 04:35:24 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!