mirror of
https://github.com/reactos/reactos.git
synced 2024-08-12 14:16:30 +00:00
[CONSRV]
Add diagnostic dprints to try to understand the problems described in CORE-9742 and CORE-10510 svn path=/trunk/; revision=69879
This commit is contained in:
parent
57dd4b34c7
commit
5b9077f992
|
@ -440,7 +440,7 @@ CsrThreadRefcountZero(IN PCSR_THREAD CsrThread)
|
||||||
Status = NtClose(CsrThread->ThreadHandle);
|
Status = NtClose(CsrThread->ThreadHandle);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
DPRINT1("CSR: NtClose failed, we are going to ASSERT, Status = 0x%08lx; [%02x,%02x] Process: 0x%p; ThreadHandle: 0x%p\n",
|
DPRINT1("CSR: NtClose failed, we are going to ASSERT, Status = 0x%08lx; [0x%x, 0x%x] Process: 0x%p; ThreadHandle: 0x%p\n",
|
||||||
Status, CsrThread->ClientId.UniqueProcess, CsrThread->ClientId.UniqueThread, CsrProcess, CsrThread->ThreadHandle);
|
Status, CsrThread->ClientId.UniqueProcess, CsrThread->ClientId.UniqueThread, CsrProcess, CsrThread->ThreadHandle);
|
||||||
|
|
||||||
ASSERT(NT_SUCCESS(Status));
|
ASSERT(NT_SUCCESS(Status));
|
||||||
|
|
|
@ -147,6 +147,7 @@ GuiConsoleInputThread(PVOID Param)
|
||||||
PGUI_INIT_INFO GuiInitInfo = (PGUI_INIT_INFO)Param;
|
PGUI_INIT_INFO GuiInitInfo = (PGUI_INIT_INFO)Param;
|
||||||
DESKTOP_CONSOLE_THREAD DesktopConsoleThreadInfo;
|
DESKTOP_CONSOLE_THREAD DesktopConsoleThreadInfo;
|
||||||
ULONG_PTR InputThreadId = HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread);
|
ULONG_PTR InputThreadId = HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread);
|
||||||
|
HANDLE hThread = NULL;
|
||||||
|
|
||||||
LONG WindowCount = 0;
|
LONG WindowCount = 0;
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
@ -166,8 +167,21 @@ GuiConsoleInputThread(PVOID Param)
|
||||||
if (!NT_SUCCESS(Status)) goto Quit;
|
if (!NT_SUCCESS(Status)) goto Quit;
|
||||||
|
|
||||||
/* Connect this CSR thread to the USER subsystem */
|
/* Connect this CSR thread to the USER subsystem */
|
||||||
|
{
|
||||||
|
PCSR_THREAD CurrThread = CsrGetClientThread();
|
||||||
|
|
||||||
|
DPRINT1("CsrConnectToUser being called; [0x%x, 0x%x]...\n",
|
||||||
|
CurrThread->ClientId.UniqueProcess, CurrThread->ClientId.UniqueThread);
|
||||||
|
|
||||||
pcsrt = CsrConnectToUser();
|
pcsrt = CsrConnectToUser();
|
||||||
if (pcsrt == NULL) goto Quit;
|
if (pcsrt == NULL) goto Quit;
|
||||||
|
hThread = pcsrt->ThreadHandle;
|
||||||
|
|
||||||
|
DPRINT1("CsrConnectToUser was successfully called; [0x%x, 0x%x] -- hThread = 0x%p, pcsrt->Process = 0x%p; pcsrt->ThreadHandle = 0x%p from [0x%x, 0x%x]\n",
|
||||||
|
CurrThread->ClientId.UniqueProcess, CurrThread->ClientId.UniqueThread,
|
||||||
|
hThread, pcsrt->Process, pcsrt->ThreadHandle,
|
||||||
|
pcsrt->ClientId.UniqueProcess, pcsrt->ClientId.UniqueThread);
|
||||||
|
}
|
||||||
|
|
||||||
/* Assign the desktop to this thread */
|
/* Assign the desktop to this thread */
|
||||||
if (!SetThreadDesktop(DesktopConsoleThreadInfo.DesktopHandle)) goto Quit;
|
if (!SetThreadDesktop(DesktopConsoleThreadInfo.DesktopHandle)) goto Quit;
|
||||||
|
@ -307,7 +321,20 @@ Quit:
|
||||||
CloseDesktop(DesktopConsoleThreadInfo.DesktopHandle); // NtUserCloseDesktop
|
CloseDesktop(DesktopConsoleThreadInfo.DesktopHandle); // NtUserCloseDesktop
|
||||||
|
|
||||||
/* Cleanup CSR thread */
|
/* Cleanup CSR thread */
|
||||||
if (pcsrt) CsrDereferenceThread(pcsrt);
|
if (pcsrt)
|
||||||
|
{
|
||||||
|
PCSR_THREAD CurrThread = CsrGetClientThread();
|
||||||
|
|
||||||
|
DPRINT1("CsrDereferenceThread being called; [0x%x, 0x%x] -- hThread = 0x%p, pcsrt->Process = 0x%p; pcsrt->ThreadHandle = 0x%p from [0x%x, 0x%x]\n",
|
||||||
|
CurrThread->ClientId.UniqueProcess, CurrThread->ClientId.UniqueThread,
|
||||||
|
hThread, pcsrt->Process, pcsrt->ThreadHandle,
|
||||||
|
pcsrt->ClientId.UniqueProcess, pcsrt->ClientId.UniqueThread);
|
||||||
|
|
||||||
|
if (hThread != pcsrt->ThreadHandle)
|
||||||
|
DPRINT1("WARNING!! hThread != pcsrt->ThreadHandle, you may expect crashes soon!!\n");
|
||||||
|
|
||||||
|
CsrDereferenceThread(pcsrt);
|
||||||
|
}
|
||||||
|
|
||||||
/* Exit the thread */
|
/* Exit the thread */
|
||||||
RtlExitUserThread(Status);
|
RtlExitUserThread(Status);
|
||||||
|
|
Loading…
Reference in a new issue