Bug 580643 - ajc throws nullpointerexception when used in a multithreaded env - one jac instance per thread
Summary: ajc throws nullpointerexception when used in a multithreaded env - one jac in...
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.8.11   Edit
Hardware: PC Mac OS X
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-08-30 17:46 EDT by tundra CLA
Modified: 2022-08-30 17:46 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description tundra CLA 2022-08-30 17:46:32 EDT
CompilerAdapter has a static field which sometimes is dereferenced as null and throws NPE. 

This can be reproduced by removing synchronization around ajcMain.runMain().


https://github.com/mojohaus/aspectj-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/aspectj/AbstractAjcCompiler.java#L567

Note, that ajcMain is created anew for each invocation of the execute.

```
java.lang.NullPointerException
    at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$before$org_aspectj_ajdt_internal_compiler_CompilerAdapter$1$4c37d260 (CompilerAdapter.aj:70)
    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile (Compiler.java:417)
    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:114)
    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 com.okta.maven.aspectj.ProcessClassesMojo.execute (ProcessClassesMojo.java:88)
    at com.gradle.maven.scan.extension.internal.e.a.executeMojo (SourceFile:135)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:200)
    at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:196)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
    at java.util.concurrent.FutureTask.run (FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
    at java.lang.Thread.run (Thread.java:750)

```