[Mono-devel-list] Assembly binary compatibility?

Ben Maurer bmaurer at ximian.com
Tue May 3 19:45:30 EDT 2005

On Wed, 2005-05-04 at 09:25 +1000, Michi Henning wrote:
> Note that the destructor simply checks whether destroy() was called before the
> instance is collected and that this is required only for a debug build. In
> order to save the cost of acquiring the lock (and to avoid the cost of calling the
> destructor altogether), the entire destructor is made conditional.

In general, adding or removing an override is not a breaking change.

Finalize works by chaining to the parent using base.Finalize. calling a
method on base will always say call <my direct parent>.Method. In the
JIT we would in the debug build see: "my direct parent" has the finalize
method so call that, but in the non-debug build see "my direct parent"
doesn't have a finalizer, so lets try one in the parent of that class.

Sadly, due to some limitations in System.Reflection, MCS does not
implement this correctly.


As you can tell, thats a pretty old bug ;-(

-- Ben

More information about the Mono-devel-list mailing list