CreateThread timing behaviour (Bug 15323 affecting Warhammer Online)

David Laight david at l8s.co.uk
Sun Mar 1 16:25:32 CST 2009


On Sun, Mar 01, 2009 at 06:08:53PM +1100, Paul TBBle Hampson wrote:
> I'm looking into Bug 15323, and it seems to come down to a
> particular undocumented behaviour of CreateThread on Windows,
> which is probably also a bug in the usage of it by warpatch.bin,
> the Warhammer Online patcher.
> 
> Problem code outline:
> Main thread:
> flag = false;
> createThread( newThreadFun )
> sleep until flag = false;
> 
> newThreadFun:
> flag = true
> CreateHiddenWindowAndWaitForMessageFromMainThread;
> flag = false;
> return;
> 
> On inspection, the only way this can work is if the main thread's
> "sleep until" test is done before newThreadFun gets started.

Isn't that backwards?
Doesn't the above rely on the new thread pre-empting the main thread?
(The above example seems to be implementing a function call!)

In any case the above example is doomed to failure.
I don't expect that windows defines which thread runs first.
And on a multi-processor system they are likely to both run.

So I'd guess that warpatch.bin or broken.

	David

-- 
David Laight: david at l8s.co.uk



More information about the wine-devel mailing list