[Cope with ThreadRelocated when traversing the blocked_queue Simon Marlow **20081106114045 Fixes "invalid what_next field" in ioref001 on Windows, and perhaps others ] { hunk ./rts/posix/Select.c 247 + + if (tso->what_next == ThreadRelocated) { + continue; + } + hunk ./rts/win32/AsyncIO.c 278 - for(tso = blocked_queue_hd ; tso != END_TSO_QUEUE; prev = tso, tso = tso->_link) { + for(tso = blocked_queue_hd ; tso != END_TSO_QUEUE; tso = tso->_link) { hunk ./rts/win32/AsyncIO.c 280 + if (tso->what_next == ThreadRelocated) { + /* Drop the TSO from blocked_queue */ + if (prev) { + setTSOLink(&MainCapability, prev, tso->_link); + } else { + blocked_queue_hd = tso->_link; + } + if (blocked_queue_tl == tso) { + blocked_queue_tl = prev ? prev : END_TSO_QUEUE; + } + continue; + } + hunk ./rts/win32/AsyncIO.c 327 + + prev = tso; }