<div dir="ltr"><span style="font-size:12.8000001907349px">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.</span><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">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.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">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.</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Here is a small idea of the subtle stack variations:</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px"><div><div><span style="font-family:monospace,monospace">always in windows:</span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><div><font face="monospace, monospace">|        VM Callback        </font><span style="font-family:monospace,monospace">| </span><span style="font-family:monospace,monospace"><--- stack top</span></div><div><span style="font-family:monospace,monospace">|      </span><font face="monospace, monospace">WndProc context      </font><span style="font-family:monospace,monospace">| </span></div><div><span style="font-family:monospace,monospace">|           </span><font face="monospace, monospace">....            </font><span style="font-family:monospace,monospace">|</span><span style="font-family:monospace,monospace"> </span></div><div><span style="font-family:monospace,monospace">| </span><font face="monospace, monospace">Next userdll call context </font><span style="font-family:monospace,monospace">| <- WaitMessage already returned</span></div><div><span style="font-family:monospace,monospace">|         </span><font face="monospace, monospace">VM Callout        </font><span style="font-family:monospace,monospace">|</span></div><div><span style="font-family:monospace,monospace">|           </span><font face="monospace, monospace">....            </font><span style="font-family:monospace,monospace">|</span></div></div></div><div><span style="font-family:monospace,monospace"><br></span></div><font face="monospace, monospace"><div><div style="font-family:arial,sans-serif"><font face="monospace, monospace">------------------</font></div></div><div style="font-family:arial,sans-serif"><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">never happens in windows (*i think*), possible in Wine?:</font></div><div><font face="monospace, monospace"><br></font></div></font><div><div><font face="monospace, monospace">|        VM Callback        </font><span style="font-family:monospace,monospace">| </span><span style="font-family:monospace,monospace"><--- stack top</span></div><div><span style="font-family:monospace,monospace">|      </span><font face="monospace, monospace">WndProc context      </font><span style="font-family:monospace,monospace">| </span></div><div><span style="font-family:monospace,monospace">|           </span><font face="monospace, monospace">....            </font><span style="font-family:monospace,monospace">|</span><span style="font-family:monospace,monospace"> </span></div><div><span style="font-family:monospace,monospace">|    WaitMessage</span><font face="monospace, monospace"> context    </font><span style="font-family:monospace,monospace">| <--- never returned</span></div><div><span style="font-family:monospace,monospace">|         </span><font face="monospace, monospace">VM Callout        </font><span style="font-family:monospace,monospace">|</span></div><div><span style="font-family:monospace,monospace">|           </span><font face="monospace, monospace">....            </font><span style="font-family:monospace,monospace">|</span></div></div><font face="monospace, monospace"><div></div></font></div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">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?</div><div style="font-size:12.8000001907349px"><br></div><div style="font-size:12.8000001907349px">Thanks for reading!</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Javier Pimás<br>Ciudad de Buenos Aires</div></div>
</div>