JDK-7191322 : add test for 7064927 to java.lang.instrument
  • Type: Bug
  • Component: core-svc
  • Sub-Component: java.lang.instrument
  • Affected Version: 8
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2012-08-14
  • Updated: 2014-02-06
  • Resolved: 2012-09-05
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 8
8 b55Fixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Relates :  
Description
The fix for the following bug:

    7064927 4/4 retransformClasses() does not pass in LocalVariableTable
                of a method

was integrated in JDK8-B19/HSX-23-B09 in the hotspot repo:

http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c01e115b095e


The tests for java.lang.instrument live in the jdk repo.
This bug is being used to integrate the following test:

    java/lang/instrument/VerifyLocalVariableTableOnRetransformTest.sh
Here is what a passing run with JDK8-B51 looks like:

#section:shell
----------messages:(3/148)----------
command: shell MakeJAR.sh [retransformAgent]
reason: User specified action: run shell MakeJAR.sh retransformAgent
elapsed time (seconds): 4.739
----------System.out:(4/254)----------
TESTSRC=C:/work/shared/bug_hunt/jdk8/exp_7064927_test/test/java/lang/instrument
TESTJAVA=c:/work/shared/mirrors/jdks-win32/jdk/1.8.0/latest/binaries/windows-i586
added manifest
adding: InstrumentationHandoff.class(in = 1158) (out= 605)(deflated 47%)
----------System.err:(0/0)----------
result: Passed. Execution successful

#section:shell
----------messages:(3/183)----------
command: shell VerifyLocalVariableTableOnRetransformTest.sh []
reason: User specified action: run shell VerifyLocalVariableTableOnRetransformTest.sh
elapsed time (seconds): 1.576
----------System.out:(18/1238)*----------
InstrumentationHandoff JPLIS agent initialized
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b51)
Java HotSpot(TM) Client VM (build 24.0-b19, mixed mode)

Reading test class from C:\\work\\shared\\bug_hunt\\jdk8\\exp_7064927_test\\sdk-jli.windows-i586\\JTwork\\classes\\java\\lang\\instrument\\DummyClassWithLVT.class
Read 1448 bytes.
Debugging message: Added transformer VerifyLocalVariableTableOnRetransformTest$MyObserver with canRetransform=true
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'DummyClassWithLVT' of 1448 bytes.
Info: DummyClassWithLVT lengths match.
Info: verified 'DummyClassWithLVT.class' matches 'classfileBuffer'.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'DummyClassWithLVT' of 1448 bytes.
Info: DummyClassWithLVT lengths match.
Info: verified 'DummyClassWithLVT.class' matches 'classfileBuffer'.
Debugging message: tearDown beginning
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Shutdown' of 2956 bytes.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Shutdown$Lock' of 377 bytes.
PASS: did NOT find 'did not match .class file' in the test output
----------System.err:(0/0)----------
result: Passed. Execution successful


test result: Passed. Execution successful
Here is what a failing run with JDK7-B147 looks like:

#section:shell
----------messages:(3/183)----------
command: shell VerifyLocalVariableTableOnRetransformTest.sh []
reason: User specified action: run shell VerifyLocalVariableTableOnRetransformTest.sh
elapsed time (seconds): 3.869
----------System.out:(54/3613)*----------
InstrumentationHandoff JPLIS agent initialized
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode)

Reading test class from C:\\work\\shared\\bug_hunt\\jdk8\\exp_7064927_test\\sdk-jli.windows-i586\\JTwork\\classes\\java\\lang\\instrument\\DummyClassWithLVT.class
Read 1448 bytes.
Debugging message: Added transformer VerifyLocalVariableTableOnRetransformTest$MyObserver with canRetransform=true
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'DummyClassWithLVT' of 1448 bytes.
Info: DummyClassWithLVT lengths match.
Info: verified 'DummyClassWithLVT.class' matches 'classfileBuffer'.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'DummyClassWithLVT' of 1332 bytes.
Warning: DummyClassWithLVT lengths do not match.
Debugging message: tearDown beginning
Exception in thread "main" VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Throwable$WrappedPrintStream' of 699 bytes.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Throwable$PrintStreamOrWriter' of 492 bytes.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/util/IdentityHashMap' of 9031 bytes.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/util/IdentityHashMap$KeySet' of 1793 bytes.
ATestCaseScaffold$TestCaseScaffoldException: DummyClassWithLVT did not match .class file
        at ATestCaseScaffold.fail(ATestCaseScaffold.java:116)
        at ATestCaseScaffold.assertTrue(ATestCaseScaffold.java:129)
        at VerifyLocalVariableTableOnRetransformTest.verifyClassFileBuffer(VerifyLocalVariableTableOnRetransformTest.java:123)
        at VerifyLocalVariableTableOnRetransformTest.doRunTest(VerifyLocalVariableTableOnRetransformTest.java:72)
        at ATestCaseScaffold.runTest(ATestCaseScaffold.java:60)
        at VerifyLocalVariableTableOnRetransformTest.main(VerifyLocalVariableTableOnRetransformTest.java:66)
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Shutdown' of 2956 bytes.
VerifyLocalVariableTableOnRetransformTest$MyObserver.transform() sees 'java/lang/Shutdown$Lock' of 377 bytes.
ATestCaseScaffold$TestCaseScaffoldException: DummyClassWithLVT did not match .class file
FAIL: found 'did not match .class file' in the test output
INFO: 'javap -v' comparison between the .class files:
1,3c1,3
< Classfile /C:/work/shared/bug_hunt/jdk8/exp_7064927_test/sdk-jli.windows-i586/JTwork/classes/java/lang/instrument/DummyClassWithLVT.class
<   Last modified Aug 13, 2012; size 1448 bytes
<   MD5 checksum add938cbf65c704016583270092d8258
---
> Classfile /C:/work/shared/bug_hunt/jdk8/exp_7064927_test/sdk-jli.windows-i586/JTwork/java/lang/instrument/VerifyLocalVariableTableOnRetransformTest/DummyClassWithLVT.class
>   Last modified Aug 13, 2012; size 1332 bytes
>   MD5 checksum 65f4b7ecfaf38db537034ecd5723e85a
116,118d115
<       LocalVariableTable:
<         Start  Length  Slot  Name   Signature
<                0       5     0  this   LDummyClassWithLVT;
239,249d235
<       LocalVariableTable:
<         Start  Length  Slot  Name   Signature
<                0     236     0  args   [Ljava/lang/String;
<                2     234     1     b   Z
<                5     231     2    by   B
<                8     228     3     c   C
<               13     223     4     d   D
<               17     219     6     f   F
<               21     215     7     i   I
<               26     210     8     l   J
<               30     206    10     s   S
----------System.err:(0/0)----------
result: Failed. Execution failed: exit code 1


test result: Failed. Execution failed: exit code 1

Comments
EVALUATION Changeset: 509421263cdd Author: dcubed Date: 2012-08-17 12:51 -0700 URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/509421263cdd 7191322: add test for 7064927 to java.lang.instrument Summary: Add support for canRetransform attribute to the test manager. Add test for 7064927. Reviewed-by: dsamersoff, sspitsyn, ohair ! test/java/lang/instrument/ATransformerManagementTestCase.java + test/java/lang/instrument/DummyClassWithLVT.java + test/java/lang/instrument/VerifyLocalVariableTableOnRetransformTest.java + test/java/lang/instrument/VerifyLocalVariableTableOnRetransformTest.sh + test/java/lang/instrument/retransformAgent.mf
17-08-2012

SUGGESTED FIX See attached 7191322-webrev-cr0.tgz for the fix proposed for code review, round 0.
15-08-2012

EVALUATION See description.
14-08-2012