diff --git a/include/winbase.h b/include/winbase.h
index 2ae06cadbb8d49ffed6918afbab6f0c22fcc8997..e32946fb3abc08c8b3a085d416e56681b97805c3 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1918,6 +1918,7 @@ VOID        WINAPI RestoreThunkLock(DWORD);
 void        WINAPI SetProcessDword(DWORD,INT,DWORD);
 VOID        WINAPI UnMapLS(DWORD);
 HFILE       WINAPI Win32HandleToDosFileHandle(HANDLE);
+VOID        WINAPI _CheckNotSysLevel(SYSLEVEL *lock);
 DWORD       WINAPI _ConfirmWin16Lock(void);
 DWORD       WINAPI _ConfirmSysLevel(SYSLEVEL*);
 VOID        WINAPI _EnterSysLevel(SYSLEVEL*);
diff --git a/scheduler/syslevel.c b/scheduler/syslevel.c
index f03d8dcd36ee247179ab1c3b93295bfb7e5f37eb..90f89892fabc3ee2f157a3ffcb9312fc42d85d65 100644
--- a/scheduler/syslevel.c
+++ b/scheduler/syslevel.c
@@ -145,7 +145,11 @@ DWORD WINAPI _ConfirmSysLevel(SYSLEVEL *lock)
  */
 VOID WINAPI _CheckNotSysLevel(SYSLEVEL *lock)
 {
-    FIXME("(%p)\n", lock);
+    if (lock && lock->crst.OwningThread == GetCurrentThreadId() && lock->crst.RecursionCount)
+    {
+        ERR( "Holding lock %p level %d\n", lock, lock->level );
+        DbgBreakPoint();
+    }
 }