[ros-diffs] [sginsberg] 35302: - Fix a broken check in PspExitThread. We should check if Stack Swapping is _disabled_ during termination, not crash if it is enabled! - Fix KeInitThread to respect this, and initialize EnableStackSwap to TRUE. Otherwise, only executive worker threads who modify the stack swap flag themselves encounter this issue. - This, along with my previous change, fixes worker thread termination being completely broken and crashing ros. - Thanks to Aleksey for confirming my changes

sginsberg at svn.reactos.org sginsberg at svn.reactos.org
Wed Aug 13 11:00:51 CEST 2008


Author: sginsberg
Date: Wed Aug 13 04:00:50 2008
New Revision: 35302

URL: http://svn.reactos.org/svn/reactos?rev=35302&view=rev
Log:
- Fix a broken check in PspExitThread. We should check if Stack Swapping is _disabled_ during termination, not crash if it is enabled!
- Fix KeInitThread to respect this, and initialize EnableStackSwap to TRUE. Otherwise, only executive worker threads who modify the stack swap flag themselves encounter this issue.
- This, along with my previous change, fixes worker thread termination being completely broken and crashing ros.
- Thanks to Aleksey for confirming my changes

Modified:
    trunk/reactos/ntoskrnl/ke/thrdobj.c
    trunk/reactos/ntoskrnl/ps/kill.c

Modified: trunk/reactos/ntoskrnl/ke/thrdobj.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/thrdobj.c?rev=35302&r1=35301&r2=35302&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ke/thrdobj.c [iso-8859-1] Wed Aug 13 04:00:50 2008
@@ -742,7 +742,7 @@
     }
 
     /* Set swap settings */
-    Thread->EnableStackSwap = FALSE;//TRUE;
+    Thread->EnableStackSwap = TRUE;
     Thread->IdealProcessor = 1;
     Thread->SwapBusy = FALSE;
     Thread->KernelStackResident = TRUE;

Modified: trunk/reactos/ntoskrnl/ps/kill.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/kill.c?rev=35302&r1=35301&r2=35302&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ps/kill.c [iso-8859-1] Wed Aug 13 04:00:50 2008
@@ -697,10 +697,10 @@
         PspW32ProcessCallout(CurrentProcess, FALSE);
     }
 
-    /* Make sure Stack Swap isn't enabled */
-    if (Thread->Tcb.EnableStackSwap)
-    {
-        /* Stack swap really shouldn't be on during exit !*/
+    /* Make sure Stack Swap is enabled */
+    if (!Thread->Tcb.EnableStackSwap)
+    {
+        /* Stack swap really shouldn't be disabled during exit! */
         KEBUGCHECKEX(KERNEL_STACK_LOCKED_AT_EXIT, 0, 0, 0, 0);
     }
 



More information about the Ros-diffs mailing list