The libgcj-ssa Process.waitFor method is incorrect. Currently we only reap child processes if waitFor is called. However, this is not required by the Process contract. This means that, eg, eclipse leaves zombie children around. This is also in the upstream gcc bugzilla: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11801 I'm submitting this here as well since we need to track it locally; we need this fixed more urgently than does gcc.gnu.org.
Fixed in GCC 4.0 by a new implementation of java.lang.Process. The fix is in GCC 4, so I'm closing this bug.