I am currently analyzing problems observed with a huge migration from Plone 4.2 to 5.2. Those problems look as follows: a search is performed (successfully) but the later iteration over the result brain sequence fails with a
KeyError: the search has apparently returned a catalog id, the catalog does not know about. That could be explained with an index inconsistency; however, in this case the problem should occur deterministically - which is not the case: the same search against the same catalog followed by the same iteration usually succeeds and fails only occasionally.
For the moment, I assume a memory corruption causing a non-deterministic change of the catalog id.
The migrated system is huge - with dozens of external extensions implemented in C. Any of them might be responsible for a potential memory corruption. However, I could not find symptoms in the Plone 4.2 installation; the problem is apparently new in the Plone 5.2 setup. In principle, the new Plone 5.2 setup should use the same external extension versions as the Plone 4.2 setup (not yet verified); in this case, some of the C extensions coming with Plone 5.2/Zope 4 might be responsible.
I will keep you informed.