В нашем файле MSBuild для нашего проекта мы sgen блок, содержащий классы, используется во время XML-сериализации. Классы сгенерированы с помощью xsd.exe.
Мы используем следующую конфигурацию задачи SGen.
<SGen ToolPath="$(SdkPath)"
ShouldGenerateSerializer="true"
UseProxyTypes="false"
BuildAssemblyName="AssemblyName.dll"
BuildAssemblyPath="Outputs"
ContinueOnError="false" />
Intermittantly следующая ошибка брошен при выполнении msbuild сценария на нашем сервере сборки. Первоначально эта ошибка, возможно, произошла однажды из каждых 50 (CI) сборки, недавно частота увеличивалась, и это теперь происходит, возможно, 5-6 из каждых 10 сборок.
Размер блока, который является Sgenned, о 410k (приблизительно 35 000 строк сгенерированного кода), и когда успешный блок сериализации о 1.7M в размере.
Когда это перестало работать, вывод следующие:
Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
E:\Path_ToBuild_Workspace\SolutionBuild.MSBuild(74,5): error MSB6006: "sgen.exe" exited with code -1073741819.
Мы используем Гудзон для управления нашими сборками, таким образом, msbuild и процессы sgen поэтому spwaned Hudson.exe.
Нет очень там в межсетях относительно этого типа ошибки от SGen. Конечно, ничто конкретное.
Похоже, это было вызвано 32-разрядной версией среды выполнения Java, порождающей экземпляр sgen.exe. Сервер сборки работает под управлением двух оптеронов на Windows Server 2003 x64.
Переход на 64-битную версию JRE, похоже, устранил проблему со случайными исключениями AccessViolationExceptions.