Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

maven heisenbug : java.lang.AssertionError: Filling jar [...] during ZipFileIndexFileObject [...] #62

Closed
gneuvill opened this issue Feb 3, 2017 · 3 comments
Milestone

Comments

@gneuvill
Copy link
Contributor

gneuvill commented Feb 3, 2017

I hate maven. Here is the stacktrace :

java.lang.AssertionError: Filling jar:file:/home/gneuvill/.m2/repository/org/springframework/security/spring-security-config/4.1.3.RELEASE/spring-security-config-4.1.3.RELEASE.jar!/org/springframework/security/config/annotation/authentication/configuration/EnableGlobalAuthentication.class during ZipFileIndexFileObject[/home/gneuvill/.m2/repository/org/springframework/spring-context/4.2.8.RELEASE/spring-context-4.2.8.RELEASE.jar(org/springframework/stereotype/Component.class)] at com.sun.tools.javac.util.Assert.error(Assert.java:133) at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2500) at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:2442) at com.sun.tools.javac.jvm.ClassReader.access$000(ClassReader.java:76) at com.sun.tools.javac.jvm.ClassReader$1.complete(ClassReader.java:240) at com.sun.tools.javac.code.Symbol.complete(Symbol.java:574) at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037) at com.sun.tools.javac.code.Symbol$ClassSymbol.getRawAttributes(Symbol.java:984) at com.sun.tools.javac.code.Symbol.getAnnotationMirrors(Symbol.java:610) at com.sun.tools.javac.code.Symbol$TypeSymbol.getAnnotationMirrors(Symbol.java:672) at org.derive4j.processor.DeriveConfigBuilder.deriveConfigs(DeriveConfigBuilder.java:193) at org.derive4j.processor.DeriveConfigBuilder.lambda$deriveConfigs$11(DeriveConfigBuilder.java:195) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.Iterator.forEachRemaining(Iterator.java:116) at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.Iterator.forEachRemaining(Iterator.java:116) at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:479) at org.derive4j.processor.DeriveConfigBuilder.findDeriveConfig(DeriveConfigBuilder.java:177) at org.derive4j.processor.DerivingProcessor.lambda$process$3(DerivingProcessor.java:97) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:747) at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:721) at java.util.stream.AbstractTask.compute(AbstractTask.java:316) at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Something in there org.derive4j.processor.DeriveConfigBuilder.deriveConfigs(DeriveConfigBuilder.java:193) seems suspicious...

@jbgi
Copy link
Member

jbgi commented Feb 3, 2017

It it systematic? or sporadic?
Does this happen during mvn compile?

@gneuvill
Copy link
Contributor Author

gneuvill commented Feb 3, 2017

Sporadic, hence the 'heisenbug' (not sure it really means what I think it means though).

Yes, mvn compile triggers it. I wonder if DerivingProcessor.findAllElements and DerivingProcessor.processElements are not the culprits here, both by using parallel() on "root" streams...

Indeed com.sun.tools.javac.jvm.ClassReader.fillIn, which throws the AssertionError, mutates a boolean declared in the class without any synchronisation whatsoever.

@jbgi
Copy link
Member

jbgi commented Feb 3, 2017

right this is also the conclusion I reach. Need to avoid parallelization when traversing annotations chains (other usages are probably fine).

@jbgi jbgi added this to the 0.10.2 milestone Feb 5, 2017
@jbgi jbgi closed this as completed in 0f92293 Feb 5, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants