Fix issue with threadpool and wait for multiple objects on Linux
authorJan Vorlicek <janvorli@microsoft.com>
Thu, 19 Nov 2015 08:16:34 +0000 (09:16 +0100)
committerJan Vorlicek <janvorli@microsoft.com>
Thu, 19 Nov 2015 08:25:27 +0000 (09:25 +0100)
commit4a8bdea12fca5d5889ce1e264d27cabc1e10ebf8
treea2cf963bfa09ff79452225d4e30d2c0b3cbed0b2
parent76942bb17c28084b0fdad8b6836fb433d9302789
Fix issue with threadpool and wait for multiple objects on Linux

There is a method ThreadpoolMgr::ShiftWaitArray which uses memcpy to do
a move a segment of the waitPointer and waitHandle arrays one position
down, so the source and destination ranges overlap. However, it uses
memcpy, which on Linux copies items starting from the last one. So
the arrays get corrupted after the memcpy, containing multiple copies
of the last element and not containig some elements that were expected
to move.
The fix is to use memmove which should be used when the source and
destination memory regions overlap.
src/vm/win32threadpool.h