JDK-4940739 : placeholder isn't removed by the site that adds it during classloading
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: sparc
  • Submitted: 2003-10-21
  • Updated: 2012-10-08
  • Resolved: 2005-09-08
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 6
6 b51Fixed
Related Reports
Relates :  
Description
When fixing 4927116, it's noticed that a placeholder can be removed from
a site different from the one that adds the placeholder. This might
create the following problems:
1) a ClassCircularityError might be missed. Although it also seems difficult
   since that requires all the classes involved in the circle to have their
   placeholders removed unexpectedly.
2) some current invariants may not be right, e.g. a class either has a
   placeholder or is in the system dictionary.

This bug is to track the effort to find whether there is a better way
to remove placeholders and make sure all the invariants are still correct.

Comments
EVALUATION It appears very unlikely that we could throw a circularity error because of this race condition (as noted in the description, the placeholders for each class in the chain would have to be removed). However, it seems likely we could get a heap verification error, as we'll violate the invariant that all klasses in the heap are either in the system dictionary or placeholder tables. This bug needs to be examined at the same time 4699981 is looked at, and when we look at class loading to see if it can be made more parallel. ###@###.### 2003-10-27
2003-10-27