- Kill some debug prints.

- Remove debug-test infinite loop from DbgkForwardException
- Fix missing "break" statement in DbgkFreeDebugEvent, causing a handle leak, and in DbgkpOpenHandles, causing user-mode to get a kernel-mode handle for DLL images instead of the correct duplicated one.
- Currently struggling with the fact that ArbitraryUserPointer seems to be reset to zero before it's read for the debug event, so DLL names don't come through.

svn path=/trunk/; revision=25011
This commit is contained in:
Alex Ionescu 2006-12-01 08:20:37 +00:00
parent 94912681e1
commit d67835f9dc
4 changed files with 3 additions and 5 deletions

View file

@ -282,7 +282,6 @@ DbgUiConvertStateChangeStructure(IN PDBGUI_WAIT_STATE_CHANGE WaitStateChange,
DebugEvent->u.LoadDll.lpImageName = DebugEvent->u.LoadDll.lpImageName =
((PTEB)ThreadBasicInfo.TebBaseAddress)-> ((PTEB)ThreadBasicInfo.TebBaseAddress)->
Tib.ArbitraryUserPointer; Tib.ArbitraryUserPointer;
DPRINT1("Image name: %p\n", DebugEvent->u.LoadDll.lpImageName);
} }
else else
{ {

View file

@ -2030,7 +2030,6 @@ LdrpLoadModule(IN PWSTR SearchPath OPTIONAL,
ImageBase = 0; ImageBase = 0;
ArbitraryUserPointer = NtCurrentTeb()->Tib.ArbitraryUserPointer; ArbitraryUserPointer = NtCurrentTeb()->Tib.ArbitraryUserPointer;
NtCurrentTeb()->Tib.ArbitraryUserPointer = FullDosName.Buffer; NtCurrentTeb()->Tib.ArbitraryUserPointer = FullDosName.Buffer;
DPRINT1("POI. DAT: %p %S\n", NtCurrentTeb()->Tib.ArbitraryUserPointer, FullDosName.Buffer);
Status = NtMapViewOfSection(SectionHandle, Status = NtMapViewOfSection(SectionHandle,
NtCurrentProcess(), NtCurrentProcess(),
&ImageBase, &ImageBase,
@ -2042,7 +2041,6 @@ LdrpLoadModule(IN PWSTR SearchPath OPTIONAL,
MEM_COMMIT, MEM_COMMIT,
PAGE_READONLY); PAGE_READONLY);
NtCurrentTeb()->Tib.ArbitraryUserPointer = ArbitraryUserPointer; NtCurrentTeb()->Tib.ArbitraryUserPointer = ArbitraryUserPointer;
DPRINT1("Poi gone!\n");
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("map view of section failed (Status 0x%08lx)\n", Status); DPRINT1("map view of section failed (Status 0x%08lx)\n", Status);

View file

@ -329,7 +329,6 @@ DbgkForwardException(IN PEXCEPTION_RECORD ExceptionRecord,
PAGED_CODE(); PAGED_CODE();
DBGKTRACE(DBGK_EXCEPTION_DEBUG, DBGKTRACE(DBGK_EXCEPTION_DEBUG,
"ExceptionRecord: %p Port: %p\n", ExceptionRecord, DebugPort); "ExceptionRecord: %p Port: %p\n", ExceptionRecord, DebugPort);
while (TRUE);
/* Setup the API Message */ /* Setup the API Message */
ApiMessage.h.u1.Length = sizeof(DBGKM_MSG) << 16 | ApiMessage.h.u1.Length = sizeof(DBGKM_MSG) << 16 |
@ -401,6 +400,7 @@ DbgkpFreeDebugEvent(IN PDEBUG_EVENT DebugEvent)
/* Get the pointer */ /* Get the pointer */
Handle = &DebugEvent->ApiMsg.CreateProcess.FileHandle; Handle = &DebugEvent->ApiMsg.CreateProcess.FileHandle;
break;
/* As does DLL load */ /* As does DLL load */
case DbgKmLoadDllApi: case DbgKmLoadDllApi:
@ -1021,6 +1021,7 @@ DbgkpOpenHandles(IN PDBGUI_WAIT_STATE_CHANGE WaitStateChange,
/* Fall through to duplicate file handle */ /* Fall through to duplicate file handle */
DupHandle = &WaitStateChange->StateInfo.LoadDll.FileHandle; DupHandle = &WaitStateChange->StateInfo.LoadDll.FileHandle;
break;
/* Anything else has no handles */ /* Anything else has no handles */
default: default:

View file

@ -693,7 +693,7 @@ KiDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
if (PsGetCurrentProcess()->DebugPort) if (PsGetCurrentProcess()->DebugPort)
{ {
/* FIXME : TODO */ /* FIXME : TODO */
ASSERT(FALSE); //KEBUGCHECK(0);
} }
else if (KiDebugRoutine(TrapFrame, else if (KiDebugRoutine(TrapFrame,
ExceptionFrame, ExceptionFrame,