Какие вещи могут вызвать сбой задачи sgen msbuild периодически с нарушением прав доступа? - PullRequest
1 голос
/ 23 апреля 2010

В нашем файле 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 сборок.

Размер сборки, которая подвергается Sgenned, составляет около 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 для управления нашими сборками, поэтому Hudson.exe удаляет процессы msbuild и sgen.

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

1 Ответ

2 голосов
/ 21 мая 2010

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

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

...