[jboss-jira] [JBoss JIRA] (JASSIST-260) Stack frame corruption after writing to attribute on injected after method

Rafael Campos (JIRA) issues at jboss.org
Tue Jan 26 16:21:00 EST 2016


     [ https://issues.jboss.org/browse/JASSIST-260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rafael Campos updated JASSIST-260:
----------------------------------
    Steps to Reproduce: 
Stack frame corruption after writing to attribute contain on class that contains method with injected code via 
{code:java}
CtMethod.insertAfter(String src)
{code}
This writing happens inside of the injected code src it self.



Example:

{code:java}
public class Animal {
	public String ret;
	public AnimalRoles(){
          ret = "Before";
        }
	public String hello() {
		return ret;
	}
	public String die(String age) {
		return "";
	}
}
{code}

{code:java}
// Somehow get the method hello from Animal into a var name methodHello
method.insertAfter("this.ret = \"After\";");
{code}

{code:java}
// Call the method hello in a fresh Animal instance
Animal a = new Animal();
System.out.println(a.hello());
System.out.println(a.ret);
{code}





Result:
Before
After

Expected:
After
After





Debugging the program a in the method hello it is possible to observe the following message:

!Image1.png|thumbnail!


Also tested with previous versions of javaassist from 3.12.1.GA until 3.20.0GA and all yield the same result.

  was:
Stack frame corruption after writing to attribute contain on class that contains method with injected code via 
{code:java}
CtMethod.insertAfter(String src)
{code}
This writing happens inside of the injected code src it self.



Example:

{code:java}
public class Animal {
	public String ret;
	public AnimalRoles(){
          ret = "Before";
        }
	public String hello() {
		return ret;
	}
	public String die(String age) {
		return "";
	}
}
{code}

{code:java}
// Somehow get the method hello from Animal into a var name methodHello
method.insertAfter("this.ret = \"After\";");
{code}

{code:java}
// Call the method hello in a fresh Animal instance
Animal a = new Animal();
System.out.println(a.hello());
System.out.println(a.ret);
{code}





Result:
Before
After

Expected:
After
After





Debugging the program a in the method hello it is possible to observe the following message:

!Image1.jpg|thumbnail!


Also tested with previous versions of javaassist from 3.12.1.GA until 3.20.0GA and all yield the same result.



> Stack frame corruption after writing to attribute on injected after method
> --------------------------------------------------------------------------
>
>                 Key: JASSIST-260
>                 URL: https://issues.jboss.org/browse/JASSIST-260
>             Project: Javassist
>          Issue Type: Bug
>    Affects Versions: 3.20.0-GA
>         Environment: Using java 1.8, also tested with java 1.7 same behavior on eclipse Version: Mars.1 Release (4.5.1) on windows 7 x64 bits.
>            Reporter: Rafael Campos
>            Assignee: Shigeru Chiba
>            Priority: Minor
>         Attachments: Image1.png
>
>




--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list