#c# #.net #windows #windows-services #csc
#c# #.net #Windows #windows-службы #csc
Вопрос:
Я создаю некоторый метод (это всего лишь метод тестирования, чтобы изолировать проблему от очень-очень большой системы):
private void CompileHalloWorld()
{
System.Threading.Thread.Sleep((30000));
if (!Directory.Exists(_workingDir))
{
Directory.CreateDirectory(_workingDir);
}
Directory.SetCurrentDirectory(_workingDir);
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v4.0" } });
var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true);
parameters.GenerateExecutable = true;
CompilerResults results = null;
try
{
results = csc.CompileAssemblyFromSource(parameters,
@"using System;
class Program {
public static void Main(string[] args) {
Console.WriteLine(""Hallo World!"");
}
}");
}
catch (Exception e)
{
int a = 2;
}
results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText));
}
На 99% машин этот метод работает хорошо, но на одной из машин есть какая-то проблема. Когда сервер работает несколько раз (несколько дней), что-то сломалось в Windows, я думаю. Затем, когда я запускаю CompileHalloWorld() из exe-приложения, все работает нормально, но когда я запускаю этот метод из простого пустого сервиса, после вызова CompileAssemblyFromSourceinvoke в структуре результатов ошибок в коллекции нет, но csc.exe верните код выхода -1073741502… После перезагрузки сервера все снова работает хорошо, но я не могу перезапускать сервер каждый день…
Я пытаюсь найти какое-то решение в SO. Я проверяю диспетчер задач и нет csc.exe процессы зависают, Visual Studio не работает, нет VBCSCompiler.exe зависает…
Пожалуйста, помогите мне.
Комментарии:
1. Отформатируйте этот компьютер — если это не поможет, некоторые из ваших компонентов сломаны. Возможно, процессор, возможно, оперативная память.
2. @TomaszJuszczak если бы проблема заключалась в «CPU» или «RAM» , Windows сначала узнала бы об этом, а не о приложении пользовательского режима. При этом p-код. OP не упоминал о каком-либо BSOD
3. @Tomasz Извините, вы хотите отформатировать рабочий сервер? Это невозможно.
4.
-1073741502
это код ошибкиSTATUS_DLL_INIT_FAILED
. Возможно, это дает вам достаточно информации, чтобы начать диагностику проблемы.5. Эти символьные константы разбросаны по множеству файлов в Windows SDK. Обычно я просто захожу в magnumdb.com и посмотрите, появится ли что-нибудь ценное. Если 32-разрядное значение отрицательно при интерпретации как количество со знаком, вполне безопасно предположить, что код
HRESULT
илиNT_STATUS
.