Hi all,

I just saw that I get an
err:win32:SYSLEVEL_CheckNotLevel (2): Holding lock of level 2!
error when I run a program with --debugmsg +relay and it crashes
and winedbg should be launched:
trace:relay:WINPROC_CallWndProc 
(wndproc=DesktopWndProc_locked,hwnd=0000008c,msg=WM_NCCREATE,wp=00000000,lp=00000000)
Call x11drv.16: IsSingleWindow() ret=404a48a9 fs=008f
err:win32:SYSLEVEL_CheckNotLevel (2): Holding lock of level 2!

Hmm, and as IsSingleWindow() got called from DesktopWndProc_*locked*,
relay tracing gives a lock error as wndptr is locked and we call a function
in x11drv.

I guess this problem appears now due to the recent DLL separation work
done by Alexandre.

This isn't easy to fix, AFAICS.
Normally I think we would just suspend the wnd lock and resume after the call,
but of course the USER_Driver.pIsSingleWindow is not only
x11drv.IsSingleWindow, but often native USER.IsSingleWindow. And in the
native case, we can't be sure whether the native code doesn't want to do
some more window locking.
So we can't suspend the lock easily.

This problem will show up in several cases now, I think, as more and more
*builtin* DLLs will be separated and thus relay trace capable and subject
to the locking check.

What to do here ?? (and in similar cases !)

For a description of the relay trace lock checking feature, see e.g.:
From: Ulrich Weigand <[EMAIL PROTECTED]>
Subject: Re: event.c
Date: Thu, 11 May 2000 23:21:53 +0200 (MET DST)

Andreas Mohr

Reply via email to