[jboss-jira] [JBoss JIRA] (JBAOP-815) AOP generates invalid join point class

Kirill Paliy (JIRA) issues at jboss.org
Sat Jan 9 05:03:00 EST 2016


Kirill Paliy created JBAOP-815:
----------------------------------

             Summary: AOP generates invalid join point class
                 Key: JBAOP-815
                 URL: https://issues.jboss.org/browse/JBAOP-815
             Project: JBoss AOP
          Issue Type: Bug
    Affects Versions: 2.1.1.GA
         Environment: Jboss 5.1.0
            Reporter: Kirill Paliy
            Priority: Critical


Aspect method like this (non-void) causes error

	@Nullable
	@Bind(pointcut = "execution(* *->@com.myproject.utils.annotations.Activity(..))")
	public Object exec(final MethodInvocation invocation) throws Throwable {


2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) java.lang.ClassFormatError: StackMapTable format error: bad type array size in method com.myproject.patchers.ejb.JoinPoint_patch1937572184742986621_2.invokeNext()Ljava/lang/Object;
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at java.lang.Class.getDeclaredConstructors0(Native Method)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at java.lang.Class.getDeclaredConstructors(Class.java:2020)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator$GeneratedClassInfo.<init>(JoinPointGenerator.java:1553)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator.generateJoinpointClass(JoinPointGenerator.java:381)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator.doGenerateJoinPointClass(JoinPointGenerator.java:284)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator.access$300(JoinPointGenerator.java:76)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator$GenerateJoinPointClassAction$2.generateJoinPointClass(JoinPointGenerator.java:1729)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.instrument.JoinPointGenerator.generateJoinPointClass(JoinPointGenerator.java:249)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30)     at org.jboss.aop.GeneratedClassAdvisor.generateJoinPointClass(GeneratedClassAdvisor.java:1044)


It happens because method body generated for invokeNext contains unreachable code (see break after return): 

{   
  try{      
   switch(++super.currentInterceptor){      
      case 1:   return ($w) around1.exec(this); break;      
      default:         return ($w)this.dispatch();      
   }   
  } finally {
      --super.currentInterceptor;   
  }   
  return null;
}

Fix is pretty simple, but as I understand project is frozen, so I'll just post it here:

JoinPointGenerator.java
1940,1941c1940,1942
<
<          call.append("      break;");
---
>          if (generator.isVoid()) {
>            call.append("      break;");
>          }



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


More information about the jboss-jira mailing list