> On 8 Aug 2016, at 15:00, Dale Henrichs <dale.henri...@gemtalksystems.com> 
> wrote:
> 
> Max,
> 
> Thanks for looking into this.
> 
> Do you think that this bug will be fixed in Pharo5.0? When I'm debugging the 
> tests with this fatal pattern, my only recourse is to start and stop images 
> between test runs ...
> 
> 

If this is indeed a bug in the termination logic then yes, it will be ported to 
Pharo 5 since it’s critical.
> The side effect of not running ensure blocks in tests is that a SharedQueue 
> gets stuck waiting on an empty queue and when I interrupt that process (and 
> get another debugger that is closed) I end up with the Empty Debugger problem 
> where the debuggers have decide to stop working ... I saw that there was 
> logic in Process>>terminate involved in dealing with processes running in 
> critical blocks and that logic might be faulty as well ...
> 
> 

Thanks for the details.
> Dale
> On 8/8/16 12:11 AM, Max Leske wrote:
>> Thanks Nicolai.
>> 
>> I’ve opened an issue on phogbugz: 
>> https://pharo.fogbugz.com/f/cases/18885/Ensure-blocks-in-test-tear-down-not-always-executed
>>  
>> <https://pharo.fogbugz.com/f/cases/18885/Ensure-blocks-in-test-tear-down-not-always-executed>.
>> 
>> 
>>> On 8 Aug 2016, at 09:03, Nicolai Hess <nicolaih...@gmail.com 
>>> <mailto:nicolaih...@gmail.com>> wrote:
>>> 
>>> 
>>> 
>>> 2016-08-08 8:52 GMT+02:00 Max Leske <maxle...@gmail.com 
>>> <mailto:maxle...@gmail.com>>:
>>> Wow, that’s pretty bad. The process termination logic should be taking care 
>>> of the ensure blocks. Unfortunately I can’t run any Pharo images at the 
>>> moment but if there’s something wrong with process termination then it’s 
>>> likely that me or Ben made some mistake. Could someone please rerun Dale’s 
>>> test scenario with the original process termination code (e.g. from Pharo 
>>> 3) and report the results?
>>> 
>>> Yes, test runs fine in pharo 30864 (halts in the ensure block)
>>>  
>>> 
>>> Cheers,
>>> Max
>>> 
>>> 
>>> > On 8 Aug 2016, at 03:25, Dale Henrichs <dale.henri...@gemtalksystems.com 
>>> > <mailto:dale.henri...@gemtalksystems.com>> wrote:
>>> >
>>> > While attempting to characterize the "Empty Debugger" problem that I've 
>>> > recently reported[1], I found that ensure blocks in TestCase>>teardown 
>>> > methods are not run if an Error is signaled while executing the code 
>>> > protected by the ensure block ... when the test itself brings up a 
>>> > debugger --- now that is a mouthful :) ... but a situation that commonly 
>>> > occurs ...
>>> >
>>> > I've attached a fileIn with a very simple reproduction of this problem. 
>>> > After filing in the code, execute the following:
>>> >
>>> >  BugTestCase debug: #test.
>>> >
>>> > Abandon the first halt -- this is the halt in the test. Next a debugger 
>>> > is brought up on the error from inside the ensure block in the tearDown 
>>> > method:
>>> >
>>> >  tearDown
>>> >    [ self error: 'teardown' ]
>>> >        ensure: [
>>> >            "Imagine that something important NEEDED to be done here"
>>> >            self halt ].
>>> >    super tearDown.
>>> >
>>> > Abandon the error and the `self halt` in the ensure block is not run ...
>>> >
>>> > If you take the `self halt` out of the test method itself, the `self 
>>> > halt` in the ensure block _is_ run ...
>>> >
>>> > This does not directly lead to the Empty Debugger, but when the ensure 
>>> > blocks called during teardown are not run, a resource is not cleaned up 
>>> > properly and that leads to SharedQueue hanging ... when I interrupt the 
>>> > SharedQueue, I believe that this leads to the "Empty Debugger" a 
>>> > separate, but more nasty problem ...
>>> >
>>> > Dale
>>> >
>>> > [1] http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html 
>>> > <http://forum.world.st/Re-Empty-debugger-Pharo-5-0-td4909911.html>
>>> >
>>> > <BugTestCase.st <http://bugtestcase.st/>>
>>> 
>>> 
>>> 
>> 
> 

Reply via email to