https://bugs.winehq.org/show_bug.cgi?id=54407
--- Comment #1 from Esme Povirk madewokherd@gmail.com --- Sounds like a synchronization failure? WM_USER+3 sent too early?
OK, so based on SendMessage_thread_2 being a todo_wine, we know we're dealing with SendMessage_thread_1. We also know that the WM_USER+3 is processed inside the GetMessageA call in test_SendMessage_other_thread. So it seems that after WM_USER+2 is processed, the background thread is able to send out the WM_USER+3 before the main thread is able to remove the posted WM_USER from the queue and return from GetMessageA.
I don't see anything that would prevent this from happening, so it's not clear to me whether this is intended to test some subtle timing thing, or it's just a race condition in the test.