java.io.IOException: erreur=11

Je suis confronté à un problème bizarre avec le Java ProcessBuilder. Le code est ci-dessous (dans une forme légèrement simplifiée)

public class Whatever implements Runnable
{

public void run(){
        //someIdentifier is a randomly generated string
        String in = someIdentifier + "input.txt";
        String out = someIdentifier + "output.txt";
        ProcessBuilder builder = new ProcessBuilder("./whateveer.sh", in, out);
        try {
            Process process = builder.start();
            process.waitFor();
        } catch (IOException e) {
            log.error("Could not launch process. Command: " + builder.command(), e);
        } catch (InterruptedException ex) {
            log.error(ex);
        }
}

}

whatever.sh lit:

R --slave --args $1 $2 <whatever1.R >> r.log    

Charge des cas de Whatever sont soumis à un ExecutorService de taille fixe (35). Le reste de l'application attend tous à la finition - mis en œuvre avec un CountdownLatch. Tout se passe bien pendant plusieurs heures (Scientific Linux 5.0, java version "1.6.0_24") avant de jeter l'exception suivante:

java.io.IOException: Cannot run program "./whatever.sh": java.io.IOException: error=11, Resource temporarily unavailable
    at java.lang.ProcessBuilder.start(Unknown Source)
... rest of stack trace omitted...

Quelqu'un a une idée de ce que cela signifie? Basé sur le google/bing résultats de la recherche pour java.io.IOException: error=11, il n'est pas le plus commun des exceptions et je suis complètement dérouté.

Mon sauvage et pas si une hypothèse est que j'ai trop de threads essayer de lancer le même fichier en même temps. Cependant, il faut des heures de temps CPU pour reproduire le problème, donc je n'ai pas essayé avec un plus petit nombre.

Toutes les suggestions sont grandement appréciés.

  • avez-vous vérifié le fichier ouvert cound de votre processus java avec lsof?
  • Est-il errno 11 ou 12, ou les deux?
  • erreur = 11
InformationsquelleAutor mbatchkarov | 2011-12-05