JDK-8030662 : "assert(counter_changed) failed: failed dependencies, but counter didn't change" still fails
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:hs25
Priority:P2
Status:Resolved
Resolution:Fixed
OS:generic
CPU:generic
Submitted:2013-12-17
Updated:2016-11-23
Resolved:2014-01-14
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.
The assert "assert(counter_changed) failed: failed dependencies, but counter didn't change" still fails after committing https://bugs.openjdk.java.net/browse/JDK-8029383
Comments
I=H (crash)
L=L (corner case; you need to use JVMTI, redefine a class and hit a race condition)
W=H (no workaround)
ILW=HLH=P2
11-03-2014
RULE nsk/jvmti/scenarios/bcinstr/BI04/bi04t002 Crash Internal Error ...ciEnv.cpp...assert(counter_changed) failed: failed dependencies, but counter didn't change
RULE nsk/jvmti/scenarios/hotswap/HS104/hs104t002 Crash Internal Error ...ciEnv.cpp...assert(counter_changed) failed: failed dependencies, but counter didn'unsigned short change
RULE nsk/jvmti/scenarios/hotswap/HS104/hs104t002 Crash assert(counter_changed) failed: failed dependencies, but counter didn't change
16-01-2014
regarding lack of test case: requires use of jvmti concurrently with JIT compilation so a reliable test case is hard to write.
14-01-2014
Release team: Not a showstopper. Defering to 8u20
09-01-2014
The end user has to use JVMTI, redefine classes with JVMTI and there must be a race between a compilation that depends on the class being redefined and the class redefinition. It's a corner case.
Diff: http://cr.openjdk.java.net/~roland/8030662/webrev.00/
07-01-2014
Release team: We'd like to understand what the likelihood is of this happening for an end-user (not from the perspective of running one of our tests). Is this a corner case or a regular case?
Also, do you have the diff/webrev for this fix that you can attach?
07-01-2014
ILW=HMH=>P1
Impact: Crash hence high
Likelihood: Easily reproduceable
Workaround: No workaround
Justification: The original bug (JDK-8029383) was not fixed fully and still fails in some cases. The original issue is still there
Evaluation: When JDK-8029383 was fixed, I removed a call to SystemDictionary::notice_modification() from VM_RedefineClasses in jvmti because that code calls SystemDictionary::parse_stream() and I had added a new call to SystemDictionary::notice_modification() there. What I overlooked is that the jvmti code passes a null handle for host_klass when it calls parse_stream and so the new call to notice_modification() is not performed in this context.
Risk Assessment: Risk is low. The code was not redundant. So the fix only put what was redundant back where it was.
Testing:
Failing test from nightly
06-01-2014
When I fixed 8029383, I removed a call to SystemDictionary::notice_modification() from VM_RedefineClasses in jvmti because that code calls SystemDictionary::parse_stream() and I had added a new call to SystemDictionary::notice_modification() there. What I overlooked is that the jvmti code passes a null handle for host_klass when it calls parse_stream and so the new call to notice_modification() is not performed in this context.