In method Box2D.Collision.b2SeparationFunction.Initialize there is a suspicious comparison at line 116:
else if (cache.indexA[0] == cache.indexA[0])
{
// Two points on B and one on A
The else if is always true. Did you mention:
else if (cache.indexA[0] == cache.indexA[1])
?