Hello, everybody
26 tests from DRLVM Validation test suite (
http://issues.apache.org/jira/browse/HARMONY-3206)
failed on Harmony-r539909 during the last test cycle.
All these tests are negative and expect java.lang.VerifyError to be thrown,
but DRLVM crashes instead or throws no error.
It looks like regression in Verifier because these tests passed on
Harmony-r539255.
Please, use this small test as the failure example:
(tests that if the type of class instance that is the target of a method
invocation instruction
is not assignment compatible with the class type specified in the
instruction then VerifyError is thrown)
------------------------------------------
Test.java---------------------------------------------------------------
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
try {
Method method =
Invoke.class.getDeclaredMethod("test", new Class[] {});
method.invoke(new Invoke(), new Object[]
{});
System.out.println("TEST FAILED: no
error");
} catch(VerifyError e) {
System.out.println("TEST PASSED: " + e);
} catch(Throwable e) {
System.out.println("TEST FAILED:
unexpected " + e);
}
}
}
------------------------------------------
Invoke.j--------------------------------------------------------------------
.class public Invoke
.super java/lang/Object
.method public <init>()V
aload_0
invokespecial java/lang/Object/<init>()V
return
.end method
; test method
.method public test()V
.limit stack 2
.limit locals 2
aload_0 ; push this
; invoke method of java/lang/Throwable class on Invoke class
invokevirtual java/lang/Throwable/getMessage()Ljava/lang/String;
return
.end method
-----------------------------------------------------------------------------------------------------------------------------
Steps to reproduce (test source and classes are attached as test.zip,
password 12345):
1) Compile Invoke class: java –jar jasmine.jar Invoke.j
2) Compile Test class
3) Run Test class on Harmony
Output on Harmony-r540035 msvc release build:
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
Foundation or its licensors,
as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r540035, (May 21 2007), Windows/ia32/msvc 1310, release build
http://incubator.apache.org/harmony
Windows reported exception: 0xc0000005
Registers:
EAX: 0x00000000, EBX: 0x00000000, ECX: 0x0013cc24, EDX: 0x00000001
ESI: 0x0013cc74, EDI: 0x011af638, ESP: 0x0013cb34, EBP: 0x0013cb60
EIP: 0x00519640
Stack trace:
0: std::operator<<<std::char_traits<char> > (c:\program files\microsoft
visual studio .net 2003\vc
7\include\ostream:704)
1: vf_set_error
(c:\bt\build\checkouts\drlvm\vm\vmcore\src\verifier\ver_utils.cpp:1040)
2:
java/lang/ClassLoader.defineClass0(Ljava/lang/String;[BII)Ljava/lang/Class;
(ClassLoader.java:-
2)
3:
java/lang/ClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/
lang/Class; (ClassLoader.java:417)
4:
java/security/SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Lj
ava/lang/Class; (SecureClassLoader.java:70)
5:
java/net/URLClassLoader.findClassImpl([Ljava/net/URL;Ljava/lang/String;)Ljava/lang/Class;
(URLC
lassLoader.java:1214)
6: java/net/URLClassLoader$4.run()Ljava/lang/Class; (URLClassLoader.java
:625)
7: java/net/URLClassLoader$4.run()Ljava/lang/Object; (URLClassLoader.java
:1)
8:
java/security/AccessController.doPrivilegedImpl(Ljava/security/PrivilegedAction;Ljava/security/
AccessControlContext;)Ljava/lang/Object; (AccessController.java:171)
9:
java/security/AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/Acce
ssControlContext;)Ljava/lang/Object; (AccessController.java:64)
10: java/net/URLClassLoader.findClass(Ljava/lang/String;)Ljava/lang/Class;
(URLClassLoader.java:627
)
11: java/lang/ClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; (
ClassLoader.java:554)
12:
java/lang/ClassLoader$SystemClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
(ClassL
oader.java:942)
13: java/lang/ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; (
ClassLoader.java:311)
14: ?? (??:-1)
<end of stack trace>
Output on Harmony-r539255 msvc release build:
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
Foundation or its licensors,
as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r539255, (May 18 2007), Windows/ia32/msvc 1310, release build
http://incubator.apache.org/harmony
TEST PASSED: java.lang.VerifyError: (class: Invoke, method: test()V)
Incompatible argument for function
Failed tests are:
vm.jvms.classFile.attributes.code.code11.code11
vm.jvms.classFile.constraints.structural.constraint11.initialization06.initialization06
vm.jvms.classFile.constraints.structural.constraint11.initialization08.initialization08
vm.jvms.classFile.constraints.structural.constraint13.invocation01.invocation01
vm.jvms.classFile.constraints.structural.constraint14.return03.return03
vm.jvms.classFile.constraints.structural.constraint16.putfield01.putfield01
vm.jvms.classFile.constraints.structural.constraint16.putfield02.putfield02
vm.jvms.classFile.constraints.structural.constraint16.putfield04.putfield04
vm.jvms.classFile.constraints.structural.constraint16.putfield06.putfield06
vm.jvms.classFile.constraints.structural.constraint16.putfield07.putfield07
vm.jvms.classFile.constraints.structural.constraint19.athrow01.athrow01
vm.jvms.classFile.constraints.structural.constraint41.methods04.methods04
vm.jvms.classFile.constraints.structural.constraint41.methods06.methods06
vm.jvms.classFile.constraints.structural.constraint41.methods08.methods08
vm.jvms.classFile.constraints.structural.constraint41.methods09.methods09
vm.jvms.classFile.methods.accessFlags.accessFlags26.accessFlags26
vm.jvms.classFile.verifier.bytecode.bytecode10.bytecode10
vm.jvms.classFile.verifier.bytecode.bytecode13.bytecode13
vm.jvms.classFile.verifier.bytecode.bytecode14.bytecode14
vm.jvms.classFile.verifier.bytecode.bytecode18.bytecode18
vm.jvms.instructions.exceptions.athrow.athrow03.athrow0301.athrow0301
vm.jvms.instructions.invokeReturn.areturn.areturn04.areturn0405.areturn0405
vm.jvms.instructions.invokeReturn.invokespecial.invokespecial17.invokespecial1701.invokespecial1701
vm.jvms.instructions.reftypes.getfield.getfield21.getfield2101.getfield2101
vm.jvms.instructions.reftypes.putfield.putfield22.putfield2206.putfield2206
vm.jvms.instructions.reftypes.putstatic.putstatic25.putstatic2506.putstatic2506
Thank you, Lena
|