Does wine send window messages without waiting apps to reenter userdll?

Javier Pimás elpochodelagente at gmail.com
Tue Aug 25 15:09:47 CDT 2015


Hi! this is a very low-level technical question and my first one to this
list so please take with a grain of salt. I'm debugging a 32 bit app in
wine 1.6.2, on ubuntu 15.04 64 bits.

The app I'm debugging is a smalltalk vm, so it is very possessive with the
native stack, synchronization, callbacks and things like that. I'm having a
problem that happens in wine and not in windows, and the following thing I
describe might be the cause, it's very subtle.

The problem is related with non-queued messages, in a loop that calls
WaitMessage and does something more if there's a message. When running on
windows, WaitMessage blocks the thread until there's something (queued or
non-queued). If the message is non-queued, it is not immediately delivered
(adding frames to the stack by hand), but windows just awakes the thread
and waits it to reenter the OS (or userdll, I guess). I'm not sure if i can
trust wine to do the same, or if it awakes the process with a bunch of
frames pushed in the stack so that the non-queued message is delivered as
if WaitMessage never returned.

Here is a small idea of the subtle stack variations:

always in windows:

|        VM Callback        | <--- stack top
|      WndProc context      |
|           ....            |
| Next userdll call context | <- WaitMessage already returned
|         VM Callout        |
|           ....            |

------------------

never happens in windows (*i think*), possible in Wine?:

|        VM Callback        | <--- stack top
|      WndProc context      |
|           ....            |
|    WaitMessage context    | <--- never returned
|         VM Callout        |
|           ....            |

As I said, this is very low-level and subtle. Most apps wouldn't notice the
difference, but this is a VM. Is the second layout possible in wine?

Thanks for reading!

-- 
Javier Pimás
Ciudad de Buenos Aires
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20150825/bbdec4e4/attachment.html>


More information about the wine-devel mailing list