On Tue, 26 Sep 2006 16:33:50 +0200, "Goffioul Michael" goffioul@imec.be wrote:
Can you trace whether your .NET objects referenced in LISP get collected or not? In the case of the apropos example, it appears that the KeyPressEventHandler object never got collected in the LISP world.
I tried with LW 5.0, the most recent version of RDNZL (0.10.6) and the corresponding DLL (created with VS 2003). If I run the apropos example and then call (HCL:MARK-AND-SWEEP 3), the KeyPressEventHandler is clearly collected on the Lisp side.
Methodology: I simply added a PRINT statement to MAYBE-FREE-CONTAINER-POINTER, so I could see which objects are about to be handed over to freeDotNetContainer. Below is the list I got.
But wait - you're talking about ECL, right? FLAG-FOR-FINALIZATION isn't yet implemented for ECL, so you can't expect freeDotNetContainer to be called in this case, can you?
#<RDNZL::CONTAINER System.Type #x1094540> #<RDNZL::CONTAINER System.Type #x1094500> #<RDNZL::CONTAINER System.Boolean #x10944C0> #<RDNZL::CONTAINER AproposGUI.AproposControl #x10944A0> #<RDNZL::CONTAINER System.Type #x10944D0> #<RDNZL::CONTAINER System.Type #x1094310> #<RDNZL::CONTAINER System.Boolean #x10942D0> #<RDNZL::CONTAINER System.Windows.Forms.Form #x10940E8> #<RDNZL::CONTAINER System.Type #x10942E0> #<RDNZL::CONTAINER System.Windows.Forms.DockStyle #x10940B8> #<RDNZL::CONTAINER System.Drawing.Size #x1094088> #<RDNZL::CONTAINER System.Windows.Forms.Label #x10940C8> #<RDNZL::CONTAINER System.Windows.Forms.TextBox #x1094008> #<RDNZL::CONTAINER System.Type #x1093F90> #<RDNZL::CONTAINER System.Type #x1093FC0> #<RDNZL::CONTAINER System.Boolean #x1093E80> #<RDNZL::CONTAINER System.Reflection.MethodInfo #x1093EC0> #<RDNZL::CONTAINER System.Type #x1093F60> #<RDNZL::CONTAINER System.Reflection.ParameterInfo[] #x1093DF0> #<RDNZL::CONTAINER System.Int32 #x1093E90> #<RDNZL::CONTAINER System.Reflection.ParameterInfo #x1093E30> #<RDNZL::CONTAINER System.Reflection.ParameterInfo #x1093D60> #<RDNZL::CONTAINER System.Type #x1093E00> #<RDNZL::CONTAINER System.Type #x1093DA0> #<RDNZL::CONTAINER System.Type #x1093F30> #<RDNZL::CONTAINER System.String #x1093D70> #<RDNZL::CONTAINER System.Type #x1093D50> #<RDNZL::CONTAINER System.Type[] #x1093CE0> #<RDNZL::CONTAINER System.String #x1093CA0> #<RDNZL::CONTAINER System.String #x1093CB0> #<RDNZL::CONTAINER System.String #x1092CE8> #<RDNZL::CONTAINER System.Type #x1093D20> #<RDNZL::CONTAINER System.Boolean #x10956F8> #<RDNZL::CONTAINER RDNZLPrivateAssembly._LispCallback_1 #x1094520> #<RDNZL::CONTAINER System.String #x1095718> #<RDNZL::CONTAINER System.String #x10954E8> #<RDNZL::CONTAINER System.Type #x10954D8> #<RDNZL::CONTAINER System.Boolean #x1095268> #<RDNZL::CONTAINER System.Type #x1095128> #<RDNZL::CONTAINER System.Reflection.MethodInfo #x1094E90> #<RDNZL::CONTAINER System.RuntimeMethodHandle #x1095258> #<RDNZL::CONTAINER System.IntPtr #x1094D50> #<RDNZL::CONTAINER System.Windows.Forms.KeyPressEventHandler #x1095488> #<RDNZL::CONTAINER System.Windows.Forms.Control+ControlCollection #x10953C8> #<RDNZL::CONTAINER System.Type #x1094E80> #<RDNZL::CONTAINER System.Object[] #x1095418> #<RDNZL::CONTAINER System.Int32 #x1095508> #<RDNZL::CONTAINER System.Object #x1095538> #<RDNZL::CONTAINER System.Windows.Forms.KeyPressEventArgs #x1095578> #<RDNZL::CONTAINER System.Char #x1094920> #<RDNZL::CONTAINER NULL #x1094910> #<RDNZL::CONTAINER System.Object[] #x1094970> #<RDNZL::CONTAINER System.Int32 #x10949B0> #<RDNZL::CONTAINER System.Object #x1095298> #<RDNZL::CONTAINER System.Windows.Forms.KeyPressEventArgs #x10952D8> #<RDNZL::CONTAINER System.Char #x1095318> #<RDNZL::CONTAINER NULL #x1095308> #<RDNZL::CONTAINER System.Object[] #x1095368> #<RDNZL::CONTAINER System.Int32 #x1095178> #<RDNZL::CONTAINER System.Object #x10951A8> #<RDNZL::CONTAINER System.Windows.Forms.KeyPressEventArgs #x10951E8> #<RDNZL::CONTAINER System.Char #x1095228> #<RDNZL::CONTAINER NULL #x1095218> #<RDNZL::CONTAINER System.Object[] #x1095048> #<RDNZL::CONTAINER System.Int32 #x1095088> #<RDNZL::CONTAINER System.Windows.Forms.TextBox #x10950B8> #<RDNZL::CONTAINER System.Windows.Forms.KeyPressEventArgs #x1094EB0> #<RDNZL::CONTAINER System.Char #x1094EF0> #<RDNZL::CONTAINER System.String #x1094F30> #<RDNZL::CONTAINER AproposGUI.AproposControl #x1094F60> #<RDNZL::CONTAINER System.Windows.Forms.TextBox #x1094D70> #<RDNZL::CONTAINER System.Int32 #x1094F90> #<RDNZL::CONTAINER System.Int32 #x1094DD0> #<RDNZL::CONTAINER System.String #x1094E00> #<RDNZL::CONTAINER System.String #x1094DC0> #<RDNZL::CONTAINER System.Int32 #x10955B8> #<RDNZL::CONTAINER NULL #x1094E50>