[build] Use a system mono/2018-06 debug build (#2440)

Context: https://github.com/mono/mono/pull/11706
Context: https://github.com/xamarin/xamarin-android/pull/2357
Context: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1239/console

Sometimes a Jenkins build will timeout when executing the
xamarin-android unit tests.  The timeout *appears* to occur when
`mono` is used to execute a process, the process "finishes," but the
process never actually *exits*, thus "hanging".

For example, [consider this build log fragment][0] (with timestamps):

	23:37:48   Build succeeded.
	23:37:48       0 Warning(s)
	23:37:48       0 Error(s)
	23:37:48
	23:37:48   Time Elapsed 01:23:14.60
	02:37:48 Build timed out (after 180 minutes). Marking the build as aborted.

The "Build succeeded" message comes from an `msbuild` invocation.
Once `msbuild` finished, we would expect it's process to exit.
*It didn't*.  Instead, the underlying `mono` process is *not* exiting,
presumably deadlocked, until the overall job times out and is killed.

Attempt to help identify the hang by using a "debug" mono/2018-08
system mono, built from [Mono PR #11706][1], which prints out
additional messages around child process use:

	diff --git a/mono/metadata/w32process-unix.c b/mono/metadata/w32process-unix.c
	index 2db5dea7a705..fbd4731cacb2 100644
	--- a/mono/metadata/w32process-unix.c
	+++ b/mono/metadata/w32process-unix.c
	@@ -2096,7 +2095,7 @@ process_create (const gunichar2 *appname, const gunichar2 *cmdline,
	 	if (argv)
	 		g_strfreev (argv);
 
	-	mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER_PROCESS, "%s: returning handle %p for pid %d", __func__, handle, pid);
	+	g_printerr ("XXX-MONO: %s: returning handle %p for pid %d from %d\n", __func__, handle, pid, getpid());

This will hopefully allow @lewurm to continue investigations.

[0]: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1237/console
[1]: https://github.com/mono/mono/pull/11706
This commit is contained in:
Bernhard Urban 2018-11-30 17:40:30 +01:00 коммит произвёл Jonathan Pryor
Родитель 581245f80f
Коммит 70530ab1a9
3 изменённых файлов: 6 добавлений и 4 удалений

Просмотреть файл

@ -71,8 +71,8 @@
<JavaInteropSourceDirectory Condition=" '$(JavaInteropSourceDirectory)' == '' ">$(MSBuildThisFileDirectory)external\Java.Interop</JavaInteropSourceDirectory>
<LlvmSourceDirectory Condition=" '$(LlvmSourceDirectory)' == '' ">$(MSBuildThisFileDirectory)external\llvm</LlvmSourceDirectory>
<MonoSourceDirectory>$(MSBuildThisFileDirectory)external\mono</MonoSourceDirectory>
<MonoRequiredMinimumVersion Condition=" '$(MonoRequiredMinimumVersion)' == '' ">5.16.0</MonoRequiredMinimumVersion>
<MonoRequiredMaximumVersion Condition=" '$(MonoRequiredMaximumVersion)' == '' ">5.17.0</MonoRequiredMaximumVersion>
<MonoRequiredMinimumVersion Condition=" '$(MonoRequiredMinimumVersion)' == '' ">5.16.0.229</MonoRequiredMinimumVersion>
<MonoRequiredMaximumVersion Condition=" '$(MonoRequiredMaximumVersion)' == '' ">5.16.0.230</MonoRequiredMaximumVersion>
<IgnoreMaxMonoVersion Condition=" '$(IgnoreMaxMonoVersion)' == '' ">True</IgnoreMaxMonoVersion>
<MonoRequiredDarwinMinimumVersion>$(MonoRequiredMinimumVersion).0</MonoRequiredDarwinMinimumVersion>
<LinkerSourceDirectory>$(MSBuildThisFileDirectory)external\mono\external\linker</LinkerSourceDirectory>

Просмотреть файл

@ -183,6 +183,8 @@ $(eval $(call CREATE_THIRD_PARTY_NOTICES_RULE,ThirdPartyNotices.txt,foundation,F
$(eval $(call CREATE_THIRD_PARTY_NOTICES_RULE,bin/$(CONFIGURATION)/lib/xamarin.android/ThirdPartyNotices.txt,$(THIRD_PARTY_NOTICE_LICENSE_TYPE),True,False))
run-all-tests:
@echo "PRINTING MONO VERSION"
mono --version
$(call MSBUILD_BINLOG,run-all-tests) $(TEST_TARGETS) /t:RunAllTests
$(MAKE) run-api-compatibility-tests

Просмотреть файл

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_DarwinMonoFramework>MonoFramework-MDK-5.16.0.106.macos10.xamarin.universal.pkg</_DarwinMonoFramework>
<_DarwinMonoFramework>MonoFramework-MDK-pr@8b63979dafb-dirty-5.16.0.229.macos10.xamarin.universal.pkg</_DarwinMonoFramework>
<_AptGetInstall>apt-get -f -u install</_AptGetInstall>
</PropertyGroup>
<ItemGroup>
@ -59,7 +59,7 @@
<MaximumVersion Condition=" '$(IgnoreMaxMonoVersion)' == '' Or '$(IgnoreMaxMonoVersion)' == 'False' " >$(MonoRequiredMaximumVersion)</MaximumVersion>
<DarwinMinimumVersion>$(MonoRequiredDarwinMinimumVersion)</DarwinMinimumVersion>
<CurrentVersionCommand>$(MSBuildThisFileDirectory)..\scripts\mono-version</CurrentVersionCommand>
<DarwinMinimumUrl>https://xamjenkinsartifact.azureedge.net/build-package-osx-mono/2018-06/78/341142d7656f43239a041b2c44f00acfb8fa7c59/$(_DarwinMonoFramework)</DarwinMinimumUrl>
<DarwinMinimumUrl>https://xamjenkinsartifact.azureedge.net/build-package-osx-mono-pullrequest/pr/263/8b63979dafb7e2d275680abe26a6e27d1bdf302a/$(_DarwinMonoFramework)</DarwinMinimumUrl>
<DarwinInstall>installer -pkg "$(AndroidToolchainCacheDirectory)\$(_DarwinMonoFramework)" -target /</DarwinInstall>
</RequiredProgram>
</ItemGroup>