2015-01-31 14 views
5

Ich versuche, einem seltsamen Verhalten auf einer Maschine auf den Grund zu gehen. Ich habe eine triviale Konsolenanwendung, die interaktiv ausgeführt wird, aber wenn ich sie über WMI aufruft, wird sie sofort gestartet und beendet.Fusion Log Assembly Binder Error - Bindungsergebnis: hr = 0x1. Falsche Funktion

Ich habe das Fusionsprotokoll aktiviert, da Procmon nicht entschlüsselt wurde. Ich sehe den folgenden Fehler:

*** Assembly Binder Log Entry (31-01-2015 @ 19:22:51) *** 

The operation was successful. 
Bind result: hr = 0x1. Incorrect function. 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\CMCBOOTSTRAP\Cmc.Installer.Agent.Console.exe 
--- A detailed error log follows. 

BEGIN : Native image bind. 
END : Incorrect function. (Exception from HRESULT: 0x00000001 (S_FALSE)) 

Was ist die Ursache für "falsche Funktion"? Was kann ich noch sehen, um festzustellen, warum diese Anwendung beim Start über WMI effektiv abstürzt?

Und ich meine trivial ...

class Program 
{ 
    static void Main(string[] args) 
    { 
     Thread.Sleep(30000); 
    } 
} 

Umwelt ist Windows Server 2012 R2 und .NET 4.5.

+0

Sie sollten die Optionen zum Ausführen von Image-Dateien verwenden, um einen Debugger zu starten, wenn Ihr Prozess startet. Mit Windbg können Sie es als Debugging-Server starten, damit Sie von einer anderen Sitzung aus eine Verbindung zu ihm herstellen können. Nicht so einfach einzurichten, aber es gibt dir direkte Einblicke. Eine weitere Möglichkeit besteht darin, Ihre App zu profilieren und zu prüfen, wohin die CPU mit ETW geht. –

+0

Ich habe nur über einen Terminalserver-Gateway eine Verbindung zu diesem Computer, und der Computer hat keinen Internetzugang. Daher ist es unwahrscheinlich, dass ein Debugger remote verbunden wird. Ich bin mir nicht sicher, was Sie mit dem Profiler vorschlagen. Was würde ich suchen, wenn die Anwendung eine Zeile Code ist? Was ist ETW? –

+0

Wenn Sie Ihren Prozess über ETW starten, wird es normalerweise unter Sitzung Null gestartet, wo eine Debugger-Benutzeroberfläche keine Desktopzugriffe hat und Sie den Debugger nicht verwenden können. Aber Sie können Windbg als Debugging-Server-Prozesse starten und Sie können lokal über TCP oder Named Pipes zu verbinden, so dass Sie sehen können, was vor sich geht. ETW ist Ereignisverfolgung für Windows. Sie können z.B. PerfView. Wenn dort verwaltete Ausnahmen auftreten, werden sie in den Profiling-Daten angezeigt. Ausnahmewege neigen dazu, langsam zu sein, die Ihnen eine Idee geben könnten, was falsch lief. –

Antwort

12

Dies ist ein ganz normales Missgeschick, Sie haben es von Fuslogvw.exe erhalten, indem Sie das Optionsfeld "Native Images" in der Einstellung Log-Kategorien ausgewählt haben. Auch auf meiner eigenen Maschine gut reproduzierbar, sehe ich viele von ihnen.

Der tatsächliche Fehlercode ist S_FALSE, ein COM-Fehlercode, der "es erfolgreich fehlgeschlagen" bedeutet. Deshalb heißt es The operation was successful. Fehlinterpretiert für die Diagnosemeldung als "Funktion fehlgeschlagen", das ist die Beschreibung für Windows-Fehler 1 und zurückgegeben von der WinAPI-Funktion FormatMessage().

Der erfolgreiche Fehler wird vollständig erwartet, Sie haben Ngen.exe in Ihrer Konsole-Modus-App noch nicht ausgeführt, so dass das native Image dafür nicht verfügbar ist. Schau weiter, das ist es nicht. Ändern Sie die Log-Kategorie wieder auf "Standard", native Bilder sind nicht Ihr Problem.

+0

Danke, zurück zum Anfang. Keine Ahnung, warum diese App startet und dann sofort stirbt. Ich kann nicht einmal GFLags dazu bringen, beim Start einen Debugger anzuhängen. –

+6

Ich habe natürlich keine vernünftige Schätzung. Ziehe die Maschine in den 4. Stock und lass sie aus dem Fenster gleiten. Das Öffnen des Fensters ist optional. –

+0

Und das passiert natürlich nur auf einer Maschine. –