[Mono-bugs] [Bug 50916][Wis] Changed - GC does not see objs put into an array as dead till array's method is out of scope

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Thu, 13 Nov 2003 12:33:26 -0500 (EST)


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by bmaurer@users.sf.net.

http://bugzilla.ximian.com/show_bug.cgi?id=50916

--- shadow/50916	2003-11-13 07:36:48.000000000 -0500
+++ shadow/50916.tmp.1424	2003-11-13 12:33:26.000000000 -0500
@@ -1,13 +1,13 @@
 Bug#: 50916
 Product: Mono/Runtime
 Version: unspecified
 OS: unknown
 OS Details: 
-Status: RESOLVED   
-Resolution: NOTABUG
+Status: REOPENED   
+Resolution: 
 Severity: Unknown
 Priority: Wishlist
 Component: misc
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: bmaurer@users.sf.net               
 QAContact: mono-bugs@ximian.com
@@ -69,6 +69,22 @@
 ------- Additional Comments From vargaz@freemail.hu  2003-11-13 07:36 -------
 The time when finalizers are called is not guaranteed. The reason
 why the array objects are not freed is probably because the foofoo
 array is reachable from the stack frame of 'blah'. Even if the
 variable is nulled out, it is possibly that JIT generated temporaries
 continue to refer to the array.
+
+------- Additional Comments From bmaurer@users.sf.net  2003-11-13 12:33 -------
+This test matches the MS docs and is tested in the Rotor GC test 
+suite.
+
+As well, this could have a real performance impact in something such 
+as:
+
+for (int i = 0; i < 5000; i++) {
+Foo [] bar = new Foo [500];
+for (int j = 0; j < bar.Length; j++)
+   bar [j] = new Foo ();
+}
+
+It seems none of the Foo's would EVER be deallocated, which could be 
+a problem. Am going to play around w/ this some more later.