Final self-reply, I promise... :)

This bug also occurs with AspectJ 1.7.1. I've updated the test case
accordingly and also filed bug
#394535<https://bugs.eclipse.org/bugs/show_bug.cgi?id=394535>
.

Thanks,
-Archie

On Sat, Nov 17, 2012 at 11:19 PM, Archie Cobbs <arc...@dellroad.org> wrote:

> 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 <arc...@dellroad.org>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
>
>


-- 
Archie L. Cobbs
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to