Why can't a Java 7 or greater Runtime.process spawn multiple simultaneous ntvdm's?

108 Views Asked by At

Running on is 32 bit Windows Server 2007 Standard Service Pack 2 using Intel XEON CPU.

I work in the enviable position to have server software that must run 16 bit software ... :)

And we have a server that serves a 16 bit program over a socket to local users.

Here is the setup:

The Java server program starts a "cmd.exe \C batchfile.bat" process. In that batchfile.bat it then sets up and runs an actual 16-bit executable (pgm.exe for all purposes).

Then it listens for requests and spawns another one as needed.

Now, this works perfectly using the JVM 1.6 version runtime. However, in Java 7 and Java 8 it hangs right at the moment the batchfile.bat actually tries to start the 16-bit exe program.

Using the TaskManager, we can see that the cmd.exe is spawned in parallel. But until the current cmd.exe leaves the 16-bit program (ntvdm.exe closes), the next cmd.exe will freeze (lock?) and stall right at running the 16-bit exe.

Clues? Something has changed between these Java versions and it is a complete mystery to us.

So, why cannot Java 7 and Java 8 start two simultaneous batchfiles using Runtime.Process and then also run them properly when the batchfiles call a 16bit exe?

0

There are 0 best solutions below