I upgraded my Windows and Mac workstations to Xamarin.Android 4.8 this morning and ran our integration tests. The Android integration tests are now failing with various SIGSEGV errors. Here's an example:
07-25 14:32:43.787 F/ ( 3641): * Assertion at /Users/builder/data/lanes/monodroid-mlion-monodroid-4.8.0-branch/3f1c339b/source/mono/mono/mini/mini.c:3806, condition `l' not met
07-25 14:32:43.797 E/mono-rt ( 3641): Stacktrace:
07-25 14:32:43.797 E/mono-rt ( 3641):
07-25 14:32:43.797 E/mono-rt ( 3641): at <unknown> <0xffffffff>
07-25 14:32:43.797 E/mono-rt ( 3641): at {Application}.{Project}.Thread.ThreadInfo.get_Instance () <IL 0x0000f, 0x0005f>
07-25 14:32:43.797 E/mono-rt ( 3641): at Test.{Application}.{Project}.Thread.ThreadInfoTest.Instance () <IL 0x0000c, 0x00043>
07-25 14:32:43.797 E/mono-rt ( 3641): at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) <IL 0x0004e, 0xffffffff>
07-25 14:32:43.797 E/mono-rt ( 3641): at <unknown> <0xffffffff>
07-25 14:32:43.797 E/mono-rt ( 3641): at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <IL 0x00030, 0xffffffff>
07-25 14:32:43.797 E/mono-rt ( 3641): at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <IL 0x0004a, 0x0016b>
07-25 14:32:43.797 E/mono-rt ( 3641): at System.Reflection.MethodBase.Invoke (object,object[]) <IL 0x00006, 0x00048>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.Reflect.InvokeMethod (System.Reflection.MethodInfo,object,object[]) <IL 0x00027, 0x000eb>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute (NUnit.Framework.Internal.TestExecutionContext) <IL 0x00017, 0x0006f>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.Commands.SetUpTearDownCommand.Execute (NUnit.Framework.Internal.TestExecutionContext) <IL 0x0000f, 0x00056>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.SimpleWorkItem.PerformWork () <IL 0x0000d, 0x00060>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.RunTest () <IL 0x00054, 0x0016f>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.Execute () <IL 0x00065, 0x001ef>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.CompositeWorkItem.RunChildren () <IL 0x00037, 0x00184>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.CompositeWorkItem.PerformWork () <IL 0x000a6, 0x002ff>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.RunTest () <IL 0x00054, 0x0016f>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.Execute () <IL 0x00065, 0x001ef>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.CompositeWorkItem.RunChildren () <IL 0x00037, 0x00184>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.CompositeWorkItem.PerformWork () <IL 0x000a6, 0x002ff>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.RunTest () <IL 0x00054, 0x0016f>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.WorkItems.WorkItem.Execute () <IL 0x00065, 0x001ef>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnit.Framework.Internal.NUnitLiteTestAssemblyRunner.Run (NUnit.Framework.Api.ITestListener,NUnit.Framework.Api.ITestFilter) <IL 0x00056, 0x0016d>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnitLite.Runner.TextUI.RunTests (NUnit.Framework.Api.ITestFilter) <IL 0x00008, 0x00044>
07-25 14:32:43.797 E/mono-rt ( 3641): at NUnitLite.Runner.TextUI.Execute (string[]) <IL 0x001b2, 0x0071b>
07-25 14:32:43.797 E/mono-rt ( 3641): at Test.{Application}.{Project}.Activity1.OnCreate (Android.OS.Bundle) <IL 0x00078, 0x00223>
07-25 14:32:43.797 E/mono-rt ( 3641): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <IL 0x00012, 0x00081>
07-25 14:32:43.797 E/mono-rt ( 3641): at (wrapper dynamic-method) object.b7259208-3ecc-4dda-8032-524dadcfa28d (intptr,intptr,intptr) <IL 0x00017, 0x0001f>
07-25 14:32:43.797 E/mono-rt ( 3641): at (wrapper native-to-managed) object.b7259208-3ecc-4dda-8032-524dadcfa28d (intptr,intptr,intptr) <IL 0x00023, 0xffffffff>
07-25 14:32:43.797 E/mono-rt ( 3641):
07-25 14:32:43.797 E/mono-rt ( 3641): =================================================================
07-25 14:32:43.797 E/mono-rt ( 3641): Got a SIGSEGV while executing native code. This usually indicates
07-25 14:32:43.797 E/mono-rt ( 3641): a fatal error in the mono runtime or one of the native libraries
07-25 14:32:43.797 E/mono-rt ( 3641): used by your application.
07-25 14:32:43.797 E/mono-rt ( 3641): =================================================================
07-25 14:32:43.797 E/mono-rt ( 3641):
The program 'Mono' has exited with code 0 (0x0).
The code in question looks like this:
public static ThreadInfo Instance
{
get
{
System.Threading.Thread currentThread = System.Threading.Thread.CurrentThread;
if (IsThreadNew(currentThread))
{
return CreateThreadInfo(currentThread);
}
return _threadInfos[currentThread.Name];
}
}
Disabling the test fixture which calls this code just leads to other similar looking SIGSEGV errors in other tests. So, I suspect it's not a problem with the code itself. Besides, the code works with Xamarin Android 4.7.
I'm testing with Visual Studio on Windows 8 and Xamarin Studio on OSX. In both cases, I'm deploying to a Galaxy Nexus emulator using the Intel x86 Atom System Image. The Intel HAXM hypervisor is installed and enabled. GPU emulation is enabled.
The release notes state that an IDE restart may be required. I have tried restarting Visual Studio and Xamarin Studio, cleaning the solution, manually deleting all build artifacts (bin and obj folders), and recreating the emulator.
I'm not sure what else to try.