The files in question contain fonts that are shared as resources across multiple files. The underlying data structure for the font is not thread safe having a byte[] indexer that could be manipulated by another thread. So as the glyphs are parsed lazily it's possible for the the byte[] pointer to move incorrectly for a concurrent parse.
For the time being I've made the byte[] pointer thread local which seems to fix the issue. Further testing is needed to verify the fix as well as track down any further issues.
The files in question contain fonts that are shared as resources across multiple files. The underlying data structure for the font is not thread safe having a byte[] indexer that could be manipulated by another thread. So as the glyphs are parsed lazily it's possible for the the byte[] pointer to move incorrectly for a concurrent parse.
For the time being I've made the byte[] pointer thread local which seems to fix the issue. Further testing is needed to verify the fix as well as track down any further issues.