United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6681646 Relocking of a scalar replaced object during deoptimization is broken.
JDK-6681646 : Relocking of a scalar replaced object during deoptimization is broken.

Details
Type:
Bug
Submit Date:
2008-03-28
Status:
Closed
Updated Date:
2012-02-01
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
solaris_10
Sub-Component:
compiler
CPU:
x86
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs12
Fixed Versions:
hs12 (b02)

Related Reports
Backport:
Backport:

Sub Tasks

Description
PIT testing of 6u5p got failures in nsk tests when runnning with EA and BiasedLocking.
Tests passed with EA or BiasedLocking switched off.

The test failed when trying exit the monitor after deoptimization
of the compiled method with eliminated lock of scalar replaced 
object.

When scalarized object is reallocated the mark word is set
to klass->prototype_header() by default. Which can have biased pattern.

But the lock should not be biased in order to safely move 
the displaced mark word from the compiled frame 
to the vframeArray and back to the interpreted frame.

Affected tests:
#  Internal Error (synchronizer.cpp:1803), pid=XXX, tid=XXX
#  Error: guarantee(mid->header()->is_neutral(),"invariant")

nsk/stress/jck12a/jck12a011
nsk/stress/jck12a/jck12a015
nsk/stress/jck12a/jck12a016
nsk/stress/jck12a/jck12a017
nsk/stress/jck60/jck60011
nsk/stress/jck60/jck60013
nsk/stress/jck60/jck60016
nsk/stress/jck60/jck60017
nsk/stress/jck60/jck60018
nsk/stress/jck60/jck60019
nsk/stress/jck60/jck60021
I see the following tests fail with the same assertion:
	nsk/monitoring/stress/thread/cmon002
	nsk/monitoring/stress/thread/cmon003

                                    

Comments
EVALUATION

The test failed when trying exit the monitor after deoptimization
of the compiled method with eliminated lock.

New allocated objects may have the mark set to anonymously biased.
Also the deoptimized method may called methods with synchronization
where the thread-local object is bias locked to the current thread.
                                     
2008-04-02



Hardware and Software, Engineered to Work Together