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."
> 
> 
> 
> 
> 


Reply via email to