[Wine]LockWindowUpdate

Raimund Eimann raimund at cs.auckland.ac.nz
Fri May 6 02:20:23 CDT 2005


On Friday 06 May 2005 19:08, James Hawkins wrote:
> On 5/6/05, Raimund Eimann <raimund at cs.auckland.ac.nz> wrote:
> > I've appended some of the output in to file: (this includes the first two
> > occurrences of "err:" as line header)...
> >
> > Cheers,
> > Raimund
> > ...
> > 0009:Call kernel32._EnterSysLevel(407ff5c0) ret=40766880
> > err:syslevel:_EnterSysLevel (0x407ff5c0, level 2): Holding 0x41214d60,
> > level 3. Expect deadlock!
> > 0009:Call ntdll.RtlEnterCriticalSection(407ff5c0) ret=4052823b
> > 0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=4052823b
> > 0009:Ret  kernel32._EnterSysLevel() retval=405aa600 ret=40766880
> > 0009:Call kernel32._LeaveSysLevel(407ff5c0) ret=40766910
> > 0009:Call ntdll.RtlLeaveCriticalSection(407ff5c0) ret=40527f71
> > 0009:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=40527f71
> > 0009:Ret  kernel32._LeaveSysLevel() retval=405aa7ce ret=40766910
> > 0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
> > 0009:Call user32.IsWindowVisible(00010022) ret=00431b15
> > 0009:Call kernel32._EnterSysLevel(407ff5c0) ret=40766880
> > err:syslevel:_EnterSysLevel (0x407ff5c0, level 2): Holding 0x41214d60,
> > level 3. Expect deadlock!
> > 0009:Call ntdll.RtlEnterCriticalSection(407ff5c0) ret=4052823b
> > 0009:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=4052823b
> > 0009:Ret  kernel32._EnterSysLevel() retval=405aa600 ret=40766880
> > 0009:Call kernel32._LeaveSysLevel(407ff5c0) ret=40766910
>
> From the bit of log we have here, UpdateWindow and IsWindowVisible are
> being called, and we're getting a deadlock, well we're supposed to
> expect it :-)  Can you run this command and pipe the output to another
> log file?
>
> grep "UpdateWindow" oldlogfile > newlogfile1
> grep "IsWindowVisible" oldlogfile > newlogfile2

Done.

head (newlogfile1):
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010044) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010044) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010044) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010044) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010044) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2
0009:Call user32.UpdateWindow(00010024) ret=00424df2
0009:Ret  user32.UpdateWindow() retval=00000001 ret=00424df2


head(newlogfile2):
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010022) ret=00431b15
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=00431b15
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010026) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010026) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010026) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0001002e) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0001002e) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0001002e) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0001002e) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010038) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0001003a) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(0002003c) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=00423b8a
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=00423b8a
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010024) ret=00423b8a
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=00423b8a
0009:Call user32.IsWindowVisible(00010022) ret=00431b15
0009:Ret  user32.IsWindowVisible() retval=00000000 ret=00431b15
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4
0009:Call user32.IsWindowVisible(00010020) ret=4194f3f4
0009:Ret  user32.IsWindowVisible() retval=00000001 ret=4194f3f4

> We can use newlogfile[1,2] to see how often and where these calls are
> occurring.  I can't tell if we're calling UpdateWindow and
> IsWindowVisible over and over again or not with this log, but post the
> new logs and we'll have a look.  Anyone else have any ideas?

I've just sent the heads of the files. Let me know if more is required. 
logfile1 is ~6.4MB, logfile2 is ~40kB...

Cheers,
Raimund

-- 
Raimund Eimann
Department of Computer Science
University of Auckland, Tamaki Campus, 731.334
Ph. +64 9 373 7599 x85288, Skype: eimann, ICQ: 210376863



More information about the wine-users mailing list