[Bug 7909] Photoshop 5.0 crashes
Wine Bugs
wine-bugs at winehq.org
Thu Apr 12 07:54:14 CDT 2007
http://bugs.winehq.org/show_bug.cgi?id=7909
------- Additional Comments From focht at gmx.net 2007-12-04 07:54 -------
Hello,
your observation is correct.
I used ps 5.5 trial + latest wine snapshot.
The following pseudo code snippet illustrates the lockup in photoshop (made up
from disassembly):
--- pseudo code ---
bool some_app_class::waitMouseRButtonUp( int& x, int& y)
{
// right mouse button up ?
if( ::GetAsyncKeyState( ::GetSystemMetrics(SM_SWAPBUTTON) ? VK_LBUTTON :
VK_RBUTTON) & 0x8000) == 0x8000)
{
// right mouse button still down, wait until up
while( ::GetAsyncKeyState( ::GetSystemMetrics(SM_SWAPBUTTON) ? VK_LBUTTON :
VK_RBUTTON) & 0x8000) == 0x8000);
}
if ( m_hwnd != 0)
{
MSG msg;
if( !::PeekMessage (&msg, m_hwnd, WM_RBUTTONUP, WM_RBUTTONUP, PM_REMOVE))
return false;
POINT pt = { GET_X_LPARAM( msg.lParam), GET_Y_LPARAM( msg.lParam) };
::ClientToScreen( m_hwnd, &pt);
x = pt.x;
y = pt.y;
}
return true;
}
--- pseudo code ---
Running "WINEDEBUG=+key,+msg" shows following sequence:
--- trace ---
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x20196,msg=WM_SETCURSOR,wp=00020196,lp=02040001)
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x4002e,msg=WM_SETCURSOR,wp=00020196,lp=02040001)
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x10026,msg=WM_SETCURSOR,wp=00020196,lp=02040001)
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x10024,msg=WM_SETCURSOR,wp=00020196,lp=02040001)
trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8001
trace:key:X11DRV_GetAsyncKeyState (10) -> 0
trace:key:X11DRV_GetAsyncKeyState (12) -> 0
trace:key:X11DRV_GetAsyncKeyState (11) -> 0
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x20196,msg=WM_NCHITTEST,wp=00000000,lp=00a3011a)
trace:key:X11DRV_GetAsyncKeyState (20) -> 0
trace:key:X11DRV_GetAsyncKeyState (10) -> 0
trace:key:X11DRV_GetAsyncKeyState (20) -> 0
trace:key:X11DRV_GetAsyncKeyState (12) -> 0
trace:key:X11DRV_GetAsyncKeyState (11) -> 0
trace:key:X11DRV_GetAsyncKeyState (2e) -> 0
trace:key:X11DRV_GetAsyncKeyState (8) -> 0
trace:key:X11DRV_GetAsyncKeyState (1b) -> 0
trace:key:X11DRV_GetAsyncKeyState (10) -> 0
trace:key:X11DRV_GetAsyncKeyState (12) -> 0
trace:key:X11DRV_GetAsyncKeyState (11) -> 0
trace:msg:WINPROC_CallProcWtoA
(hwnd=0x20196,msg=WM_NCHITTEST,wp=00000000,lp=00a3011a)
trace:key:X11DRV_GetAsyncKeyState (20) -> 0
trace:key:X11DRV_GetAsyncKeyState (12) -> 0
trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8000
trace:key:X11DRV_GetAsyncKeyState (2) -> ffff8000
....
<continues endlessly>
--- trace ---
The rbutton up event shows up first (trace:key:X11DRV_GetAsyncKeyState (2) ->
ffff8001),
No previous rbutton down event is seen.
The offending code in photoshop is executed after seeing second WM_NCHITTEST
message.
Due to "trace:key:X11DRV_GetAsyncKeyState (2)" returning "rbutton down" state
all the time, it loops forever (see "while" loop in code).
Maybe some kind of race condition or missed mouse event/update
(X11DRV_MsgWaitForMultipleObjectsEx)...
Sidenote: While debugging/killing the hanging app, wine x11 subsystem killed my
window borders (decorator/compiz) several times.
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the wine-bugs
mailing list