0

Groovy スクリプトでこのアサーションが失敗する原因は何ですか?

Exception in thread "Thread-2" groovy.lang.GroovyRuntimeException: exception while dumping process stream
    at org.codehaus.groovy.runtime.ProcessGroovyMethods$ByteDumper.run(ProcessGroovyMethods.java:488)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Bad file descriptor
    at java.io.FileInputStream.available(Native Method)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:325)
    at java.io.FilterInputStream.read(FilterInputStream.java:90)
    at org.codehaus.groovy.runtime.ProcessGroovyMethods$ByteDumper.run(ProcessGroovyMethods.java:484)
    ... 1 more

JVM 1.6.0_14 で Groovy 1.8.3 を実行しています。同様の古いバグ レポートに気付きましたが、すべてのプロセスが開始された後に waitFor() 呼び出しを実行し、1.6.x で修正されると報告されています。

どうやら例外をトラップできないため、どこで発生しているのか正確にはわかりません。ただし、次のコード セグメントで発生すると推測しています。

  def pipedOutputStream = new PipedOutputStream()
  process.consumeProcessOutput(
    new TeeOutputStream(System.out, pipedOutputStream),
    new TeeOutputStream(System.err, pipedOutputStream))
  new PipedInputStream(pipedOutputStream).eachLine {
    (it =~ /condition/).find { process.destroy() }
  }

  System.exit(0)
4

0 に答える 0