( NevemTeve | 2020. 05. 15., p – 05:27 )

Szerkesztve: 2020. 05. 15., p – 16:53

Aztán van egy olyan, hogy `mtrace(3)` és `mtrace(1)`
Betoltam a derék termék alá, meglátjuk, mi lesz belőle. (Mondjuk most jól jönne, ha a SpringBoot nem ébredne fel félpercenként, hogy 'na, kell valami? tudok valamit tüsténkedni?'.)
Szerk: és már itt is egy eredmény:


*** Error 'java.io.IOException: Cannot run program "df": error=1886334817, Exec failed'
in system('df -h ./tmp')

Ebből az első rész a ProcessBuilder által dobott Exception toString-je, a hibakódot még nem találtam meg az errno tipikus értékei között, de még keresem.

van pl egy olyan, hogy

/openjdk-jdk11u/src/java.base/share/classes/java/lang/ProcessBuilder.java:1124

            // It's much easier for us to create a high-quality error
            // message than the low-level C code which found the problem.
            throw new IOException(
                "Cannot run program \"" + prog + "\""
                + (dir == null ? "" : " (in directory \"" + dir + "\")")
                + exceptionInfo,
                cause);

Ő ezt hívja:

/openjdk-jdk11u/src/java.base/windows/classes/java/lang/ProcessImpl.java

És végül van a natív kód:

openjdk-jdk11u/src/java.base/unix/native/libjava/ProcessImpl_md.c:
  Java_java_lang_ProcessImpl_forkAndExec
/openjdk-jdk11u/src/java.base/unix/native/libjava/childproc.c:
  int childProcess(void *arg)

Szerk: stacktrace javítása után:

Root Exception: java.io.IOException: error=811743284, Exec failed
Following Excp: java.io.IOException: Cannot run program "df": error=811743284, Exec failed
  at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
  at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
  at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
  at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)

Szóval az a csúnya szám az errno értéke, amikor a childProcess valamilyen hibára szalad. Esetleg ez a 'valamilyen hiba' nem állítja az errno-t, bár mindenki azt hitte, hogy minden hiba állítja az errno-t?