You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vera Petrashkova (JIRA)" <ji...@apache.org> on 2006/12/20 07:46:23 UTC

[jira] Created: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

[drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
-----------------------------------------------------------------------------------------

                 Key: HARMONY-2808
                 URL: http://issues.apache.org/jira/browse/HARMONY-2808
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: Windows and Linux
            Reporter: Vera Petrashkova


VM crashes when it tries to load class which contains overridden final method.
The following test which uses attached synthetic classes demonstrates this issue:
 ----------finTest.java----------
public class finTest {
    public static void main(String args[]) {
        try {
            new finTest1().test();
            System.out.println("Test failed. VerifyError was not thrown");
        } catch (VerifyError e) {
            System.out.println("Test passed: "+e);
        } catch (Throwable e) {
            System.out.println("Test failed: unexpected "+e);
 	    e.printStackTrace();
	}
    }
}
----------------finTest1.jj--------------
.class public finTest1
.super java/lang/Object
;
; standard initializer
.method public <init>()V
   aload_0
   invokespecial java/lang/Object/<init>()V
   return
.end method 
; final method
.method public final testMethod()I
  .limit locals 2
  .limit stack 2
  sipush 1
  ireturn
.end method
;
.method public test()V
  .limit stack 2
  .limit locals 2
  new finTest2
  dup
  invokespecial finTest2/<init>()V
  aload 0
  invokevirtual finTest2/testMethod()V
  return
.end method
--------------finTest2.jj------------------
.class public finTest2
.super finTest1
;
; standard initializer
.method public <init>()V
   aload_0
   invokespecial finTest1/<init>()V
   return
.end method 
;
.method public final testMethod()I
  .limit locals 2
  .limit stack 2
  sipush 2
  ireturn
.end method
-----------------


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Vera Petrashkova (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12468875 ] 

Vera Petrashkova commented on HARMONY-2808:
-------------------------------------------

VM throws VerifyError corectly.

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Assigned To: Gregory Shimansky
>         Attachments: classloader_override_final_method_fix.patch, finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Pavel Rebriy (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pavel Rebriy updated HARMONY-2808:
----------------------------------

    Attachment: classloader_override_final_method_fix.patch

Fix the problem in classloader.

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Attachments: classloader_override_final_method_fix.patch, finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Gregory Shimansky (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gregory Shimansky resolved HARMONY-2808.
----------------------------------------

    Resolution: Fixed

Patch and regression test applied at 501393. Please check that the patch was applied as expected.

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Assigned To: Gregory Shimansky
>         Attachments: classloader_override_final_method_fix.patch, finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Gregory Shimansky (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gregory Shimansky closed HARMONY-2808.
--------------------------------------


VERIFIED

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Assigned To: Gregory Shimansky
>         Attachments: classloader_override_final_method_fix.patch, finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Vera Petrashkova (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/HARMONY-2808?page=all ]

Vera Petrashkova updated HARMONY-2808:
--------------------------------------

    Attachment: finTest.zip

finTest.zip contains test source code and class files

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: http://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Attachments: finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Updated: (HARMONY-2808) [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method

Posted by "Gregory Shimansky (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-2808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gregory Shimansky updated HARMONY-2808:
---------------------------------------

    Patch Info: [Patch Available]
      Assignee: Gregory Shimansky

> [drlvm] VM crashes instead of throwing VerifyError when used class overrides final method
> -----------------------------------------------------------------------------------------
>
>                 Key: HARMONY-2808
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2808
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows and Linux
>            Reporter: Vera Petrashkova
>         Assigned To: Gregory Shimansky
>         Attachments: classloader_override_final_method_fix.patch, finTest.zip
>
>
> VM crashes when it tries to load class which contains overridden final method.
> The following test which uses attached synthetic classes demonstrates this issue:
>  ----------finTest.java----------
> public class finTest {
>     public static void main(String args[]) {
>         try {
>             new finTest1().test();
>             System.out.println("Test failed. VerifyError was not thrown");
>         } catch (VerifyError e) {
>             System.out.println("Test passed: "+e);
>         } catch (Throwable e) {
>             System.out.println("Test failed: unexpected "+e);
>  	    e.printStackTrace();
> 	}
>     }
> }
> ----------------finTest1.jj--------------
> .class public finTest1
> .super java/lang/Object
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial java/lang/Object/<init>()V
>    return
> .end method 
> ; final method
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 1
>   ireturn
> .end method
> ;
> .method public test()V
>   .limit stack 2
>   .limit locals 2
>   new finTest2
>   dup
>   invokespecial finTest2/<init>()V
>   aload 0
>   invokevirtual finTest2/testMethod()V
>   return
> .end method
> --------------finTest2.jj------------------
> .class public finTest2
> .super finTest1
> ;
> ; standard initializer
> .method public <init>()V
>    aload_0
>    invokespecial finTest1/<init>()V
>    return
> .end method 
> ;
> .method public final testMethod()I
>   .limit locals 2
>   .limit stack 2
>   sipush 2
>   ireturn
> .end method
> -----------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.