Awesome Denis! > On 13 Aug 2016, at 10:54, Tudor Girba <tu...@tudorgirba.com> wrote: > > Very cool analysis! > > What would your proposal be in this case?
Some ideas: - perform logging in a separate process - only log user interrupt once for any given time interval, i.e., while a previous interrupt is being logged, ignore logging for further interrupts. Alternatively: don’t log user interrupts. I don’t really see the value anyway. Cheers, Max > > Doru > > >> On Aug 13, 2016, at 10:42 AM, Denis Kudriashov <dionisi...@gmail.com> wrote: >> >> 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 >> > > -- > www.tudorgirba.com > www.feenk.com > > "One cannot do more than one can do." > > > > >