[Mono-bugs] [Bug 31265][Maj] Changed - Problems with GCHandle
bugzilla-daemon@rocky.ximian.com
bugzilla-daemon@rocky.ximian.com
21 Nov 2002 16:21:14 -0000
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 gkodinov@openlinksw.co.uk.
http://bugzilla.ximian.com/show_bug.cgi?id=31265
--- shadow/31265 Tue Nov 19 08:26:07 2002
+++ shadow/31265.tmp.21318 Thu Nov 21 11:21:14 2002
@@ -73,6 +73,24 @@
in ves_icall_System_GCHandle_GetTargetHandle().
I assume the code will break without the threaded finalizer, but the
test is deadlocking too soon to show it.
+
+------- Additional Comments From gkodinov@openlinksw.co.uk 2002-11-21 11:21 -------
+As far as I get it the ves_icall_System_GCHandle_GetTargetHandle is
+returing the pointer's offset into a global table and it's type
+stuffed together as a "handle".
+It stores the pointer into the gc_handles array and doesn't store the
+"handle type" anywhere.
+But it so appears that the handle type is needed to actually copy the
+array, when it needs to expand (so it is able to tell the GC the
+right
+thing ;-)
+That's why I've added an new array : gc_handle_types to paralel the
+pointers array and to store the type for each handle. It's not the
+perfect solution, but it works (or should ;-)
+So you can't actually check the last bit of the original pointer
+instead of it's type - it will be "Las Vegas" style of programming
+IMHO.
+The fact that it worked for you IMHO means you were lucky.