Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Regression from 1.5: can't find type error in AspectJ 1.6

Hi Kevin,

I have raised:

to look at this.

The exception is thrown because the method becomes too large during weaving and cannot fit into the max method code size when we come to pack it up and write it to disk.  Why is it bigger than previously?  I'm thinking right now that it is this:

which I only fixed a week ago.  That fix is in the latest dev builds of AspectJ (as we get ready for AspectJ 1.6.2) - can you please try it out? The dev builds are available at the top of the download page.

It is possible that weaving can cause a method to become too large - and we currently do not have a solution to that (we have open bugs relating to it), but if it previously didn't get too big, there is no reason why it should now be too big.  If you try it out with a dev build and it still fails, I'll probably ask you for the extra materials to recreate it.  If nothing else I'll certainly change the exception message from 'Argh!' ;)


2008/8/25 Kevin Hoffman <kevinjohnhoffman@xxxxxxxxx>

I'm using the aj5 script to perform dynamic weaving on Xalan for Java.
Things were working fine when we were using AspectJ 1.5. Recently I
upgraded to version 1.6.1 and recompiled my aspects using the newer
compiler. The runtime weaving / aspects still work most of the time,
but I have encountered an important case where AspectJ core-dumps with
ajcore files when trying to dynamically weave a certain class:

Aug 25, 2008 6:20:52 PM error
SEVERE: org/apache/xalan/xslt/Process
java.lang.IllegalStateException: Argh!
   at org.aspectj.apache.bcel.generic.InstructionBranch.updatePosition(
   at org.aspectj.apache.bcel.generic.BranchHandle.updatePosition(
   at org.aspectj.apache.bcel.generic.InstructionList.setPositions(
   at org.aspectj.apache.bcel.generic.InstructionList.setPositions(
   at org.aspectj.apache.bcel.generic.InstructionList.getByteCode(
   at org.aspectj.apache.bcel.generic.MethodGen.getMethod(

Process is a class that has a main method. (I'm able to weave other
classes not from Xalan that have main methods just fine.) I have tried
compiling Xalan with Java 1.4 or 1.5 but it doesn't affect the result.
I haven't tried compiling with 1.6.

I still have the JAR of my aspects that were compiled with AspectJ
1.5. Using the JAR of aspects compiled with AspectJ 1.5 with the
AspectJ 1.6 runtime weaver produces the same error. Using the AspectJ
1.5 runtime weaver with the aspects compiled with AspectJ 1.5 still
works fine. (and using the AspectJ 1.5 runtime with the aspects
compiled with AspectJ 1.6 isn't possible...)

Here are links to the ajcore files (two ajcore files generated per
attempt at weaving the class):

The Java class file that it is having trouble weaving is also available:

I can provide information to download the full package with JARs and
scripts to reproduce off-list. Let me know what else I can gather to
help get this issue fixed.

aspectj-users mailing list

Back to the top