Hartmut Birr wrote:
Hi,
I get this again. I'm using cmd as login shell and starting the
explorer. I get hundreds of lines like this:
(ex/handle.c:721) Looking up invalid handle 0xffffffff
Frames: <ntoskrnl.exe:26efd (ex/handle.c:722 (ExpLookupHandleTableEntry))>
<ntoskrnl.exe:27576 (ex/handle.c:915 (ExMapHandleToPointer))>
<ntoskrnl.exe:748d8 (ps/cid.c:106 (PsLookupCidHandle))>
<ntoskrnl.exe:7c497 (ps/process.c:2709 (PsLookupProcessByProcessId))>
<win32k.sys:464d6 (objects/gdiobj.c:1219 (GDIOBJ_SetOwnership))>
<win32k.sys:6840 (eng/surface.c:466 (EngDeleteSurface))>
<win32k.sys:52d16 (objects/text.c:1922 (NtGdiExtTextOut))>
<ntoskrnl.exe:3fb2 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccUVaaaa.s:178
(KiSystemService))>
<gdi32.dll:9c22 (objects/text.c:272 (ExtTextOutW))>
The starting point does change but GDIOBJ_SetOwnership and later are
always the same. I attach my changes in ntoskrnl. I think that the
changes in ob/handle.c are not relevant. It is the smp build on my smp
machine.
Does the attached patch help? I noticed that the handle number gets
converted along the way by the HANDLE_TO_EX_HANDLE macro and in fact the
original ID passed to PsLookupProcessByProcessId is zero. This makes
prefect sense since it's used as a marker for global GDI handles.
- Filip
P.S. Sorry for the ugly grammar mistakes in my previous post. I should
read twice what I wrote before hitting the Send button. ;-)