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?