Author: hbelusca
Date: Thu Nov 12 20:24:18 2015
New Revision: 69879
URL:
http://svn.reactos.org/svn/reactos?rev=69879&view=rev
Log:
[CONSRV]
Add diagnostic dprints to try to understand the problems described in CORE-9742 and
CORE-10510
Modified:
trunk/reactos/subsystems/win32/csrsrv/thredsup.c
trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
Modified: trunk/reactos/subsystems/win32/csrsrv/thredsup.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrsrv/th…
==============================================================================
--- trunk/reactos/subsystems/win32/csrsrv/thredsup.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/csrsrv/thredsup.c [iso-8859-1] Thu Nov 12 20:24:18
2015
@@ -440,7 +440,7 @@
Status = NtClose(CsrThread->ThreadHandle);
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);
ASSERT(NT_SUCCESS(Status));
Modified: trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv…
==============================================================================
--- trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c [iso-8859-1]
(original)
+++ trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guiterm.c [iso-8859-1] Thu Nov
12 20:24:18 2015
@@ -147,6 +147,7 @@
PGUI_INIT_INFO GuiInitInfo = (PGUI_INIT_INFO)Param;
DESKTOP_CONSOLE_THREAD DesktopConsoleThreadInfo;
ULONG_PTR InputThreadId = HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread);
+ HANDLE hThread = NULL;
LONG WindowCount = 0;
MSG msg;
@@ -166,8 +167,21 @@
if (!NT_SUCCESS(Status)) goto Quit;
/* 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();
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 */
if (!SetThreadDesktop(DesktopConsoleThreadInfo.DesktopHandle)) goto Quit;
@@ -307,7 +321,20 @@
CloseDesktop(DesktopConsoleThreadInfo.DesktopHandle); // NtUserCloseDesktop
/* 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 */
RtlExitUserThread(Status);