RFE 4519026: (process) Process should support Unicode on Win NT, request for review
Alan Bateman
Alan.Bateman at Sun.COM
Mon Mar 23 12:56:06 UTC 2009
Heiko Wagner wrote:
> Thanks for the description of the comment writing style. I have
> investigated, why I get a return code of 6. This return code indicates that
> java.exe launcher fails to start the Java VM. I will try to explain step by
> step. ;-)
>
> This is the test code that fails:
>
> try {
> ProcessBuilder pb = new ProcessBuilder();
> pb.environment().clear();
> equal(getenvInChild(pb), "");
> } catch (Throwable t) { unexpected(t); }
>
> 1) this code does start the java.exe
> 2) java.exe tries to start the Java VM in function LoadJavaVM
> 3) LoadJavaVM tries to load the jvm.dll via LoadLibrary
> 4) LoadLibrary loads the jvm.dll and it's dependent libraries, in particular
> the C runtime lib
> 5) loading of the MSCV90.DLL fails with error message:
> "Unable to resolve storage root for assembly directory
> x86_Microsoft.VC90.CRT"
> This is caused by the "pb.environment().clear()", because it clears the
> env variable %SystemRoot%.
> 6) LoadLibrary fails due to missing dependencies, thus causing java.exe fail
> with exit code 6
>
> You might not experience this problem, when you compile the JDK with an oder
> MS VC++ version. According to the build readme in the JDK VS2008 is required
> ("...The 32-bit OpenJDK Windows build requires Microsoft Visual Studio C++
> 2008 (VS2008) Standard Edition compiler..."), but it seems the binary build
> downloads on the openJDK site use an older version of Visual Studio.
>
This does seems to be an environment issue. I ran this test with b51 on
Windows XP and it fails for each case where the child is created without
SystemRoot in the environment. This build was done with VC7/.NET 2003.
I hacked the test to ensure that this variable is inherited from the
parent and the modified tests works as expected. I also grabbed your
changes and patched my src/windows/native/java/lang/ProcessImpl.c and
all Runtime and ProcessBuilder tests are passing.
-Alan.
More information about the core-libs-dev
mailing list