Only debug 1 thread at a time
Modified: trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c
_____
Modified: trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c
--- trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c 2005-11-14
15:35:41 UTC (rev 19224)
+++ trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c 2005-11-14
16:36:26 UTC (rev 19225)
@@ -103,6 +103,8 @@
static PETHREAD GspDbgThread;
static PETHREAD GspEnumThread;
+static FAST_MUTEX GspLock;
+
extern LIST_ENTRY PsActiveProcessHead;
KD_PORT_INFORMATION GdbPortInfo = { 2, 115200, 0 }; /* FIXME hardcoded
for COM2, 115200 baud */
@@ -1137,6 +1139,9 @@
}
else
{
+ /* Can only debug 1 thread at a time... */
+ ExAcquireFastMutex(&GspLock);
+
/* Make sure we're debugging the current thread. */
if (NULL != GspDbgThread)
{
@@ -1390,6 +1395,7 @@
GspDbgThread = NULL;
}
+ ExReleaseFastMutex(&GspLock);
return kdContinue;
break;
}
@@ -1538,6 +1544,8 @@
if (BootPhase == 0)
{
+ ExInitializeFastMutex(&GspLock);
+
/* Write out the functions that we support for now */
WrapperTable->KdpInitRoutine = KdpGdbStubInit;
WrapperTable->KdpPrintRoutine = KdpGdbDebugPrint;