# HG changeset patch # User Claus Gittinger # Date 1490958802 -7200 # Node ID be534b086fb0f0c623406935c66c02c40bcfdabd # Parent 3f8d5056f05cc19eda243bb9796532ee996fb805 #BUGFIX by cg class: ProcessorScheduler changed: #vmSuspendInterrupt: do not enter MiniDebugger if standalone diff -r 3f8d5056f05c -r be534b086fb0 ProcessorScheduler.st --- a/ProcessorScheduler.st Fri Mar 31 13:10:47 2017 +0200 +++ b/ProcessorScheduler.st Fri Mar 31 13:13:22 2017 +0200 @@ -1112,19 +1112,19 @@ |pri l newState| OperatingSystem interruptsBlocked ifFalse:[ - MiniDebugger - enterWithMessage:'immediateInterrupt with no interruptsBlocked' - mayProceed:true. + MiniDebugger + enterWithMessage:'immediateInterrupt with no interruptsBlocked' + mayProceed:true. ]. (whyCode == 2) ifTrue:[ - newState := #wrapWait. + newState := #wrapWait. ] ifFalse:[ - (whyCode == 3) ifTrue:[ - newState := #osWait. - ] ifFalse:[ - newState := #stopped. - ]. + (whyCode == 3) ifTrue:[ + newState := #osWait. + ] ifFalse:[ + newState := #stopped. + ]. ]. activeProcess setStateTo:newState if:#active. @@ -1135,10 +1135,19 @@ the ifAbsent block, because [] is a shared cheap block, created at compile time " (l isNil or:[(l removeIdentical:activeProcess ifAbsent:nil) isNil]) ifTrue:[ - "/ 'Processor [warning]: bad vmSuspendInterrupt: not on run list' errorPrintCR. - MiniDebugger enterWithMessage:'bad vmSuspendInterrupt: not on run list' mayProceed:true. - ^ self + "/ the vm wants to suspend a not running thread. + "/ should not, but does happen, although very seldom (a race condition?) + "/ ignore in standalone apps; enter a minidebugger if not. + "/ it is (currently not clear, how this happens, but seems to be harmless) + Logger warning:'Processor [warning]: bad vmSuspendInterrupt: process not on run list'. + "/ 'Processor [warning]: bad vmSuspendInterrupt: not on run list' errorPrintCR. + (Smalltalk isStandAloneApp and:[Smalltalk isStandAloneDebug not]) ifFalse:[ + MiniDebugger enterWithMessage:'bad vmSuspendInterrupt: not on run list' mayProceed:true. + ]. + ^ self ]. + + "Modified: / 31-03-2017 / 13:12:49 / cg" ! ! !ProcessorScheduler methodsFor:'os process handling'!