Skip to content

post 2.12.0 regression: Scaladoc generation hangs for Scalameter #280

@SethTisue

Description

@SethTisue

this was caught by the 2.12 community build. it's reproducible with:

hub clone scalameter/scalameter
cd scalameter
sbt
> set resolvers += "nightlies" at "https://scala-ci.typesafe.com/artifactory/scala-release-temp/"
> set every scalaVersion := "2.12.1-c2eb299-nightly"
> set every scalaBinaryVersion := "2.12"
> scalameter-core/doc

the hang is in typer. I get a 975 line stack trace, here's the top and bottom:

"pool-13-thread-4" #108 prio=5 os_prio=31 tid=0x00007fee8a969000 nid=0x6533 runnable [0x00007000056ef000]
   java.lang.Thread.State: RUNNABLE
	at java.lang.Object.hashCode(Native Method)
	at scala.runtime.Statics.anyHash(Statics.java:115)
	at scala.collection.mutable.HashTable$HashUtils.elemHashCode(HashTable.scala:412)
	at scala.collection.mutable.HashTable$HashUtils.elemHashCode$(HashTable.scala:412)
	at scala.collection.mutable.HashMap.elemHashCode(HashMap.scala:40)
	at scala.collection.mutable.HashTable.findOrAddEntry(HashTable.scala:164)
	at scala.collection.mutable.HashTable.findOrAddEntry$(HashTable.scala:163)
	at scala.collection.mutable.HashMap.findOrAddEntry(HashMap.scala:40)
	at scala.collection.mutable.HashMap.put(HashMap.scala:107)
	at scala.collection.mutable.HashMap.update(HashMap.scala:112)
	at scala.reflect.internal.tpe.TypeMaps$ExistentialExtrapolation.$anonfun$extrapolate$1(TypeMaps.scala:369)
	at scala.reflect.internal.tpe.TypeMaps$ExistentialExtrapolation.extrapolate(TypeMaps.scala:369)
	at scala.reflect.internal.Types.existentialAbstraction(Types.scala:3729)
	at scala.reflect.internal.Types.existentialAbstraction$(Types.scala:3725)
	at scala.reflect.internal.SymbolTable.existentialAbstraction(SymbolTable.scala:16)
	at scala.reflect.internal.Types.repackExistential(Types.scala:3825)
	at scala.reflect.internal.Types.repackExistential$(Types.scala:3823)
	at scala.reflect.internal.SymbolTable.repackExistential(SymbolTable.scala:16)
	at scala.reflect.internal.Types$TypeVar.setInst(Types.scala:3029)
	at scala.reflect.internal.tpe.TypeConstraints.solveOne$1(TypeConstraints.scala:254)
	at scala.reflect.internal.tpe.TypeConstraints.$anonfun$solve$9(TypeConstraints.scala:260)
	at scala.reflect.internal.tpe.TypeConstraints.solve(TypeConstraints.scala:260)
	at scala.reflect.internal.tpe.TypeConstraints.solve$(TypeConstraints.scala:192)
	at scala.reflect.internal.SymbolTable.solve(SymbolTable.scala:16)
	at scala.reflect.internal.Types$ExistentialType.withTypeVars(Types.scala:2759)
	at scala.reflect.internal.tpe.TypeComparers.thirdTry$1(TypeComparers.scala:485)
	at scala.reflect.internal.tpe.TypeComparers.secondTry$1(TypeComparers.scala:452)
	at scala.reflect.internal.tpe.TypeComparers.firstTry$1(TypeComparers.scala:428)
	at scala.reflect.internal.tpe.TypeComparers.isSubType2(TypeComparers.scala:548)
	at scala.reflect.internal.tpe.TypeComparers.isSubType1(TypeComparers.scala:320)
	at scala.reflect.internal.tpe.TypeComparers.isSubType(TypeComparers.scala:278)
	at scala.reflect.internal.tpe.TypeComparers.isSubType$(TypeComparers.scala:240)
	at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:16)
	at scala.reflect.internal.Types$Type.$less$colon$less(Types.scala:792)
	at scala.reflect.internal.tpe.TypeConstraints$TypeConstraint.$anonfun$isWithinBounds$1(TypeConstraints.scala:149)
	at scala.reflect.internal.tpe.TypeConstraints$TypeConstraint.isWithinBounds(TypeConstraints.scala:149)
	at scala.reflect.internal.tpe.TypeConstraints$TypeConstraint.instWithinBounds(TypeConstraints.scala:146)
	at scala.reflect.internal.Types$TypeVar.instWithinBounds(Types.scala:2968)
	at scala.reflect.internal.tpe.TypeConstraints.$anonfun$solve$11(TypeConstraints.scala:267)
	at scala.reflect.internal.tpe.TypeConstraints.solve(TypeConstraints.scala:267)
	at scala.reflect.internal.tpe.TypeConstraints.solve$(TypeConstraints.scala:192)
	at scala.reflect.internal.SymbolTable.solve(SymbolTable.scala:16)
	at scala.reflect.internal.Types$ExistentialType.withTypeVars(Types.scala:2759)
...
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5493)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5497)
	at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2444)
	at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typed1$91(Typers.scala:5441)
	at scala.tools.nsc.typechecker.Typers$Typer$$Lambda$474/1074016269.apply(Unknown Source)
	at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typerWithLocalContext$1(Typers.scala:491)
	at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:491)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5476)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5483)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5519)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5549)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5493)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5497)
	at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5730)
	at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2274)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5431)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5482)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5519)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5549)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5493)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5497)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5580)
	at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3062)
	at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$9(Typers.scala:3206)
	at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3206)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1974)
	at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1845)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5433)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5482)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5519)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5549)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5493)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5497)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5580)
	at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3062)
	at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$9(Typers.scala:3206)
	at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3206)
	at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5132)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5435)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5482)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5519)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5549)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5493)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5497)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5576)
	at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
	at scala.tools.nsc.Global$GlobalPhase.$anonfun$applyPhase$1(Global.scala:416)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:409)
	at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1(Analyzer.scala:94)
	at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1$adapted(Analyzer.scala:93)
	at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$Lambda$400/2128008574.apply(Unknown Source)
	at scala.collection.Iterator.foreach(Iterator.scala:929)
	at scala.collection.Iterator.foreach$(Iterator.scala:929)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1406)
	at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1418)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1403)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1398)
	at scala.tools.nsc.Global$Run.compile(Global.scala:1492)
	at scala.tools.nsc.doc.DocFactory.makeUniverse(DocFactory.scala:44)
	at scala.tools.nsc.doc.DocFactory.generate$1(DocFactory.scala:124)
	at scala.tools.nsc.doc.DocFactory.document(DocFactory.scala:131)
	at xsbt.Runner.run(ScaladocInterface.scala:26)
	at xsbt.ScaladocInterface.run(ScaladocInterface.scala:10)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:101)
	at sbt.compiler.AnalyzingCompiler.doc(AnalyzingCompiler.scala:67)
	at sbt.compiler.AnalyzingCompiler.doc(AnalyzingCompiler.scala:62)
	at sbt.Doc$$anonfun$scaladoc$1.apply(Doc.scala:23)
	at sbt.Doc$$anonfun$scaladoc$1.apply(Doc.scala:23)
	at sbt.RawCompileLike$$anonfun$prepare$1.apply(RawCompileLike.scala:64)
	at sbt.RawCompileLike$$anonfun$prepare$1.apply(RawCompileLike.scala:56)
	at sbt.RawCompileLike$$anonfun$cached$1$$anonfun$2$$anonfun$apply$1.apply(RawCompileLike.scala:49)
	at sbt.RawCompileLike$$anonfun$cached$1$$anonfun$2$$anonfun$apply$1.apply(RawCompileLike.scala:47)
	at sbt.Tracked$$anonfun$outputChanged$1.apply(Tracked.scala:84)
	at sbt.Tracked$$anonfun$outputChanged$1.apply(Tracked.scala:79)
	at sbt.RawCompileLike$$anonfun$cached$1.apply(RawCompileLike.scala:54)
	at sbt.RawCompileLike$$anonfun$cached$1.apply(RawCompileLike.scala:39)
	at sbt.Defaults$$anonfun$docTaskSettings$3.apply(Defaults.scala:803)
	at sbt.Defaults$$anonfun$docTaskSettings$3.apply(Defaults.scala:781)
	at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon$4.work(System.scala:63)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:237)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
	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:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions