I'm using JRuby 1.6.7 and Capistrano for orchestrating the deployments of a bunch of Ruby and Java projects. I received an ArrayIndexOutOfBoundsException when trying to start up 3 separate threads that would use IO.popen to execute some commands in parallel. It looks like the ShellLauncher.getCurrentEnv method is expecting that the global ENV variable won't change size while it copies it to a Java String array. (http://grepcode.com/file/repo1.maven.org/maven2/org.jruby/jruby-core/1.6.7/org/jruby/util/ShellLauncher.java#219) I think Bundler is changing the ENV hash in my particular case. The ShellLauncher code shouldn't make this particular assumption. See this gist: https://gist.github.com/2398538 for a contrived example that reproduces the bug.