JDK-8075410 : Registry path for jvm.dll is set to client instead of server
  • Type: Bug
  • Component: install
  • Sub-Component: install
  • Affected Version: 7u76
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_8
  • CPU: x86
  • Submitted: 2015-03-12
  • Updated: 2015-07-29
  • Resolved: 2015-06-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7
7u91 b02Fixed
Related Reports
Relates :  
Description
FULL PRODUCT VERSION :
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) Client VM (build 25.40-b25, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Windows 8.1 Pro

EXTRA RELEVANT SYSTEM CONFIGURATION :
I have many installed Java 1.6 32bit, 1.6 64bit, 1.7 32bit, 1.7 64bit, 1.8 32bit and 1.8 64bit on my machine (for testing purposes), though this exactly the same thing didnt happen only to me but also to a person who had also installed 32bit Java aside beforehand

A DESCRIPTION OF THE PROBLEM :
https://bugs.openjdk.java.net/browse/JDK-8037565 the registry entry RuntimeLib for 64bit Java is set to C:\Program Files\Java\jre7\bin\client\jvm.dll instead of C:\Program Files\Java\jre7\bin\server\jvm.dll

C:\Program Files\Java\jre7\bin\client\jvm.dll doesn't exist and it causes problems to other software running on Java

REGRESSION.  Last worked in version 7u71

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Install Java 1.7 update 75 or 76 (possibly on a machine with preinstalled Java 32bit whichever version)

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Existing path to jvm.dll should be set in registry runtimeLib
ACTUAL -
Non-existing path of jvm.dll is set in registry runtimeLib

REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
Set the registry entry right after the installation


Comments
The problem was fixed in jdk8u and jdk9 by JDK-7058601
29-07-2015

Problem description: Currently we use the following approach to set registry entries for JRE 7 (see RegInstall.cpp): It checks if it's in the 1.3 family first. If so, it sets it to a "hotspot" dir. If not 1.3 family, it sets it to "client". Fix: It is necessary to check if the installer is 32 or 64-bit, and set to client or server respectively.
17-06-2015

Will discuss with Miroslaw to see if this is a dup of the bug mentioned.
23-03-2015

There is a duplicate bug JDK-8037413 with mention for fix with 7u65. However, the issue is still repropducible with JRE 7u80. The path to jvm.dll in JRE 7u80 does have correct directory structure: C:\Program Files\Java\jre7\bin\server\jvm.dll (JRE 7) C:\Program Files\Java\jdk1.7.0_76\jre\bin\server (JDK 7u76) C:\Program Files\Java\jdk1.7.0_80\jre\bin\server However registry entry for JRE 7 (7, 7u76, 7u80) still refer to client directory which is actually non-existant. See below: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ RuntimeLib has reference to data value: C:\Program Files\Java\jre7\bin\client\jvm.dll, where as the client directory does not exist. Directory structure in Windows Explorer (for different JRE versions): C:\Program Files\Java\jre7\bin\server\jvm.dll C:\Program Files\Java\jre1.9.0\bin\server\jvm.dll C:\Program Files\Java\jre1.8.0_40\bin\server\jvm.dll C:\Program Files\Java\jre1.8.0_31\bin\server\jvm.dll C:\Program Files\Java\jre1.8.0_25\bin\server\jvm.dll C:\Program Files\Java\jre1.8.0_60\bin\server\jvm.dll Note: For JDK/JRE 8 and above version including JDK 9/JRE 9, the values are correct.
18-03-2015