http://bugs.winehq.org/show_bug.cgi?id=9356
--- Comment #14 from Lei Zhang thestig@google.com 2007-11-24 22:05:35 --- well, I ended up not looking at this bug because I didn't have a computer with a serial port...
now that I do, I tried out Hactronic and here's what I found:
In NtReadFile(), with the old code, we would try to do a read(), which returns 0, and NtReadFile() returns. NtReadFile() gets called repeatedly until I hit cancel, or presumably until when it actually reads some data.
With the new code, read() returns EAGAIN, so we keep going until we call poll() later in NtReadFile() with an infinite timeout. Since there's no hardware connected to the serial port, the poll() call hangs.