Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 7955 invoked from network); 23 May 2007 14:49:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 May 2007 14:49:39 -0000 Received: (qmail 32734 invoked by uid 500); 23 May 2007 14:49:44 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 32715 invoked by uid 500); 23 May 2007 14:49:44 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 32704 invoked by uid 99); 23 May 2007 14:49:44 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 07:49:44 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 07:49:38 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id F0A93714064 for ; Wed, 23 May 2007 07:49:17 -0700 (PDT) Message-ID: <18438899.1179931757983.JavaMail.jira@brutus> Date: Wed, 23 May 2007 07:49:17 -0700 (PDT) From: "Gregory Shimansky (JIRA)" To: commits@harmony.apache.org Subject: [jira] Assigned: (HARMONY-3927) [drlvm][verifier] DRLVM crashes or throw no error instead of throwing VerifyError if an instruction call has type inconsistency In-Reply-To: <32187188.1179811456409.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-3927?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Gregory Shimansky reassigned HARMONY-3927: ------------------------------------------ Assignee: Gregory Shimansky > [drlvm][verifier] DRLVM crashes or throw no error instead of throwing VerifyError if an instruction call has type inconsistency > ------------------------------------------------------------------------------------------------------------------------------- > > Key: HARMONY-3927 > URL: https://issues.apache.org/jira/browse/HARMONY-3927 > Project: Harmony > Issue Type: Bug > Components: DRLVM > Reporter: Elena Sayapina > Assigned To: Gregory Shimansky > Attachments: test.zip, verifier_3927.patch > > > DRLVM crashes or throw no error instead of throwing VerifyError if an instruction call has type inconsistency. > This behavior is reproduces since Harmony-r539909 build, it looks like a regression in verifier. > Please, use the next test as reproducer: > > (It 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 ()V > aload_0 > invokespecial java/lang/Object/()V > return > .end method > > ; test method > .method public test()V > .limit stack 2 > .limit locals 2 > > ; push this > aload_0 > > ; invoke method of Throwable on the instance of Invoke class > invokevirtual java/lang/Throwable/getMessage()Ljava/lang/String; > > return > .end method > ---------------------------------------------------------------------------- > > Steps to reproduce (test source is attached as test.zip): > 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<< > (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) > > > 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 > > This bug causes failures of 26 tests from DRLVM Validation test suite (http://issues.apache.org/jira/browse/HARMONY-3206): > 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.classFile.attributes.code.code11.code11 > 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 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.