Replying to my own post...

I just tried this on a Java 1.7 machine and instead of OutOfMemoryError, I
get this:

Exception in thread "main" java.lang.reflect.GenericSignatureFormatError
    at
sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:126)
    at
sun.reflect.generics.parser.SignatureParser.progress(SignatureParser.java:135)
    at
sun.reflect.generics.parser.SignatureParser.parseFormalTypeParameters(SignatureParser.java:240)
    at
sun.reflect.generics.parser.SignatureParser.parseZeroOrMoreFormalTypeParameters(SignatureParser.java:221)
    at
sun.reflect.generics.parser.SignatureParser.parseClassSignature(SignatureParser.java:214)
    at
sun.reflect.generics.parser.SignatureParser.parseClassSig(SignatureParser.java:158)
    at
sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:52)
    at
sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:41)
    at
sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:74)
    at
sun.reflect.generics.repository.GenericDeclRepository.<init>(GenericDeclRepository.java:48)
    at
sun.reflect.generics.repository.ClassRepository.<init>(ClassRepository.java:48)
    at
sun.reflect.generics.repository.ClassRepository.make(ClassRepository.java:65)
    at java.lang.Class.getGenericInfo(Class.java:2271)
    at java.lang.Class.getTypeParameters(Class.java:640)
    at
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:57)
    at
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:53)
    at
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:95)
    at
sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105)
    at
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140)
    at
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
    at
sun.reflect.generics.repository.ClassRepository.getSuperclass(ClassRepository.java:84)
    at java.lang.Class.getGenericSuperclass(Class.java:696)
    at Bug.main(Bug.java:18)

This is using:

java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (suse-3.16.1-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

So it appears that Java seems to think this is an AspectJ bug.

Thanks,
-Archie

On Sat, Nov 17, 2012 at 11:13 PM, Archie Cobbs <[email protected]> wrote:

> I have encountered a weird OutOfMemoryError problem.
>
> It appears to be some kind of infinite loop in Java's class file parsing.
> However, it only occurs after running the AspectJ compiler over the class.
>
> So I'm not sure who is at fault... AspectJ or Java itself?
>
> I'm using AspectJ 1.6.10 and java 1.6.0.37:
>
> java version "1.6.0_37"
> Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
> Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
>
> I've created a test case available 
> here<http://people.freebsd.org/~archie/bug.tgz>as an ant project. It is 
> pretty simple, triggered by this class:
>
> public class Bug {
>
>     @org.springframework.beans.factory.annotation.Configurable
>     public static class ClassA<T extends Interface1 & Interface2> {
>     }
>
>     public static class ClassB extends ClassA<ClassB> implements
> Interface1, Interface2 {
>     }
>
>     public interface Interface1 {
>     }
>
>     public interface Interface2 {
>     }
>
>     public static void main(String[] args) throws Exception {
>         System.out.println(ClassB.class.getGenericSuperclass());
>     }
> }
>
> Compile that program, run the AspectJ compiler over it to weave the
> @Configurable annotation, and then run it.
>
> I get this result after a several second pause:
>
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
>     at java.util.Arrays.copyOf(Arrays.java:2760)
>     at java.util.Arrays.copyOf(Arrays.java:2734)
>     at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
>     at java.util.ArrayList.add(ArrayList.java:351)
>     at
> sun.reflect.generics.parser.SignatureParser.parseFormalTypeParameters(SignatureParser.java:190)
>     at
> sun.reflect.generics.parser.SignatureParser.parseZeroOrMoreFormalTypeParameters(SignatureParser.java:177)
>     at
> sun.reflect.generics.parser.SignatureParser.parseClassSignature(SignatureParser.java:171)
>     at
> sun.reflect.generics.parser.SignatureParser.parseClassSig(SignatureParser.java:126)
>     at
> sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:34)
>     at
> sun.reflect.generics.repository.ClassRepository.parse(ClassRepository.java:23)
>     at
> sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:56)
>     at
> sun.reflect.generics.repository.GenericDeclRepository.<init>(GenericDeclRepository.java:30)
>     at
> sun.reflect.generics.repository.ClassRepository.<init>(ClassRepository.java:30)
>     at
> sun.reflect.generics.repository.ClassRepository.make(ClassRepository.java:47)
>     at java.lang.Class.getGenericInfo(Class.java:2254)
>     at java.lang.Class.getTypeParameters(Class.java:621)
>     at
> sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:39)
>     at
> sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:35)
>     at
> sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:77)
>     at
> sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:86)
>     at
> sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:122)
>     at
> sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
>     at
> sun.reflect.generics.repository.ClassRepository.getSuperclass(ClassRepository.java:66)
>     at java.lang.Class.getGenericSuperclass(Class.java:677)
>     at Bug.main(Bug.java:18)
>
> Any ideas?
>
> Thanks,
> -Archie
>
> --
> Archie L. Cobbs
>
>


-- 
Archie L. Cobbs
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to