-
Notifications
You must be signed in to change notification settings - Fork 1.1k
scaladoc hangs #17577
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
Comments
To reproduce:
That process will never end and a java process will run at > 100% CPU utilization forever (many hours tested). |
I took a bit of a look at this and have a minimization. I started by getting a thread dump while generating docs with from the affected code. Scalac appears to be getting stuck in the This minimization only takes several minutes instead of hanging indefinitely, but hopefully gets the idea across compactly: https://github.com/reardonj/minimize-dotty-bug-17577
|
This commit has a pair of fixes that bring the scaladoc build time for the repository mentioned in scala#17577 to a minute instead of hanging. - Reimplement HierarchyGraph's `+` method in terms of `++` Previously, `++` was implemented in terms of `+`, but `+` called `distinct` resulting in poor performance. Now `distinct` is only called once for a `++` call. - Use Set instead of Seq for `InheritanceInformationTransformer.getEdges`. Previously, `subtypes` could contain duplicates, causing excess calls to `getEdges` Use Set in InheritanceInformationTransformer
This commit has a pair of fixes that bring the scaladoc build time for the repository mentioned in scala#17577 to a minute instead of hanging. - Reimplement HierarchyGraph's `+` method in terms of `++` Previously, `++` was implemented in terms of `+`, but `+` called `distinct` resulting in poor performance. Now `distinct` is only called once for a `++` call. - Use Set instead of Seq for `InheritanceInformationTransformer.getEdges`. Previously, `subtypes` could contain duplicates, causing excess calls to `getEdges`
This commit has a pair of fixes that bring the scaladoc build time for the repository mentioned in scala#17577 to a minute instead of hanging. - Reimplement HierarchyGraph's `+` method in terms of `++` Previously, `++` was implemented in terms of `+`, but `+` called `distinct` resulting in poor performance. Now `distinct` is only called once for a `++` call. - Use Set instead of Seq for `InheritanceInformationTransformer.getEdges`. Previously, `subtypes` could contain duplicates, causing excess calls to `getEdges`
This commit has a pair of fixes that bring the scaladoc build time for the repository mentioned in #17577 to a minute instead of hanging. - Reimplement HierarchyGraph's `+` method in terms of `++` Previously, `++` was implemented in terms of `+`, but `+` called `distinct` resulting in poor performance. Now `distinct` is only called once for a `++` call. - Get the distinct `LinkToType` values in `InheritanceInformationTransformer.apply`. Previously, `subtypes` could contain duplicates, causing redundant calls to `getEdges`
This commit has a pair of fixes that bring the scaladoc build time for the repository mentioned in #17577 to a minute instead of hanging. - Reimplement HierarchyGraph's `+` method in terms of `++` Previously, `++` was implemented in terms of `+`, but `+` called `distinct` resulting in poor performance. Now `distinct` is only called once for a `++` call. - Get the distinct `LinkToType` values in `InheritanceInformationTransformer.apply`. Previously, `subtypes` could contain duplicates, causing redundant calls to `getEdges` [Cherry-picked 9859e89]
Uh oh!
There was an error while loading. Please reload this page.
Compiler version
3.2.2
3.3.0-RC5
3.3.0-RC6
3.3.0
3.3.1-RC1
Minimized code
Not available yet. Extracting from 100s of classes is time-consuming.
Follow my analysis here:
https://contributors.scala-lang.org/t/scala3doc-spin-loop/6202/7
Output
None other than:
Expectation
The compiler completes the documentation generation instead of hanging forever.
The text was updated successfully, but these errors were encountered: