This test case appears at some point to fail. It succeeds in 3.9. I narrowed the problem to an update of 3.9.1 with update 7071 (Kernel-sd.151) which introduced it.
The piece of code that triggers it is:
Process>>terminate ... suspendedContext ifNotNil: [ "Figure out if we are terminating the process while waiting in Semaphore>>critical: In this case, pop the suspendedContext so that we leave the ensure: block inside Semaphore>>critical: without signaling the semaphore." (inSema == true and:[ suspendedContext method == ( Semaphore compiledMethodAt: #critical:) ]) ifTrue:[ suspendedContext := suspendedContext home. ]. ...
I don't really understand the rationale behind doing this but it seems that it conflicts with the test assumption:
DebuggerUnwindBug>>testUnwindDebuggerWithStep ... debugger doStep. "close debugger" top delete.
"and see if unwind protection worked" self assert: sema isSignaled.
As I don't really understand what happens and what should happen I would be glad to hear some words of advice.
Norbert