Thanks for doing your own investigative work :) I'll take a look at the issue you've raised.
cheers Andy On 18 November 2012 07:59, Archie Cobbs <arc...@dellroad.org> wrote: > 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. > > 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 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 > _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users