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.
jcobban3 wrote:> 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.It's hard to talk abstract in this case. Show some code snippets - how you start child process/thread? How are you sending messages back? BTW you can only fork a process not a thread. It's not correct to say "fork a thread". You just create a thread, since win32api supports kernel threads.
I apologize that I did not make myself clear. This is a commercial app that I am running and for which I do not have the source code. Perhaps what I should ask for is advice on how to use the debugging features of Wine to determine what is the difference between the long running commands in this commercial app that work and those that do not work. The specific release of this app, Family Tree Maker, that I am running is not listed in the database and I do not want to upgrade to a more recent release.