By request, screenshots from a clean image ...

⤴ Press over

Press cmd-dot ⤵

The screenshots from 5.1 were made in a clean 5.1 image.



Von: Thiede, Christoph
Gesendet: Freitag, 13. Dezember 2019 19:48:00
An: Squeak Dev
Betreff: BUG/REGRESSION while debugging Generator >> #nextPut:

Hi all,

I discovered a bug when stepping over a call to Generator >> #nextPut:.

!! Save your image before trying the following !!

on: [:stream | stream nextPut: #foo]

  1. Due to multiprocessing implementation of the Generator, pressing over will hang up the current process forever, because the generator is never queried.
  2. If I press cmd-dot, I get an infinite number of debugger windows that show Context >> #cannotReturn:. This will probably damage your image.

The first is annoying for newcomers, but I see this behavior is reasonable and without the effect of the second, it wouldn't be a big problem.
The second, however, looks like a bigger issue to me. Actually, I think the most serious aspect is that in Squeak 5.1, the same procedure does not crash your image, but you are forwarded to the emergency debugger and can terminate the process:


Also, this is not the first scenario in the last time where I got an infinite debugger chain. See [BUG(s)] in Context control (#jump, #runUntilErrorOrReturnFrom:) for a similar issue. And there were even more situations which I could not yet reproduce exactly.
I'm afraid that the recent changes to the debuggers might have weakened its ability to detect recursive errors. Can someone else tell about these problems?

I suppose we ignore a large number of recursive errors as in MorphicDebugger >> #openOn:context:label:contents:fullView:, the uiBlock is often triggered as a separate UI message which will be executed after the recursion flag has been cleared by the base class.

Would be great if someone could have a look at it or share more information :)