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?