Norbert Hartl wrote:
What does this
<primitive: 19> "Simulation guard"
do?
It does nothing. It only indicates that the system will crash if that code ever gets simulated (usually due to atomicity violations).
Hmmm, looks quite confusing to me as the suspendingList is only one element in size the whole time. Hmmm...
Yeah, indeed. That is interesting. I don't have the time to look at this right now but it may actually be the solution to the problem. I think that a strategically placed #suspend in completeStep: may solve this problem. I'll have to think about this more ...
Anyway my conclusion is that the test in my first post can't work.
Not sure how you come to this conclusion. The test *doesn't* work but that indicates that a piece of the system is broken.
Any suggestions which side needs a change?
Simulating "out of" a semaphore wait is broken. The debugger test is still valid btw, since it illustrates the behavior in a practical manner.
Cheers, - Andreas