Mono 4.2.2 Release Notes

Release date: 28 Jan 2016

Mono 4.2.2 is a service release for the Mono 4.2 series.


This is a maintenance release and includes fixes for multiple issues found in 4.2.1

C# Compiler

  • #33341 - Set null operator barrier between invocation instance and its arguments

Class Libraries

  • #35857 - [System.Data] Implement CommandBehavior.SequentialAccess support for GetValues method
  • #28693 - [System] Remove arbitrary debugging limit from FileSystemWatcher on OSX
  • #36003 - [corlib] Invalid DateTime format for Finnish and DateTime parser not supporting same separator for date and time (edit)
  • #37171 - [System.Runtime.Serialization] XmlObjectSerializer: fix ISerializable
  • [System.Runtime.Serialization] Static serializer calls directly into internal APIs to fix 4.2.1
  • [corlib] Fix multicast delegate remove behavior
  • [corlib] Fix multicast Method property
  • [System.XML] Fix endless recursion in XmlCompiledTransform on mobile


  • #35828 - [runtime] Fix Thread.CurrentThread in non-root appdomains by setting the tls slot in start_wrapper, otherwise Thread.CurrentThread would create a new Thread object so there would be two
  • #20186 - [runtime] Make sure ptr-to-structure and structure-and-ptr wrappers are unique, this is needed by full aot
  • #36292 - [jit] Avoid a verification error in gsharedvt code with ldarga + gshared types
  • #36256 - [aot] Cache inflated methods loaded from aot images to avoid repeating an expensive search
  • #35545 - [runtime] Implement native-to-managed marshalling of byref delegate arguments
  • #36383 - [gsharedvt] Fix support for constrained calls on interfaces.
  • #36566 - [jit] Increase the buffer size used by the dyncall data structures to 512.
  • [threadpool] Fix get min and available threads icalls.
  • [verifier] Fix the verifiers to handle Roslyn style fixed blocks.

Garbage Collector

Multiple fixes for rare crashes in sgen.

  • Fix marking of cards on 64bit
  • Don’t hardcode the nursery size in aot write barriers
  • Fix race between block allocation and concurrent sweep
  • Make sure we scan aligned memory regions


  • Avoid a crash at shutdown by installing the assembly unload hook for the ‘start_unload’ event instead of the ‘end_un


  • OSX package now ships with