USART interrupt handler is invoked only once

Since it seems the problem happens when we are re-enabling the interrupts, a possible source of the problem is that some interrupt that occurs there is the source of the problem.

I suppose it could be that the yield interrupt that was pended earlier happens at this point, and perhaps you have some other task that is switched to with a corrupted TCB that is crashing the system.