2014-01-16 12:56:03,903 ERROR [Java indexing] - ScalaSourceFile - Compiler crash during indexing of L/org.scala-ide.sdt.core/src/scala/tools/eclipse/completion/ScalaCompletions.scala
java.lang.AssertionError: assertion failed: Race condition detected: You are running a presentation compiler method outside the PC thread.[phase: <no phase>] Please file a ticket with the current stack trace at https://www.assembla.com/spaces/scala-ide/support/tickets
at scala.tools.nsc.interactive.Global.assertCorrectThread(Global.scala:524)
at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1402)
at scala.reflect.internal.Symbols$Symbol.flatOwnerInfo(Symbols.scala:2128)
at scala.reflect.internal.Symbols$ClassSymbol.companionModule0(Symbols.scala:3096)
at scala.reflect.internal.Symbols$ClassSymbol.companionModule(Symbols.scala:3098)
at scala.reflect.internal.TreeGen.mkTuple(TreeGen.scala:288)
at scala.reflect.internal.TreeGen.mkFor(TreeGen.scala:666)
at scala.reflect.internal.TreeGen.mkFor(TreeGen.scala:653)
at scala.tools.nsc.ast.parser.Parsers$Parser.parseFor$1(Parsers.scala:1411)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr0(Parsers.scala:1420)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$expr$1.apply(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$expr$1.apply(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser.withPlaceholders(Parsers.scala:1186)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr(Parsers.scala:1339)
at scala.tools.nsc.ast.parser.Parsers$Parser.patDefOrDcl(Parsers.scala:2478)
at scala.tools.nsc.ast.parser.Parsers$Parser.defOrDcl(Parsers.scala:2439)
at scala.tools.nsc.ast.parser.Parsers$Parser.localDef(Parsers.scala:3066)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$blockStatSeq$1.apply(Parsers.scala:3101)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$blockStatSeq$1.apply(Parsers.scala:3084)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:467)
at scala.tools.nsc.ast.parser.Parsers$Parser.blockStatSeq(Parsers.scala:3084)
at scala.tools.nsc.ast.parser.Parsers$Parser.block(Parsers.scala:1680)
at scala.tools.nsc.ast.parser.Parsers$Parser.blockExpr(Parsers.scala:1669)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefRest(Parsers.scala:2586)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefOrDcl(Parsers.scala:2558)
at scala.tools.nsc.ast.parser.Parsers$Parser.defOrDcl(Parsers.scala:2443)
at scala.tools.nsc.ast.parser.Parsers$Parser.localDef(Parsers.scala:3066)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$blockStatSeq$1.apply(Parsers.scala:3101)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$blockStatSeq$1.apply(Parsers.scala:3084)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:467)
at scala.tools.nsc.ast.parser.Parsers$Parser.blockStatSeq(Parsers.scala:3084)
at scala.tools.nsc.ast.parser.Parsers$Parser.block(Parsers.scala:1680)
at scala.tools.nsc.ast.parser.Parsers$Parser.blockExpr(Parsers.scala:1669)
at scala.tools.nsc.ast.parser.Parsers$Parser.simpleExpr(Parsers.scala:1588)
at scala.tools.nsc.ast.parser.Parsers$Parser.prefixExpr(Parsers.scala:1556)
at scala.tools.nsc.ast.parser.Parsers$Parser.postfixExpr(Parsers.scala:1539)
at scala.tools.nsc.ast.parser.Parsers$Parser.parseOther$1(Parsers.scala:1437)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr0(Parsers.scala:1491)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$expr$1.apply(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$expr$1.apply(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser.withPlaceholders(Parsers.scala:1186)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr(Parsers.scala:1341)
at scala.tools.nsc.ast.parser.Parsers$Parser.expr(Parsers.scala:1339)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefRest(Parsers.scala:2597)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefOrDcl(Parsers.scala:2558)
at scala.tools.nsc.ast.parser.Parsers$Parser.defOrDcl(Parsers.scala:2443)
at scala.tools.nsc.ast.parser.Parsers$Parser.nonLocalDefOrDcl(Parsers.scala:2455)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1$$anonfun$applyOrElse$3.apply(Parsers.scala:3012)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1$$anonfun$applyOrElse$3.apply(Parsers.scala:3012)
at scala.tools.nsc.ast.parser.Parsers$Parser.joinComment(Parsers.scala:713)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1.applyOrElse(Parsers.scala:3012)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1.applyOrElse(Parsers.scala:3007)
at scala.tools.nsc.ast.parser.Parsers$Parser.statSeq(Parsers.scala:2939)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateStats(Parsers.scala:3006)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStatSeq$1.apply(Parsers.scala:2993)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStatSeq$1.apply(Parsers.scala:2970)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:467)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateStatSeq(Parsers.scala:2970)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateBody(Parsers.scala:2899)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateBodyOpt(Parsers.scala:2906)
at scala.tools.nsc.ast.parser.Parsers$Parser.template(Parsers.scala:2836)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateOpt(Parsers.scala:2866)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$classDef$1.apply(Parsers.scala:2733)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$classDef$1.apply(Parsers.scala:2713)
at scala.tools.nsc.ast.parser.Parsers$Parser.savingClassContextBounds(Parsers.scala:329)
at scala.tools.nsc.ast.parser.Parsers$Parser.classDef(Parsers.scala:2713)
at scala.tools.nsc.ast.parser.Parsers$Parser.tmplDef(Parsers.scala:2690)
at scala.tools.nsc.ast.parser.Parsers$Parser.topLevelTmplDef(Parsers.scala:2675)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1$$anonfun$applyOrElse$2.apply(Parsers.scala:2962)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1$$anonfun$applyOrElse$2.apply(Parsers.scala:2962)
at scala.tools.nsc.ast.parser.Parsers$Parser.joinComment(Parsers.scala:713)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1.applyOrElse(Parsers.scala:2962)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1.applyOrElse(Parsers.scala:2955)
at scala.tools.nsc.ast.parser.Parsers$Parser.statSeq(Parsers.scala:2939)
at scala.tools.nsc.ast.parser.Parsers$Parser.topStatSeq(Parsers.scala:2954)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.topstats$1(Parsers.scala:3152)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.topstats$1(Parsers.scala:3144)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.apply(Parsers.scala:3158)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.apply(Parsers.scala:3120)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:467)
at scala.tools.nsc.ast.parser.Parsers$Parser.compilationUnit(Parsers.scala:3120)
at scala.tools.nsc.ast.parser.Parsers$SourceFileParser$$anonfun$parseStartRule$1.apply(Parsers.scala:146)
at scala.tools.nsc.ast.parser.Parsers$SourceFileParser$$anonfun$parseStartRule$1.apply(Parsers.scala:146)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$parse$1.apply(Parsers.scala:354)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$parse$1.apply(Parsers.scala:354)
at scala.tools.nsc.ast.parser.Parsers$Parser.parseRule(Parsers.scala:347)
at scala.tools.nsc.ast.parser.Parsers$Parser.parse(Parsers.scala:354)
at scala.tools.nsc.interactive.CompilerControl$class.parseTree(CompilerControl.scala:241)
at scala.tools.nsc.interactive.Global.parseTree(Global.scala:94)
at scala.tools.eclipse.ScalaPresentationCompiler.withParseTree(ScalaPresentationCompiler.scala:197)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$addToIndexer$1.apply(ScalaCompilationUnit.scala:174)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$$anonfun$addToIndexer$1.apply(ScalaCompilationUnit.scala:173)
at scala.tools.eclipse.InteractiveCompilationUnit$$anonfun$doWithSourceFile$1.apply(InteractiveCompilationUnit.scala:60)
at scala.tools.eclipse.InteractiveCompilationUnit$$anonfun$doWithSourceFile$1.apply(InteractiveCompilationUnit.scala:60)
at scala.tools.eclipse.ScalaPresentationCompilerProxy$$anonfun$apply$1.apply(ScalaPresentationCompilerProxy.scala:72)
at scala.tools.eclipse.ScalaPresentationCompilerProxy$$anonfun$apply$1.apply(ScalaPresentationCompilerProxy.scala:72)
at scala.Option.flatMap(Option.scala:170)
at scala.tools.eclipse.ScalaPresentationCompilerProxy.apply(ScalaPresentationCompilerProxy.scala:72)
at scala.tools.eclipse.InteractiveCompilationUnit$class.doWithSourceFile(InteractiveCompilationUnit.scala:60)
at scala.tools.eclipse.javaelements.ScalaSourceFile.doWithSourceFile(ScalaSourceFile.scala:77)
at scala.tools.eclipse.javaelements.ScalaCompilationUnit$class.addToIndexer(ScalaCompilationUnit.scala:173)
at scala.tools.eclipse.javaelements.ScalaSourceFile.addToIndexer(ScalaSourceFile.scala:77)
at scala.tools.eclipse.ScalaSourceIndexer$$anonfun$indexDocument$2.apply(ScalaSourceIndexer.scala:21)
at scala.tools.eclipse.ScalaSourceIndexer$$anonfun$indexDocument$2.apply(ScalaSourceIndexer.scala:21)
at scala.Option.map(Option.scala:145)
at scala.tools.eclipse.ScalaSourceIndexer.indexDocument(ScalaSourceIndexer.scala:21)
at scala.tools.eclipse.contribution.weaving.jdt.indexerprovider.IndexerProviderAspect.ajc$around$scala_tools_eclipse_contribution_weaving_jdt_indexerprovider_IndexerProviderAspect$1$16276a3c(IndexerProviderAspect.aj:30)
at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.indexDocument(JavaSearchParticipant.java:69)
at org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexDocument(IndexManager.java:498)
at org.eclipse.jdt.internal.core.search.indexing.IndexManager$1.execute(IndexManager.java:938)
at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:405)
at java.lang.Thread.run(Thread.java:744)
Leave a comment
What's the exact version of the Scala compiler you are using.
I'm asking because the stacktrace looks very similar to https://scala-ide-portfolio.assembla.com/spaces/scala-ide/tickets/1001986#/activity/ticket:, which is something that was fixed in the compiler https://issues.scala-lang.org/browse/SI-8030 and https://github.com/scala/scala/pull/3262. If the compiler you are using contains the commit in the PR I linked, then please file a new ticket in the Scala project (I'm closing the ticket as invalid).
I'm asking because the stacktrace looks very similar to https://scala-ide-portfolio.assembla.com/spaces/scala-ide/tickets/1001986#/activity/ticket:, which is something that was fixed in the compiler https://issues.scala-lang.org/browse/SI-8030 and https://github.com/scala/scala/pull/3262. If the compiler you are using contains the commit in the PR I linked, then please file a new ticket in the Scala project (I'm closing the ticket as invalid).
on 2014-01-16 04:54 *
By Simon Schäfer
I'm using a compiler from some days ago, but to be sure, I'll build the nightly and try to reproduce the error with this version.
Actually, I'm re-opening this ticket as we could still add a workaround for fixing this on our side. What we usually do is making sure the symbol originating the race-condition has been fully initialized when the presentation compiler instance is created. This works for top-level symbols, and looking at the stacktrace it looks like the Tuple symbol is to blame for the exception. Interestingly, we do seem to initialize all N TupleClass symbols in our code (https://github.com/scala-ide/scala-ide/blob/master/org.scala-ide.sdt.core/src/scala/tools/eclipse/javaelements/ScalaJavaMapper.scala#L31), but looks like we are missing the linked CompanionModule symbols of each the TupleN symbol. So, maybe initializing the CompanionModule symbol of the TupleN class symbols will fix this. \cc @jason.zaugg
on 2014-01-19 13:32 *
By Simon Schäfer
I can confirm that this is a different bug than the one resolved in PR3262. I still get the exception. I'll report it on the other issue tracker.
on 2014-01-20 01:33 *
By Mirco Dotta
Thanks Simon for taking the time! Please, share a link to the ticket once you have filed it.
on 2014-01-20 02:30 *
By Simon Schäfer
The ticket is SI-8163
No file chosen
You have an empty file field. Please select or remove it.
Name | Size |
---|