Details
-
Type:
Improvement
-
Status: Reopened (View Workflow)
-
Priority:
Minor
-
Resolution: Unresolved
-
Component/s: core
-
Labels:
-
Environment:Oracle JRE 8 and 11
Jenkins 2.190.1
-
Similar Issues:
Description
If you try to launch a blank command (' ') using Launch.ProcStarter#cmdAsSingleString, an ArrayIndexOutOfBoundException is thrown.
Example of command invocation:
launcher.launch()
.cmdAsSingleString(" ")
.envs(computer.getEnvironment())
.readStdout()
.pwd(rootPath)
.start();
Exception thrown:
java.lang.ArrayIndexOutOfBoundsException: 0 at java.lang.ProcessBuilder.start(ProcessBuilder.java:1014) at hudson.Proc$LocalProc.<init>(Proc.java:249) at hudson.Proc$LocalProc.<init>(Proc.java:218) at hudson.Launcher$LocalLauncher.launch(Launcher.java:930) at hudson.Launcher$ProcStarter.start(Launcher.java:450) at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1299) at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1260) at hudson.remoting.UserRequest.perform(UserRequest.java:205) at hudson.remoting.UserRequest.perform(UserRequest.java:52) at hudson.remoting.Request$2.run(Request.java:356) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
This exception is odd, and difficult to understand. In my understanding, the cause of the error (invalid command) should be more clear, and ideally, validated sooner.
Attachments
Issue Links
- causes
-
JENKINS-59886 Queue stops working when a NodeProperty or QueueTaskDispatcher throw some exception
-
- Resolved
-
- links to
The documentation of the ProcessBuilder class specified that the start method will return an IndexOutOfBoundsException if the command is the empty string, see the documentation here: https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html#start--
So the behavior is the expected. The code sending this command is the one in charge to avoid that or capture the exception properly.
I will close this ticket becase as it is described, there is nothing to do generally.