[Pharo-dev] Pharo 6 cannot parallel trace through same method

Denis Kudriashov dionisiydk at gmail.com
Wed Feb 8 11:13:00 EST 2017


Problem is related to RecursionStopper which not releases "stop method"
while first debugger will be close or step over.
Also this "stop method" is Halt>>once which could be mistake.

Probably RecoursionStopper should be process specific variable and not
global registry.

2017-02-08 17:04 GMT+01:00 Denis Kudriashov <dionisiydk at gmail.com>:

> That's strange.
>
> I found that if you step over halt then you are able to halt on next call.
> Anyway it needs to be fixed
>
> 2017-02-08 16:37 GMT+01:00 Ben Coman <btc at openinworld.com>:
>
>>
>> This has bugged me a few times recently, so I've produced a demo.
>> Define...
>>
>>   Object subclass: #AA
>> instanceVariableNames: ''
>> classVariableNames: ''
>> package: 'AAAA'
>>
>>   AA>>test
>> self haltOnce.
>> self inform: 'I got here'.
>>
>> then in playground evaluate....
>>   Halt resetOnce. "i.e. World > Debugging > Enable all break/inspect
>> once."
>>   AA new test.
>>
>> and as expected you get a debugger window.
>> Now once again without closing the debugger ...
>>   Halt resetOnce.
>>   AA new test.
>>
>> and I'd expect another debugger, but instead I'm informed 'I got here'.
>> Its extremely useful sometimes to parallel trace through code comparing
>> two cases,
>> and the current behaviour prevents that. .
>>
>> The Pharo 5 equivalent works as expected...
>>   Halt enableHaltOnce.
>>   AA new test.
>>
>> I'm not sure where to hang it, but the following test
>> differentiates between Pharo 5 & 6. (you can also run it from the
>> playground.)
>>
>>  testParallelTrace
>>     |completed p1 ds1 p2 ds2|
>>     completed := 0.
>>     Halt resetOnce. "enableHaltOnce"
>>     p1 := [ self haltOnce. completed := completed + 1 ] newProcess.
>>     ds1 := DebugSession named: 'Trace1' on: p1 startedAt: p1
>> suspendedContext.
>>     ds1 resume.
>>     Halt resetOnce. "enableHaltOnce"
>>     p2 := [ self haltOnce. completed := completed + 1 ] newProcess.
>>     ds2 := DebugSession named: 'Trace2' on: p2 startedAt: p2
>> suspendedContext.
>>     ds2 resume.
>>     self assert: (completed = 0)
>>
>> I've opened
>> https://pharo.fogbugz.com/f/cases/19677/Cannot-parallel-trac
>> e-through-same-method
>>
>> cheers -ben
>>
>>
>>
>> P.S. I'm not sure if enabling the global haltOnce might cause issues.
>> It would be useful to be able to set it only for the DebugSession.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20170208/5ce0a956/attachment.html>


More information about the Pharo-dev mailing list