Mono 5.8.0 Release Notes

Release History

5.8.0.127 - Stable Release (26 February 2018)

5.8.0.108 - Stable Release (1 February 2018)

5.8.0.108 - Alpha Release (23 January 2018)

5.8.0.103 - Preview Release (10 January 2018)

Highlights

In Depth

Runtime

WebAssembly

This release includes our preliminary port of Mono to WebAssembly. It should be possible to build both the runtime and class libraries targeting it.

Interpreter

Parts of the work to revamp the interpreter landed in this release, check out the blog post to learn more about our plans in that area.

Profiler

Added a new quiet mode to the profiler where a minimal set of events are enabled by default and all high volume events must be explicitly enabled. This gives better control on the profiler and should make it usable for long profiling sessions.

Added a preview version of the Mono.Profiler.Log.dll which provides an API to the profiler. It is still unstable as we’re working to define the feature set.

Verifier

The runtime verifier now supports C# 7.0 byref returns.

Modes for the SGen GC

Our sgen garbage collector now has support for so called “modes”. They allow telling the GC more about the workload you’re running so that it can optimize its behavior, e.g. if you care more about high throughput than low pause times. This is much simpler than figuring out the correct values for other, more low-level GC knobs.

Check out the mode parameter documentation for the MONO_GC_PARAMS environment variable in the man page.

Other changes

Improved compatibily with alternative languages that depend on implicit widening of locals.

Class Libraries

We’re continuing on our plan to share more source code with CoreFX and replaced several more classes in this release.

csi

You are now able to use Roslyn’s csi (C# interactive) REPL tool from the command line.

It is similar to the csharp tool we had in Mono for a long time.

Roslyn / csc

Roslyn was updated to the 2.3.2 release.

mcs

mcs now has better support for C# 7 syntax.

MSBuild

msbuild was updated to a newer upstream version that among other things includes a performance improvement when building on macOS.

mkbundle

mkbundle had a few issues when running on macOS, those are fixed. It now also provides better error messages when something goes wrong.

ilasm

ilasm gained support for the AggressiveInlining keyword.

Bug Fixes

Bugzilla #4786 - After failed call to SqlConnection.Open (due to invalid password), subsequent invalid password attempts result in wrong exception

Bugzilla #5798 - Thread abort can lead to locks not being released

Bugzilla #5804 - Thread.ResetAbort can prevent appdomain unloading

Bugzilla #6339 - Headers not being populated in SoapExtension

Bugzilla #10074 - Error while updating status of command: MonoDevelop.Ide.Commands.ViewCommands.LayoutList

Bugzilla #11696 - Missing MethodImpl has a duplicate

Bugzilla #12157 - Missing: Init state for this differs depending on path

Bugzilla #17325 - RealProxy returns MarshalByRefObject for an Interface instead of the real interface type

Bugzilla #25755 - HttpClient.Timeout does not throw ArgumentOutOfRangeException when setting Timeout property to 0

Bugzilla #36634 - IpcChannelTest.Bug609381 hangs on Linux

Bugzilla #41279 - Wrong syntax used for nested types in MethodAccessException (and similar)

Bugzilla #43172 - Failure when alerting threads waiting on a socket that closes

Bugzilla #43563 - Crash when struct Foo contains static field of type Foo[][]

Bugzilla #44255 - Inconsistent results in the serialization of TimeZoneInfo.

Bugzilla #44266 - Unable to change variable values whilst debugging

Bugzilla #52157 - SocketTest.ConnectedProperty test fails in FullAOT Linux runs

Bugzilla #52621 - Typo in exception message in PKCS12.cs

Bugzilla #55603 - Follow-up to bug 52845: Satellite assemblies not loaded by app when using “Bundle assemblies into native code” even though they are now successfully mkbundled

Bugzilla #55697 - .NET 2.0 style web services fail to build under msbuild in Release but work with xbuild

Bugzilla #56111 - Hitting assertion after enabling AOT+LLVM on x86 devices in tramp-x86.c:124

Bugzilla #56242 - TypeTest.GetGenericMethodDefinitionOverInflatedMethodOnGTD throws NRE on Android in Release mode

Bugzilla #56452 - Problem Stack too big

Bugzilla #56653 - Zygote crashes

Bugzilla #56684 - (mono-2.0-sgen.dll) in mono.exe: 0xC0000005: Access violation reading location 0x04FA3D9A.

Bugzilla #56727 - Runtime crashes when disposing DeflateStream

Bugzilla #56814 - Xamarin.Mac.dll Memory Leak starting with 3.2.0.175 Release

Bugzilla #57002 - New bockbuild package is missing .dSYM directories

Bugzilla #57069 - WaitHandle.SignalAndWait is broke

Bugzilla #57222 - System.Reflection.AmbiguousMatchException for two fields with same name but different types

Bugzilla #57232 - Compiler error when using ternary operator and no whitespace

Bugzilla #57476 - AOT fails with large StructLayout size on Debug+ARMv7

Bugzilla #57488 - Debugger crashes when inspecting variable in a unit test

Bugzilla #57496 - [Slovenian CultureInfo + others] .Parse throws exception when parsing negative values

Bugzilla #57505 - Missing error CS0165 in presence of commented line

Bugzilla #57528 - [THIS WEEK] Nested streams using SslStream cause ObjectDisposedException when disposed

Bugzilla #57629 - [io-layer] File.Delete () throws System.UnauthorizedAccessException on non-existing files on a read-only path

Bugzilla #57691 - InternalsVisibleTo doesn’t work with 2048-bit SNK files

Bugzilla #57744 - ReflectionTypeLoadException.LoaderExceptions has null exceptions

Bugzilla #57771 - F#.NET Core 2.0 projects do not compile

Bugzilla #57796 - Compiler Crash instead of CS1621

Bugzilla #57850 - Mono assertion when ResolveEventHandler returns a reflection-only assembly

Bugzilla #57851 - Assertion if using ResolveEventHandler to find custom attributes

Bugzilla #57887 - Console.Error.WriteLine in System.Net.NetworkInformation

Bugzilla #57918 - System.Net.Sockets.EndSend returns incorrect value

Bugzilla #57930 - Building netstandard 2.0 project throws DllNotFoundException: hostfxr during msbuild

Bugzilla #57936 - Race conditions of mempool.c

Bugzilla #57959 - SIGSEGV in roslyn with corrupted stack

Bugzilla #58100 - mono_w32socket_convert_error: no translation into winsock error for (6) “Device not configured”

Bugzilla #58114 - [llvm] csc (Rolsyn) produce fault clauses that the llvm backend does not support

Bugzilla #58168 - pedump incorrectly reports mscorlib as invalid

Bugzilla #58291 - Mono.CSharp Evaluator does not compile enums and throws an exception

Bugzilla #58317 - Leaking threads: SGen worker and Finalizer

Bugzilla #58344 - SIMD crash using System.Numerics.Vector

Bugzilla #58361 - EnumBuilder can no longer be used to generate IL code

Bugzilla #58379 - Mono jit gives different results that .net for simple il

Bugzilla #58411 - System.Security.Cryptography.CryptographicException: Store root doesn’t exist

Bugzilla #58421 - sre-save.c asserts in fixup_method () if TypeBuilder token is used across assemblies

Bugzilla #58423 - Race condition of metadata.c (mono_metadata_get_canonical_generic_inst)

Bugzilla #58454 - Cannot resolve method Subscription`1 Subscribe[TSelection](System.Func`2[TState,TSelection], System.Action`2[TSelection,TState]) because the declaring type of the method handle FSI_0002+Store`1[TState] is generic. Explicitly provide the declaring type to

Bugzilla #58612 - When 2 breakpoints are hit at “same time” 2nd thread frames count==0

Bugzilla #58621 - CS1703: An assembly `gactestlib’ with the same identity has already been imported. Consider removing one of the references

Bugzilla #58637 - Heap overflow when using GetAssemblyName

Bugzilla #58738 - System.IO.MonoIO.Read - Native Crash when device file is gone

Bugzilla #58770 - * Assertion at ..\mono\utils\mono-threads.c:707, condition `info’ not met

Bugzilla #58782 - Exception stack traces are deleted when reaching the native-to-managed wrapper in a reverse invoke

Bugzilla #58793 - Fix pedump to use normal runtime init sequence

Bugzilla #58809 - Return result of Type.IsAssignableFrom with the generic parameters differs from MS.NET one

Bugzilla #58829 - Application Output Window being flooded with “[Mono] worker parking, [Mono] worker unparking” messages when debugging agasint Android Emulator.

Bugzilla #58877 - MonoTests.System.Threading.Tasks.TaskTests.Delay_Simple fails randomly after upgrade to Xcode 8.3

Bugzilla #58901 - Breaking ABI change on 32 bits with xcode 8.3 or newer

Bugzilla #58911 - performance degradation with linq expressions

Bugzilla #58965 - csi fails with “type Object is defined in an assembly that is not referenced”

Bugzilla #59039 - bug-18026.exe test times out on armel/armhf

Bugzilla #59154 - runtime can’t load secondary-dependent library from newly unpacked temp directory

Bugzilla #59180 - verifier does not handle TYPEDBYREF properties

Bugzilla #59235 - [mono-2017-06] android.runtime.JavaProxyThrowable: System.ObjectDisposedException: Cannot access a disposed object.

Bugzilla #59239 - [mono2017-06]FileTest.SymLinkLoop failed on tvOS device

Bugzilla #59281 - System.Threading.AbandonedMutexException: The wait completed due to an abandoned mutex.

Bugzilla #59334 - Expression: Can’t catch non-exception objects (mono wraps them with RuntimeWrappedException)

Bugzilla #59364 - Assertion at dynamic-image.c:209, condition `prev == MONO_HANDLE_RAW (obj)’ not met

Bugzilla #59430 - api-diff not outputing out params correctly

Bugzilla #59436 - MT3001 error

Bugzilla #59664 - Type.GetType(“”, true) throws ArgumentException on Mono but TypeLoadException on .NET

Bugzilla #59824 - Casting an array of enums is inconsistent with .NET Framework behavior

Bugzilla #59832 - [iOS]MT3001 error: Could not AOT the assembly error while building iOS/mobile samples

Bugzilla #59909 - WebInvokeAttributeTest.RejectTwoParametersWhenNotWrapped() fails on Android

Bugzilla #59916 - get_current_locale_name fails under the load with String conversion error: Illegal byte sequence encounted in the input

Bugzilla #59953 - [llvm][bitcode] test_0_float_return_spill failed: got 1, expected 0

Bugzilla #60233 - Assertion in dynamic-image.c after 792b5367cd3a6ffa1a192c4d2d7ace3509cbb646

Bugzilla #60238 - Mono assertion hit when using csharp repl

Bugzilla #60245 - FieldInfo.GetValue fails on ContextBoundObject

Bugzilla #60317 - Stuck WebRequest

Bugzilla #60340 - Csc msbuild task fails to find csc.exe

Bugzilla #60480 - [mono-2017-10] ZipArchiveTests in System.iO Compression tests fail on device

Bugzilla #60539 - mini-codegen.c:1265, condition `reginfo [sreg].born_in > 0’ not met

Bugzilla #60545 - Multiple argument generic with contravariant interface as an argument causes MissingMethodException.

Bugzilla #60634 - Assertion failure ‘align > 0’ happening as of d15-5

Bugzilla #60771 - Attempting to JIT compile method ‘System.Runtime.CompilerServices.Unsafe:Add (byte&,int)’ while running in aot-only mode

Bugzilla #61002 - Runtime exception: Cannot access a disposed object. Object name: ‘MobileAuthenticatedStream’.

GitHub #6169 - Thread objects are being leaked

GitHub #6339 - System.TypeLoadException is thrown when run .net standard library with Mono

GitHub #6383 - System.Diagnostics.ProcessTest.Start1_FileName_NotFound failing

Contributors

Aleksey Kliger, Alex Rønne Petersen, Alexander Kyte, Alexander Köplinger, Alexis Christoforides, Andi McClure, Ankit Jain, Armin Hasitzka, Bernhard Urban, Chris Hamons, Cody Russell, David Karlaš, Eberhard Beilharz, Jason Imison, Jo Shields, Johan Lorensson, Jon Purdy, Jonathan Chambers, Jonathan Pryor, Katelyn Gadd, Ludovic Henry, Marek Habersack, Marek Safar, Marius Ungureanu, Martin Baulig, Miguel de Icaza, Niklas Therning, Rodrigo Kumpera, Rodrigo Moya, Toni Spets, Uri Simchoni, Vlad Brezae, Vladimir Kargov, Vladimir Kazakov, Zoltan Varga