[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