We had discussion on reasons why cmd+. is not always working.
I made simple test which shows that VM is not issue. Following code
normally stops after 20 seconds:
hanging := [1 seconds wait. 1 recursionTest] newProcess.
hanging priority: Processor activePriority + 10.
interruptor := [ 20 seconds wait. hanging suspend] newProcess.
interruptor priority: Processor activePriority + 11.

hanging resume.
interruptor resume.

Recursion method:
Integer>>recursionTest
     self recursionTest

Hanging process produces 7 million contexts on my machine:

c := hanging suspendedContext.
count := 1.
[ c notNil ] whileTrue: [ c := c sender. count := count + 1 ].
count «7395279"


But if you try to debug it by "hanging debug" you will see how it is slow.
It's caused by printing stack to file.
Interesting that logging is performed before opening debugger. So every
time we press cmd+. we are waiting logging to see debugger.

We need to change this logic.

Best regards,
Denis

Reply via email to