Read from UART seems to overwrite while in buffer
Most likely your FIFO buffer on your UART is simply full (it's only 8 levels deep). Section 21.7.2 of the PIC32 Family Reference Manual states: 


  If the FIFO is full and a new character is fully received into the
  UxRSR register, the overrun error bit, OERR (UxSTA&lt;1>), is set. The
  word in UxRSR register is not kept, and further transfers to the
  receive FIFO are inhibited as long as the OERR bit is set. The user
  must clear the OERR bit in software to allow further data to be
  received.


Why this would cause the PIC to "lock up" is hard to say from the information you have provided. Maybe it goes into an interrupt handler that isn't properly defined.