Upgrading OpenJDK to use LittleCMS 2.13.1 I found that the commit
was causing one of our "stress" tests to have a native crash inside LittleCMS.
The stress test creates lots of threads updating profiles (internally using cmsReadRawTag/cmswriteRawTag) and then using them so it looked like a threading problem.
I found it to be nothing to do with stress testing nor threading and to be a combination of a JDK mis-use of the LittleCMS APIs exposing a LittleCMS bug which actually causes the crash.
The LittleCMS upstream bug will be dealt with separately but the OpenJDK bug needs to be fixed for this API to work properly regardless of the status of the LittleCMS bug.
ICC_Profile provides an API to update the content of a tag for a profile.
For this the implementation use cmsReadRawTag/cmsWriteRawTag to copiy a profile completely and instantiate a new one.
But this profile is never opened - and the use of the "Raw" APIs means it needs to be per the docs at
https://www.littlecms.com/LittleCMS2.13%20API.pdf which state on p67
Accessing tags as raw data
Those functions allows to read/write directly to the ICC profile any data, without checking anything.
As a rule, mixing Raw with cooked doesn't work, so writing a tag as raw and then reading it as cooked
without serializing does result into an error. If that is what you want, you will need to dump the profile to
memory or disk and then reopen it.