On Fri, Jun 29, 2018 at 5:58 PM Ben Coman <b...@openinworld.com> wrote:
> > > On 29 June 2018 at 22:48, Guillermo Polito <guillermopol...@gmail.com> > wrote: > >> Hi all, >> >> during today's sprint we have been working with lots of people on the >> infinite debugger problem (https://pharo.fogbugz.com/f/cases/22085/). We >> have checked the emails sent in the latest month. Then, together with >> Quentin, Pablo, Pavel, Yoan we have been discussing and testing hypothesis >> all day. We have been also comparing the debuggers code between pharo 3/4 >> (where the bug was is present) and pharo 7, but this was not necessarily >> straight forward as the code is not the same and there is no easy diff... >> >> AAAAND, we have found that the problem may come from a wrong pragma >> marker. Just removing that pragma gives us back the same behaviour as in >> Pharo 3/4. :D >> >> https://github.com/pharo-project/pharo/pull/1621 >> >> I know that the exception handling/debugging has been modified several >> times in the latest years (some refactorings, hiding contexts...), we >> unfortunately don't have tests for it, so I'd like some more pair of eyes >> on it. Ben, Martin could you take a look? >> >> Thanks all for the fish, >> Guille >> > > I'm just about to fly out for a family vacation, so I'm not sure when I'll > get a chance to have a good look. > But I read the issue on Fogbugz and it echos some things I've been > thinking recently, > though I hadn't come close to that particular fix. > > I think my following comments are probably unrelated, but just sharing > some thoughts that crossed my mind when I was looking into my own similar > trouble. > This is an area I'm not clear on and would like to understand better... > > When the UI thread (UI1) needs to be debugged (e.g. code run from > Playground, or a test) > and is suspended and a new UI thread (UI2) is started, which thread does > the debugger run in? > Yes > I guess it must run in UI2 but sometimes I got the vague feeling some > parts of it were caught in UI1 and affected by UI1 being suspended. > But perhaps I got the wrong impression - its a complex interplay to follow. > Nope.. Actually, UI2 will simulate code of UI1 as it was running in UI1. There is some machinery (look at #effectiveProcess) so that Processor activeProcess yields UI1 when stepping over UI2 code. > > The other vague notion I had was when thread UI1 is resumed, it seems to > replace thread UI2 where the World keeps its, > and wondered if <StepOver> on the suspended-debug-UI1 thread somehow made > it "resume" and so replace UI2 as the main thread, > but then UI1 gets suspended again and the display freezes. > > Thanks for everyones efforts on this. > cheers -ben > -- Guille Polito Research Engineer Centre de Recherche en Informatique, Signal et Automatique de Lille CRIStAL - UMR 9189 French National Center for Scientific Research - *http://www.cnrs.fr <http://www.cnrs.fr>* *Web:* *http://guillep.github.io* <http://guillep.github.io> *Phone: *+33 06 52 70 66 13