Eine CriticalSection blockt zuverlässig alles ab, was da rein will - unabhängig davon, wo es herkommt.
Das ist formell nicht ganz richtig. Eine CriticalSection kann immer nur von einem Thread durchlaufen werden, von diesem allerdings auch mehrmals - andernfalls könnte der Thread sich selbst dead-locken. Ein innerhalb der gezeigten CriticalSection rekursiv aufgerufenes WriteLnLog würde also problemlos funktionieren und genau das gezeigte Phänomen erzeugen.
Der gezeigte Code fällt allerdings offenbar nicht darunter, aber andererseits ist er auch nicht mal compilierbar.