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