A possible reason:
http://cboard.cprogramming.com/c-programming/98649-serial-port-read-blocking.html
from the last part of the webpage:
Ah
ha! Indeed! - I think I have found the problem, it seems that the
Kernel is using the serial port to print error messages to (for some
reason) – I have turned it off and it works like a charm now! - though
I may need to find out why I was getting errors! - heh
possible answer?