Description of Problem: If someone does a getc operation that uses the virtual vectors to call into redboot, then the system locks up and no other threads run because interrupts are disabled and the scheduler is locked. Instead hal_if_diag_read_char() should call a new CYGACC_COMM_IF_GETC_NONBLOCK operation so that the looping to detect for a character is done with interrupts enabled at least some of the time. Slower, but at least not stopped.
I disagree. If you use the polled routines provided by the VV, well, you'll be polling. If you need an interrupt safe environment, use an IO driver.
I can't disagree with "If you need an interrupt safe environment, use an IO driver.", but I don't see any harm in changing this behaviour (except arguably bloat because we can't get rid of the non-block version now it's there).
This bug has moved to http://bugs.ecos.sourceware.org/show_bug.cgi?id=58193