After performing a garbage collection pass, the sweep advances the global OIT number. But it cannot be advanced further than the oldest known in-limbo transaction. In order to find one, the engine scans all the transactions since the old OIT. But the used algorithm has a quadratic cost, so it looks like a server hang if the transaction gap is big enough. See
for the test details.