I am reasonably confident that my app is doing something wrong that violates the letter of the Win32API, however performing one long-running command the program does work as expected on Windows but under Wine it hangs. This is the sort of function in which the app presumably forks off a thread to perform the long running operation, and the new fork periodically sends messages back to the Windows thread to update a progress dialog. Under Wine when I issue this command the progress dialog is never updated and I have to kill the app process, which leaves the database being updated by the app in an undefined state. There are other long running commands in this app that work fine, including updating the progress dialog; for example opening and closing the database. That is what leads me to believe that there is an implementation error in the app on this one specific command. I am not expecting to be able to fix this, I just would like to understand what is special about this one command that it does not work under Wine.