This is a good writeup - however I get infinite debuggers when not running 
tests too? So I’m wondering if there are multiple problems - or if this hints 
at a wider issue?

Its not all of the time - but when you get it it, it seems to happen over and 
over again. Its possible its when using step-over though - so I will keep an 
eye on that.

Tim

> On 7 Aug 2018, at 10:51, teso...@gmail.com wrote:
> 
> Hello, 
>   We have implemented a "patch" for Pharo 7, that is already integrated. I 
> have created a slice to backport the "patch" to Pharo6.
> 
> Basically, the previous situation is the following: 
> 
> - In the normal execution everything works, the problem is during the 
> execution of over. 
> - To implement over the debugger uses Context >> runUntilErrorOrReturnFrom:
> - This method adds a new context to handle exceptions in the stack trace. It 
> takes the receiver and replaces the sender of the context with a new context 
> handling the exceptions.
> - This error handling (using on:do:) handles UnhandledError and Halt. 
> - When the MNU error gots to the nil context a UnhandledError is signal from 
> the last signalling context of the MNU error.
> - This solution works correctly when it is not debugged when running a test.
> 
> When we are running a tests there is a slight difference:
> 
> - There is one more on:do: context that catches all the Errors. This on:do 
> just do something and pass the exception.
> - As the UnhandledError is signal from the last signalling context (the one 
> with the pass) it is not passing in the context inserted by 
> runUntilErrorOrReturnFrom:, generating an infinite debugger as the exception 
> is never catch. 
> - This only happens with the MNU, as it retries to send the same message 
> every time. 
> 
> I think the solution is to signal the UnhandledError always from the original 
> signalling context. However, I am not sure to perform that change as it 
> modifies the behaviour of exceptions and there are not proper tests to 
> guarantee the expected behavior.
> 
> I hope the problem is well explained, if it is not please ask me to clarify 
> any point.
> 
> Cheers,
> 
> On Mon, Aug 6, 2018 at 9:59 AM Guillermo Polito <guillermopol...@gmail.com 
> <mailto:guillermopol...@gmail.com>> wrote:
> Hi Steven,
> 
> The thing about your fix was mainly that it only worked for the case of 
> running tests. We could however reproduce this bug from a playground too.
> 
> At first, replacing #pass to #debug looked like a hack to me :) Just looking 
> at the code of  runCaseForDebug:, I felt the correct thing to do there was to 
> use #pass (and let any potential caller handle the exception if he wants).
> Otherwise, we should be able to understand:
>  - can #pass be used? is it buggy?
>  - does it work on any case or it should be avoided in some cases?
>  - and how can we fix it (or at least document it?)?
> 
> But still, I think you were in the right direction too, because your fix 
> shows a good intuition too: both #pass and #debug will do different things 
> with the exception.
> -  #pass will **resignal** it from the current context,
> -  #debug will just open a debugger on it.
> 
> So that means that probably there was a problem when the exception was 
> handled in a calling context.
> 
> 
> 
> On Mon, Aug 6, 2018 at 12:29 AM Steven Costiou <steven.cost...@kloum.io 
> <mailto:steven.cost...@kloum.io>> wrote:
> Hi,
> 
> i had no answer to my comments on fogbuz (one of the first) so i assumed it 
> was not a good idea.
> 
> In the usecases i used to reproduce the bug, replacing "ex pass" by "ex 
> debug" in runCaseForDebug:solved the problem. See the analysis on fogbuz.
> 
> Did not have any side effect, but i do not know enough about the system and 
> maybe it does. I think i already asked about that somewhere (here or on 
> discord) but no answers.
> 
> But maybe it is wrong to do that? I'd be happy to have feedback on that.
> 
> Steven.
> 
> Le 2018-08-05 22:27, Tim Mackinnon a écrit :
> 
>> Guys - this really needs attention - I've spend hours now trying to debug 
>> some code and most of it is in closing infinite debuggers. It makes a 
>> mockery of our tagline - "awesome debugging". And the extra irony is that 
>> I'm debugging some file path stuff for exercism, to make it easier for 
>> hopefully more people to learn Pharo.
>> 
>> How can we get this fixed?
>> 
>> Tim
>> 
>>> On 2 Aug 2018, at 21:44, Norbert Hartl <norb...@hartl.name 
>>> <mailto:norb...@hartl.name>> wrote:
>>> 
>>> bump
>>> 
>>>> Am 04.07.2018 um 02:28 schrieb Martin McClure <mar...@hand2mouse.com 
>>>> <mailto:mar...@hand2mouse.com>>:
>>>> 
>>>>> On 07/03/2018 05:02 PM, Martin McClure wrote:
>>>>>> 
>>>>>> On 06/29/2018 07:48 AM, Guillermo Polito wrote:
>>>>>> 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?
>>>>> Hi Guille,
>>>>> I'm just back from vacation last week, and about to go on vacation for
>>>>> another week, but I'll see what I can see.
>>>>> About the primitive pragmas for context-marking, I think some of those
>>>>> were changed for the exception handling fix that Andres and I did a few
>>>>> years back, so *could* be involved in this. I'd hate to see regression
>>>>> in the exception handling in an attempt to fix this bug.
>>>> 
>>>> After a look at at the pull request, I'm quite sure that removing the
>>>> prim 199 marker is the wrong thing to do. Thanks, Pablo, for restoring
>>>> it! The start of execution of exception handlers must be marked in order
>>>> for #findNextHandlerContext to work correctly. If these contexts are not
>>>> marked, exceptions signaled from inside an exception handler can find
>>>> the wrong handler. See the code and comment in #findNextHandlerContext.
>>>> 
>>>> I'm afraid that I cannot immediately help with the debugger problem,
>>>> since I don't know the debugger nearly as well as I do the exception
>>>> handling code, and I'm going on vacation for a week in 20 minutes. :-)
>>>> Perhaps when I get back I can take a look at it if it is still a problem
>>>> by then.
>>>> 
>>>> Regards,
>>>> -Martin
>> 
>  
> 
> 
> -- 
>    
> 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
> 
> 
> -- 
> Pablo Tesone.
> teso...@gmail.com <mailto:teso...@gmail.com>

Reply via email to