¿Qué puede hacer que Java siga ejecutándose después de System.exit ()?

Tengo un programa Java que se inicia a través deProcessBuilder de otro programa Java.System.exit(0) se llama desde el programa secundario, pero para algunos de nuestros usuarios (en Windows) eljava.exe proceso asociado con el niño no termina. El programa hijo no tiene ganchos de cierre, ni tiene unSecurityManager que podría pararSystem.exit() de terminar la VM. No puedo reproducir el problema yo mismo en Linux o Windows Vista. Hasta ahora, los únicos informes del problema provienen de dos usuarios de Windows XP y un usuario de Vista, que utilizan dos JRE diferentes (1.6.0_15 y 1.6.0_18), pero pueden reproducir el problema cada vez.

¿Alguien puede sugerir razones por las cuales la JVM no podría terminar después deSystem.exit(), y luego solo en algunas máquinas?

Editar 1: Conseguí que el usuario instalara el JDK para que pudiéramos obtener un volcado de subprocesos de la VM infractora. Lo que el usuario me dijo es que el proceso de VM desaparece de VisualVM tan pronto como hace clic en el elemento 'Salir' en mi menú --- pero, de acuerdo con el Administrador de tareas de Windows, el proceso no ha terminado, y no importa cuánto tiempo el usuario espera (minutos, horas), nunca termina.

Edición 2: He confirmado ahora queProcess.waitFor() en el programa principal nunca regresa para al menos uno de los usuarios que tiene el problema. Entonces, para resumir: la máquina virtual secundaria parece estar muerta (VisualVM ni siquiera lo ve) pero el padre todavía ve el proceso como en vivo y también Windows.

Respuestas a la pregunta(4)

Su respuesta a la pregunta