ProcessorScheduler.st
changeset 3787 bf77e7bf36ea
parent 3786 1ef55d18a4d4
child 3790 629791828694
--- a/ProcessorScheduler.st	Wed Aug 26 18:48:16 1998 +0200
+++ b/ProcessorScheduler.st	Thu Aug 27 12:52:12 1998 +0200
@@ -1220,7 +1220,12 @@
     ok == true ifFalse:[
         "
          switch failed for some reason -
-         destroy the bad process
+         destroy (hard-terminate) the bad process.
+         This happens when:
+         - the stack went above the absolute limit
+           (VM switches back to scheduler)
+         - a halted process cannot execute its interrupt
+           actions (win32 only)
         "
         (id := p id) ~~ 0 ifTrue:[
             id notNil ifTrue:[
@@ -1232,12 +1237,14 @@
 
 		ok == #halted ifTrue:[
 		    "/ that process was halted (win32 only)
-		    p state:#halted
+		    p state:#halted.
+                   '; stopped it.' errorPrintCR.
+                   self suspend:p.
 		] ifFalse:[
-                    '; hard-terminate it.' errorPrintCR.
-                    'Processor [info]: cleanup may take a while if stack is huge' infoPrintCR.
-                    p state:#cleanup.
-                    self terminateNoSignal:p.
+                   '; hard-terminate it.' errorPrintCR.
+                   'Processor [info]: cleanup may take a while if stack is huge' infoPrintCR.
+                   p state:#cleanup.
+                   self terminateNoSignal:p.
 		]
             ]
         ]
@@ -2962,6 +2969,6 @@
 !ProcessorScheduler class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.162 1998-08-26 16:48:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.163 1998-08-27 10:52:03 cg Exp $'
 ! !
 ProcessorScheduler initialize!