Какие вещи могут вызвать сбой задачи sgen msbuild периодически с нарушением прав доступа?

В нашем файле MSBuild для нашего проекта мы сгенерировали сборку, содержащую классы, используемые во время сериализации xml. Классы создаются с помощью xsd.exe.

Мы используем следующую конфигурацию задачи SGen.

<SGen ToolPath="$(SdkPath)" 
      ShouldGenerateSerializer="true" 
      UseProxyTypes="false" 
      BuildAssemblyName="AssemblyName.dll" 
      BuildAssemblyPath="Outputs" 
      ContinueOnError="false"  />

Периодически возникает следующая ошибка при выполнении сценария msbuild на нашем сервере сборки. Первоначально эта ошибка могла возникать один раз из каждых 50 сборок (CI), в последнее время частота увеличивалась, и теперь она возникает, может быть, 5-6 из каждых 10 сборок.

Размер сборочной сборки составляет около 410 КБ (около 35 000 строк сгенерированного кода), а при успешной сборке сериализации - около 1,7 МБ.

Когда это терпит неудачу, выходные данные следующие:

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.

Мы используем Hudson для управления нашими сборками, поэтому процессы msbuild и sgen объединяются с Hudson.exe.

Там не так много на веб-сайтах относительно этого типа ошибки от SGen. Конечно, ничего конкретного.

1 ответ

Похоже, что это было вызвано 32-разрядной версией среды выполнения Java, порождающей экземпляр sgen.exe. Сервер сборки работает под управлением двух операционных систем на Windows Server 2003 x64.

Переход на 64-битную версию JRE, похоже, устранил проблему со случайными исключениями AccessViolationException.

Другие вопросы по тегам