harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Rebriy" <pavel.reb...@gmail.com>
Subject Re: [drlvm] VM crashes instead of throwing VerifyError
Date Wed, 23 May 2007 05:21:30 GMT
I submitted a fixing patch [1] to HARMONY-3927 [2]. I hope it helps.

[1]
https://issues.apache.org/jira/secure/attachment/12357946/verifier_3927.patch
[2] https://issues.apache.org/jira/browse/HARMONY-3927

On 21/05/07, Elena Sayapina <sayapina@gmail.com> wrote:
>
> 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
>
>


-- 
Best regards,
Pavel Rebriy

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message