[PATCH] user32: Reimplement destroy_thread_windows() on top of WIN_DestroyWindow().
Paul Gofman
pgofman at codeweavers.com
Wed Oct 13 13:22:21 CDT 2021
On 10/13/21 20:08, Marvin wrote:
> Hi,
>
> While running your changed tests, I think I found new failures.
> Being a bot and all I'm not very good at pattern recognition, so I might be
> wrong, but could you please double-check?
>
> Full results can be found at:
> https://testbot.winehq.org/JobDetails.pl?Key=99988
>
> Your paranoid android.
>
>
> === debiant2 (32 bit WoW report) ===
>
> user32:
> msg.c:9208: Test failed: WaitForSingleObject failed 102
> msg.c:9214: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
> msg.c:9214: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
> msg.c:9214: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
It looks like these test failures (which are in fact random) are not a
coincidence and are triggered by the patch, although the core issue is
probably the preexisting race in WIN_DestroyWindow():
WM_WINE_DESTROYWINDOW sent to other thread child currently should be
processed before WIN_DestroyWindow() reaches server with destroy_window
for the parent. Otherwise, during destroy_window() in the server the
server part of child windows is destroyed and the messages to them get
cleaned up from the queue. So the grandchild thread in test waiting for
the message for its grandchild window never gets it. I am looking into
how that can be solved.
More information about the wine-devel
mailing list