The library printf may not be thread safe, and may use excessive CPU time spin waiting on the communications channel, possibly even with interrupts disabled.
I personally NEVER use printf in embedded code. I have my own serial output routines that I can send message through to track the program, that I know have been made thread safe, and have know blocking characteristics.