--- 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!