2017-12-11 5 views
7

Ich starte einige EXEs (7za.exe, pg_basebackup.exe, ...) von JAVA ProcessBuilder. Es funktioniert ohne Probleme für 2 oder 3 Tage (EXE wird täglich aufgerufen). Danach stürzen EXEs kontinuierlich ab.EXE Absturz beim Aufruf von ProcessBuilder in Java

7za.exe error:
Exit code :: -1.073.741.502

Windows Event log error:
Faulting application name: 7za.exe, version: 9.20.0.0, time stamp: 0x4ce553f5 Faulting module name: KERNELBASE.dll, version: 6.2.9200.21941, time stamp: 0x5792e533
Exception code: 0xc0000142
Fault offset: 0x000683ba
Faulting process id: 0x10bc
Faulting application start time: 0x01d2cebdff3bb05a
Faulting application path: EXEpath\bin\7za.exe
Faulting module path: KERNELBASE.dll
Report Id: 3d27046a-3ab1-11e7-93fe-00505680156e
Faulting package full name:
Faulting package-relative application ID:

Code-Snippet

File workingDir = new File(workingDirectory); 
ProcessBuilder pb = new ProcessBuilder(argumentsList); 
pb.redirectErrorStream(true); 
pb.directory(workingDir);   
Process process = pb.start(); 
BufferedReader commandOutput = new BufferedReader(new 
InputStreamReader(process.getInputStream())); 
String s = null; 
while ((s = commandOutput.readLine()) != null) { 
    print(s); 
} 
int exitCode = process.exitValue(); 

Auch ist es nicht in allen Maschinen geschieht, die diesen Code ausführen. Ist ein Speicherleck ODER ein Betriebssystemfehler? Bitte beraten.

Vielen Dank im Voraus.

Edit 1: Gleiche Art von Fehler in C#. Es enthält auch Fix.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/cb9a15ed-4401-47f1-8c78-0c63c3da677d/process-returns-0xc0000142-when-started-from-a-windows-service-prividing-the-credentials?forum=clr
Wie es in Java zu erreichen?

Edit 2: Java wird als Dienst ausgeführt wird (mit wrapper)
Java-Version: 1.0.051
Windows-Version: Windows Server 2012 und R2 (64-Bit), Windows 7 (64 Bit), Windows 8 (64bit)

+0

Es sieht so aus, als wäre Ihr Pfad ein wenig verstümmelt: 'EXEpath \ bin \ 7za.exe'? vielleicht hast du versehentlich etwas an einem Ort eingegeben, den du nicht haben solltest :-) – Ivonet

+0

Bitte ignoriere diesen Ort. Das ist nicht der tatsächliche Ort. –

+0

Funktionieren die Exes, wenn Sie sie manuell starten? (durch Doppelklick) – Asoub

Antwort

0

Daher stimme ich den obigen Kommentaren zu, die zusätzliche Details zur Identifizierung der zugrunde liegenden Ursache dieses Problems (Anzahl der Prozesse beim Auftreten der Probleme, Metriken der Instanz usw.) verlangen. Generell würde ich argumentieren, dass es ein Anti-Pattern ist, um eine ausführbare Datei von Java aufzurufen, wenn Sie es vermeiden können. In diesem Fall würde ich empfehlen, dass Sie versuchen, den Aufruf der ausführbaren Datei mit etwas wie 7-zip binding zu ersetzen.

Dies sollte Ihnen einen besseren Einblick in die Funktionsweise der zugrundeliegenden Prozesse geben und die Eigentumsrechte und die Verwaltung der Prozesse unter der JVM verlagern.

Verwandte Themen