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
From:manus_eiffel    Date:2015/08/05    Download   
It should not be too hard to add the notification, but this will have to wait for the fall release.

From:axarosenberg    Date:2015/08/05    Download   
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


From:manus_eiffel    Date:2015/08/05    Status: Analyzed    Download   
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?