Ich entwickle einen einfachen Compiler, und die letzte Stufe nach dem IL-Code wurde mit dem ilasm
Dienstprogramm kompiliert, wo der Absturz stattfindet. HierProcess.Start stürzt ohne Ausnahme ab
ist der vollständige Code der Methode (leicht modifiziert für Stack):
public static string ExecuteIL(string filename)
{
var ilasmp = new System.Diagnostics.Process();
ilasmp.StartInfo.FileName = "ilasm";
ilasmp.StartInfo.Arguments = filename;
//Crash does not happen here:
ilasmp.Start();
ilasmp.WaitForExit();
var p = new System.Diagnostics.Process();
p.StartInfo.FileName = "/usr/bin/time";
p.StartInfo.Arguments = "mono " + filename.Replace(".il", ".exe");
p.StartInfo.UseShellExecute = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
try{
//Crash happens HERE, but for some reason the exception does not get thrown
p.Start();
}
catch{
throw new Exception();
}
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
return output;
}
Nur um es klar: Der Absturz geschieht nicht, wenn ich Process.Start
zum ersten Mal (ilasmp.Start();
) nennen, aber Aus irgendeinem Grund passiert das später (p.Start();
), und was interessant ist, ist, dass eine Ausnahme nicht geworfen wird. Oder mit anderen Worten, der Code stürzt einfach ab.
, welche Version von Mono verwenden Sie? – knocte
@knocte, ich denke, es ist eine der neuesten Versionen, hier ist die genaue Rückkehr von 'mono --version':' Mono JIT Compiler Version 4.2.4 (Tarball Fr Jun 10 10:12:47 UTC 2016) ' –
was OS? Wie hast du diese Version von Mono installiert? – knocte