Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Strange compiler crash (AspectJ 1.8/Maven plugin 1.7)

I recently did 1.8.2 so I wasn't planning 1.8.3 imminently. I can upload a snapshot to a separate maven repo. If you configured your pom.xml to pick that up you could run with the snapshot. Or you could tweak your aspects to be code style (do they really need to be annotation style?). I'm not even sure you'd need to change your pointcuts, leave them annotation style, just change from @Aspect to using 'aspect'.

cheers,
Andy

On 17 September 2014 23:34, ajUnit <ajunit.contact@xxxxxxxxxxxxxx> wrote:
Hello Andy,

when Do you think will be a new release? Will it be necessary to update the maven plugin as well?

Marko

Am 18.09.14 02:48, schrieb Andy Clement:
Three factors to the problem:
- annotation style being used
- abstract aspect extending a class (not an aspect)
- sub-aspect being compiled before super class

If you didn't do any one of these, it would work. Do all three and it fails.

You can see the tiny test files in the bug report that show the issue (distilled from your project - thanks for that!).

@Alexander

Yes, indeed, the arcane build system hasn't been resurrected on a continuous integration system since cruise control broke a couple of years ago. Dev builds are manually uploaded by me when I have time. If someone really needs a build, I will upload one. I wish I had a nice clean maven build.

cheers,
Andy


On 17 September 2014 13:51, Loddar <ajunit.contact@xxxxxxxxxxxxxx> wrote:
Hello Andy,

do I understand it correctly: The problem results from extending abstract aspects from the abstract base class AjUnitAspectBase?


Marko



Am 17.09.2014 um 19:56 schrieb Andy Clement <andrew.clement@xxxxxxxxx>:

NPEs are always a sign of a compiler bug. I've raised this and fixed it as https://bugs.eclipse.org/bugs/show_bug.cgi?id=444398

I guess the situation of annotation style abstract aspects extending a regular java class just doesn't come up very often. But you are also at the mercy of ordering too (due to compilation pipelining). If the class had gotten through the pipeline ahead of the abstract aspect, it would have worked (and if you'd written it in code style aspects, it would have worked).

Andy

On 17 September 2014 06:42, Loddar <ajunit.contact@xxxxxxxxxxxxxx> wrote:
Hi Alexander,

Yes, there are some concrete Aspects. You have to look under test/aspect/.. . But I think, these won't help.

 The actually purpose of ajUnit is to provide unit tests for pointcuts. Therefore it make no sence to provide concrete apsects.

These happens also if you do it with the around based aspect. It seems that only the before aspect has no problem at all.

thx for your support, anyway.

Marko



> Am 17.09.2014 um 15:08 schrieb "Alexander Kriegisch" <alexander@xxxxxxxxxxxxxx>:
>
> Okay, I tried via remote access from my tablet and cloned the repo. I guess you have uncovered an ajc bug, but only one of the AJ devs can say for sure. What I can say is that the problem is unrelated to the Maven plugin version, AspectJ version (also tried with 1.7.4, so it must be an older problem) or even the Java version (downgraded quick & dirty to Java 1.7 incl. a few source code changes). The ajc core dump always occurs.
>
>
>
> Alexander Kriegisch schrieb am 17.09.2014 14:24:
>
>> I have not cloned the repo yet (I have no access to a PC now), but have a question: You seem to be extending an abstract aspect with yet another abstract aspect. Do you also have a concrete sub-aspect anywhere? Can you post full aspects instead of just class declarations? Something like a self-contained, compileable, reproduceable sample?
>>
>> Please also note that AspectJ Maven Plugin version 1.7 has only just been released a couple of days ago, so there might also be a problem in the plugin itself.
>>
>>
>> Maybe later today I can provide a more qualified answer, I just wanted to send a few quick hints/questions to get us started.
>>
>>
>> --
>>
>> Alexander Kriegisch
>>
>> http://scrum-master.de <http://scrum-master.de>
>>
>>
>> Am 17.09.2014 um 14:02 schrieb ajUnit <ajunit.contact@xxxxxxxxxxxxxx <mailto:ajunit.contact@xxxxxxxxxxxxxx> >:
>>
>>
>>> Hello,
>>>
>>> I've got a strange compiler crash (using aspectj maven plugin). After correcting an mistake (no compiler has been prodcued an error):
>>>
>>>> @Aspect
>>>> public abstract aspect AjUnitAfterAspect extends AjUnitAnnotationAspect {
>>>>     // ...
>>>> }
>>> ... to this
>>>> @Aspect
>>>> public abstract class AjUnitAfterAspect extends AjUnitAnnotationAspect {
>>>>     // ...
>>>> }
>>>
>>> Steps to reproduce:
>>>
>>> 1. Clone my project from github (https://github.com/loddar/ajunit <https://github.com/loddar/ajunit> ) .
>>>
>>> 2. Execute mvn clean install ==> Ok.
>>>
>>> 3. Switch to branch origin/AJC-CRASH.
>>>
>>> 4. Execute mvn clean install ==> CRASH.
>>>
>>>
>>> I got this crash report (full report see appendix):
>>>
>>> ---- AspectJ Properties ---
>>> AspectJ Compiler 1.8.2 built on Thursday Aug 14, 2014 at 21:45:02 GMT
>>> ---- Dump Properties ---
>>> Dump file: ajcore.20140917.132144.654.txt
>>> Dump reason: java.lang.NullPointerException
>>> Dump on exception: true
>>> Dump at exit condition: abort
>>> ---- Exception Information ---
>>> java.lang.NullPointerException
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClauseForTypeDeclaration(EclipseSourceType.java:1034)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.lookupPerClauseKind(EclipseSourceType.java:1136)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClauseForTypeDeclaration(EclipseSourceType.java:1043)
>>>    at org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceType.getPerClause(EclipseSourceType.java:1023)
>>>    at org.aspectj.weaver.ReferenceType.getPerClause(ReferenceType.java:911)
>>>    at org.aspectj.weaver.bcel.AtAjAttributes.handleAspectAnnotation(AtAjAttributes.java:544)
>>>    at org.aspectj.weaver.bcel.AtAjAttributes.readAj5ClassAttributes(AtAjAttributes.java:241)
>>>    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:395)
>>>    at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:162)
>>>    at org.aspectj.weaver.bcel.BcelWorld.buildBcelDelegate(BcelWorld.java:410)
>>>    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:494)
>>>    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:456)
>>>    at org.aspectj.weaver.bcel.BcelWeaver.addClassFile(BcelWeaver.java:453)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:506)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:447)
>>>    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:432)
>>>    at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:103)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:822)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:480)
>>>    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:420)
>>>    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1036)
>>>    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:272)
>>>    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:185)
>>>    at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
>>>    at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
>>>    at org.aspectj.tools.ajc.Main.run(Main.java:371)
>>>    at org.aspectj.tools.ajc.Main.runMain(Main.java:248)
>>>    at org.codehaus.mojo.aspectj.AbstractAjcCompiler.execute(AbstractAjcCompiler.java:524)
>>>
>>>
>>> Thx in advance
>>>
>>>
>>> Marko
>>> --
>>> Visit ajUnit @ https://github.com/loddar/ajunit <https://github.com/loddar/ajunit>
>>>
>>>
>>>
>>> <ajcore.20140917.132854.231.txt>
>>>
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@xxxxxxxxxxx <mailto:aspectj-users@xxxxxxxxxxx>
>>> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users <https://dev.eclipse.org/mailman/listinfo/aspectj-users>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


-- 
Visit ajUnit @ https://github.com/loddar/ajunit

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top