PR# 19086 [RJ] 'dispose' is not called
Problem Report Summary
Submitter: axarosenberg
Category: Runtime
Priority: Medium
Date: 2015/08/05
Class: Bug
Severity: Non-critical
Number: 19086
Release: 15.05.9.7573
Confidential: No
Status: Analyzed
Responsible:
Environment: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Synopsis: [RJ] 'dispose' is not called
Description
If you use the 'objects' pane to view a non-Void object, and then exit, 'dispose' is not called on that object. Run the example below. With no breakpoints, it prints "a" and "b". If you stop at the indicated line and examine the value of 'a' in the 'objects' pane, only "b" is printed upon exit. Randy
To Reproduce
class ROOT create make feature make local a: MY_MEMORY b: MY_MEMORY do create a.make("a") create b.make("b") b := Void end -- Put a breakpoint here. end class MY_MEMORY inherit MEMORY redefine dispose end create make feature make(a_value: STRING) do value := a_value end dispose do print(value + "%N") end value: STRING end
Problem Report Interactions
It should not be too hard to add the notification, but this will have to wait for the fall release.
Well, it was a major issue trying to debug my problem, but now that I know what is happening it isn't. But I don't see why 'reclaim' (or a caller of 'reclaim') couldn't interact with the debugger first and get it to release all of its references. Are you saying that it is too hard to fix at all or too hard to fix right away? (I can accept the latter). Randy
Debugging has some side effects. We use the ability to keep objects alive for the whole duration of the system execution whenever we look at a variable in the debugger. Unfortunately the debugger does not know when the program has completed its execution, so it does not release all the objects it kept alive. Is this a major issue at the moment when you debug?