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 <[email protected]>: > 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 <[email protected]>: > >> >> 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. >> > >
