Skip to content

Compilation hang at CheckUnused on Mill repo after updating to Scala 3.7.0-RC1 when -Wunused:all is enabled #22829

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

Closed
lihaoyi opened this issue Mar 18, 2025 · 1 comment
Labels
itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label

Comments

@lihaoyi
Copy link
Contributor

lihaoyi commented Mar 18, 2025

Compiler version

3.7.0

Minimized code

git checkout pull/4745/head
git fetch origin pull/4745/head:4745
git checkout 4745
./mill  core.resolve.compile

Output (click arrow to expand)

  • In Scala 3.6.4, it finishes in a few seconds.
  • In Scala 3.7.0-RC1, it hangs forever

The jstack trace indicates that the compiler is stuck somewhere inside CheckUnused

"pool-3-thread-4" #69 prio=5 os_prio=31 cpu=106971.92ms elapsed=121.87s tid=0x00000001375d0c00 nid=0xff0b runnable  [0x0000000280c36000]
   java.lang.Thread.State: RUNNABLE
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1500)
	at dotty.tools.dotc.core.Types$Type.isEffectivelySingleton(Types.scala:337)
	at dotty.tools.dotc.core.TypeComparer.comparePaths$1(TypeComparer.scala:1013)
	at dotty.tools.dotc.core.TypeComparer.fourthTry$1(TypeComparer.scala:1029)
	at dotty.tools.dotc.core.TypeComparer.thirdTryNamed$1(TypeComparer.scala:622)
	at dotty.tools.dotc.core.TypeComparer.compareNamed$1(TypeComparer.scala:349)
	at dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:357)
	at dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:1599)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:229)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:239)
	at dotty.tools.dotc.core.TypeComparer.isSameType(TypeComparer.scala:2359)
	at dotty.tools.dotc.core.TypeComparer$.isSameType(TypeComparer.scala:3400)
	at dotty.tools.dotc.core.Types$Type.$eq$colon$eq(Types.scala:1135)
	at dotty.tools.dotc.transform.CheckUnused$.dotty$tools$dotc$transform$CheckUnused$Resolved$$_$hasRecord$$anonfun$1(CheckUnused.scala:495)
	at dotty.tools.dotc.transform.CheckUnused$Resolved$$Lambda$9153/0x00000005028b7870.apply(Unknown Source)
	at scala.collection.immutable.List.find(List.scala:414)
	at dotty.tools.dotc.transform.CheckUnused$Resolved.hasRecord(CheckUnused.scala:495)
	at dotty.tools.dotc.transform.CheckUnused.resolveUsage(CheckUnused.scala:363)
	at dotty.tools.dotc.transform.CheckUnused.transformSelect(CheckUnused.scala:92)
	at dotty.tools.dotc.transform.CheckUnused.transformSelect(CheckUnused.scala:74)
	at dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:636)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:245)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:295)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:244)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:295)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapValDef$1(MegaPhase.scala:251)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:256)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:327)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:327)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:327)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
	at dotty.tools.dotc.transform.MegaPhase$$Lambda$9168/0x00000005028bedb0.apply(Unknown Source)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:244)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:319)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.transformAllDeep(MegaPhase.scala:125)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:148)
	at dotty.tools.dotc.transform.CheckUnused.transformInlined(CheckUnused.scala:147)
	at dotty.tools.dotc.transform.MegaPhase.goInlined(MegaPhase.scala:921)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:412)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:244)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:319)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapValDef$1(MegaPhase.scala:251)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:256)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
	at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapValDef$1(MegaPhase.scala:251)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:256)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
	at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
	at dotty.tools.dotc.transform.MegaPhase.transformSpecificTrees(MegaPhase.scala:489)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:410)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:337)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:450)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:411)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
	at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
	at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
	at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
	at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
	at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
	at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
	at dotty.tools.dotc.transform.MegaPhase$MiniPhase.run(MegaPhase.scala:138)
	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:383)
	at dotty.tools.dotc.core.Phases$Phase$$Lambda$9151/0x00000005028b5e80.applyVoid(Unknown Source)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:334)
	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:376)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:367)
	at dotty.tools.dotc.Run$$Lambda$7914/0x0000000502693a38.applyVoid(Unknown Source)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:360)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:407)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:407)
	at dotty.tools.dotc.Run$$Lambda$7913/0x0000000502693560.apply(Unknown Source)
	at scala.Function0.apply$mcV$sp(Function0.scala:42)
	at dotty.tools.dotc.Run.showProgress(Run.scala:469)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:407)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:419)
	at dotty.tools.dotc.Run$$Lambda$7854/0x000000050266acf0.apply(Unknown Source)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:419)
	at dotty.tools.dotc.Run.compileSources(Run.scala:306)
	at dotty.tools.dotc.Run.compile(Run.scala:291)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
	at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
	- locked <0x0000000614d95938> (a dotty.tools.xsbt.CompilerBridgeDriver)
	at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
	at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:196)
	at sbt.internal.inc.MixedAnalyzingCompiler$$Lambda$7543/0x00000005023e2640.apply$mcV$sp(Unknown Source)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:252)
	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186)
	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166)
	at sbt.internal.inc.MixedAnalyzingCompiler$$Lambda$7541/0x00000005023e1e90.apply(Unknown Source)
	at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241)
	at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166)
	at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214)
	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:542)
	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:542)
	at sbt.internal.inc.IncrementalCompilerImpl$$Lambda$6965/0x0000000502266078.apply(Unknown Source)
	at sbt.internal.inc.Incremental$.$anonfun$apply$3(Incremental.scala:182)
	at sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:180)
	at sbt.internal.inc.Incremental$$$Lambda$6971/0x0000000502268600.apply(Unknown Source)
	at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:458)
	at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:117)
	at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
	at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
	at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
	at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:413)
	at sbt.internal.inc.Incremental$$$Lambda$7005/0x0000000502273220.apply(Unknown Source)
	at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:500)
	at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:400)
	at sbt.internal.inc.Incremental$.apply(Incremental.scala:208)
	at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:542)
	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:496)
	at sbt.internal.inc.IncrementalCompilerImpl$$Lambda$6896/0x0000000502240b88.apply(Unknown Source)
	at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
	at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:433)
	at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
	at mill.scalalib.worker.ZincWorkerImpl.compileInternal(ZincWorkerImpl.scala:666)
	at mill.scalalib.worker.ZincWorkerImpl.$anonfun$compileMixed$1(ZincWorkerImpl.scala:461)
	at mill.scalalib.worker.ZincWorkerImpl$$Lambda$7528/0x00000005023de470.apply(Unknown Source)
	at mill.scalalib.worker.ZincWorkerImpl.$anonfun$withCompilers$2(ZincWorkerImpl.scala:495)
	at mill.scalalib.worker.ZincWorkerImpl$$Lambda$7530/0x00000005023df1b0.apply(Unknown Source)
	at mill.api.CachedFactory.withValue(CachedFactory.scala:39)
	at mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:494)
	at mill.scalalib.worker.ZincWorkerImpl.compileMixed(ZincWorkerImpl.scala:460)
	at mill.scalalib.ScalaModule.$anonfun$compile$2(ScalaModule.scala:266)
	at mill.scalalib.ScalaModule$$Lambda$6767/0x00000005021fa208.apply(Unknown Source)
	at mill.define.Task$TraverseCtx.evaluate(Task.scala:245)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroup$10(GroupEvaluator.scala:269)
	at mill.eval.GroupEvaluator$$Lambda$996/0x00000005012ef0a0.apply(Unknown Source)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroup$9(GroupEvaluator.scala:259)
	at mill.eval.GroupEvaluator$$Lambda$1008/0x00000005012f5bd0.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$9(SystemStreams.scala:104)
	at mill.api.SystemStreams$$$Lambda$56/0x0000000501119038.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$8(SystemStreams.scala:103)
	at mill.api.SystemStreams$$$Lambda$55/0x0000000501118d70.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$7(SystemStreams.scala:102)
	at mill.api.SystemStreams$$$Lambda$54/0x0000000501118858.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withErr(Console.scala:193)
	at mill.api.SystemStreams$.$anonfun$withStreams$6(SystemStreams.scala:101)
	at mill.api.SystemStreams$$$Lambda$53/0x0000000501118590.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withOut(Console.scala:164)
	at mill.api.SystemStreams$.$anonfun$withStreams$5(SystemStreams.scala:100)
	at mill.api.SystemStreams$$$Lambda$52/0x00000005011182c8.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withIn(Console.scala:227)
	at mill.api.SystemStreams$.$anonfun$withStreams$4(SystemStreams.scala:99)
	at mill.api.SystemStreams$$$Lambda$51/0x0000000501118000.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.withStreams(SystemStreams.scala:98)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroup$8(GroupEvaluator.scala:259)
	at mill.eval.GroupEvaluator$$Lambda$1004/0x00000005012f4b20.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.eval.GroupEvaluator.wrap$1(GroupEvaluator.scala:258)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroup$3(GroupEvaluator.scala:268)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroup$3$adapted(GroupEvaluator.scala:217)
	at mill.eval.GroupEvaluator$$Lambda$987/0x00000005012eca80.apply(Unknown Source)
	at scala.collection.immutable.Vector.foreach(Vector.scala:2125)
	at mill.eval.GroupEvaluator.computeAll$1(GroupEvaluator.scala:217)
	at mill.eval.GroupEvaluator.evaluateGroup(GroupEvaluator.scala:289)
	at mill.eval.GroupEvaluator.$anonfun$evaluateGroupCached$1(GroupEvaluator.scala:158)
	at mill.eval.GroupEvaluator$$Lambda$837/0x00000005012b62c8.apply(Unknown Source)
	at mill.api.Logger.withPrompt(Logger.scala:83)
	at mill.api.Logger.withPrompt$(Logger.scala:81)
	at mill.util.PrefixLogger.withPrompt(PrefixLogger.scala:7)
	at mill.eval.GroupEvaluator.evaluateGroupCached(GroupEvaluator.scala:58)
	at mill.eval.GroupEvaluator.evaluateGroupCached$(GroupEvaluator.scala:44)
	at mill.eval.EvaluatorImpl.evaluateGroupCached(EvaluatorImpl.scala:17)
	at mill.eval.EvaluatorCore.$anonfun$evaluate0$6(EvaluatorCore.scala:175)
	at mill.eval.EvaluatorCore$$Lambda$808/0x00000005012a7ae0.apply(Unknown Source)
	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467)
	at mill.eval.ExecutionContexts$ThreadPool.$anonfun$execute$4(ExecutionContexts.scala:79)
	at mill.eval.ExecutionContexts$ThreadPool$$Lambda$815/0x00000005012ac6c0.apply$mcV$sp(Unknown Source)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$9(SystemStreams.scala:104)
	at mill.api.SystemStreams$$$Lambda$56/0x0000000501119038.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$8(SystemStreams.scala:103)
	at mill.api.SystemStreams$$$Lambda$55/0x0000000501118d70.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.$anonfun$withStreams$7(SystemStreams.scala:102)
	at mill.api.SystemStreams$$$Lambda$54/0x0000000501118858.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withErr(Console.scala:193)
	at mill.api.SystemStreams$.$anonfun$withStreams$6(SystemStreams.scala:101)
	at mill.api.SystemStreams$$$Lambda$53/0x0000000501118590.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withOut(Console.scala:164)
	at mill.api.SystemStreams$.$anonfun$withStreams$5(SystemStreams.scala:100)
	at mill.api.SystemStreams$$$Lambda$52/0x00000005011182c8.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at scala.Console$.withIn(Console.scala:227)
	at mill.api.SystemStreams$.$anonfun$withStreams$4(SystemStreams.scala:99)
	at mill.api.SystemStreams$$$Lambda$51/0x0000000501118000.apply(Unknown Source)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.api.SystemStreams$.withStreams(SystemStreams.scala:98)
	at mill.eval.ExecutionContexts$ThreadPool.$anonfun$execute$3(ExecutionContexts.scala:79)
	at mill.eval.ExecutionContexts$ThreadPool$$Lambda$812/0x00000005012a3b10.apply$mcV$sp(Unknown Source)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at mill.eval.ExecutionContexts$ThreadPool.$anonfun$execute$1(ExecutionContexts.scala:78)
	at mill.eval.ExecutionContexts$ThreadPool$$Lambda$809/0x00000005012a3278.apply$mcV$sp(Unknown Source)
	at mill.eval.ExecutionContexts$ThreadPool$PriorityRunnable.run(ExecutionContexts.scala:99)
	at java.util.concurrent.ThreadPoolExecutor.runWorker([email protected]/ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run([email protected]/ThreadPoolExecutor.java:635)
	at java.lang.Thread.run([email protected]/Thread.java:840)

Here's the JProfiler trace shoing all the time going into CheckUnused, and what gets called within it:

Image

And the JProfiler hotspot reverse-trace

Image

Removing the -Wunused:all flag seems to make the hang go away

@lihaoyi lihaoyi added itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label labels Mar 18, 2025
@lihaoyi lihaoyi changed the title Compilation hangs on Mill repo after updating to Scala 3.7.0-RC1 Compilation hangs on Mill repo after updating to Scala 3.7.0-RC1 when -Wunused:all is enabled Mar 18, 2025
@lihaoyi lihaoyi changed the title Compilation hangs on Mill repo after updating to Scala 3.7.0-RC1 when -Wunused:all is enabled Compilation hang at CheckUnused on Mill repo after updating to Scala 3.7.0-RC1 when -Wunused:all is enabled Mar 18, 2025
@som-snytt
Copy link
Contributor

I changed the other title for better visibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label
Projects
None yet
Development

No branches or pull requests

2 participants