ole32:fix CoWaitForMultipleHandles cause RPC hang
sebastian at fds-team.de
Thu Dec 11 09:06:29 CST 2014
On 11.12.2014 15:07, Changhui Liu wrote:
> Because there's a RPC request need to be handled by OLE apartment window proc apartment_wndproc.
> So, after received a WM_QUIT,
> if the GUI thread in calling CoWaitForMultipleHandles don't handle message loop any more ,
> the RPC will never be handled, the RPC dispatch thread will be hang.
There are several issues with this patch. You wrote in your last mail:
> so this patch can't pass test on testbot.winehq.org, it only pass test on wine.
> The test result is here, https://testbot.winehq.org/JobDetails.pl?Key=10727.
It is not clear what you mean. The test should of course also pass on testbot.winehq.org, if it doesn't, this means that Wine doesn't properly reproduce the expected behaviour. You need to create a test so that it passes on both wine and the testbot, otherwise nothing is tested at all.
Other issues in your patch:
* It seems very unlikely that this is how quit messages are processed. Immediately calling PostQuitMessage(...) but continuing to process messages means that effectively WM_QUIT is lost.
* Always add a "\n" at the end of ok(...) messages.
* Try to avoid huge sleeps like Sleep(5000). This will probably cause the tests time out.
Unfortunately I didn't have much time to look into this issue myself so far, but I guess I'll have more time at the weekend.
More information about the wine-devel