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

graphviz errors in scaladocs for 2.12 #1129

Open
raboof opened this issue Feb 15, 2024 · 0 comments
Open

graphviz errors in scaladocs for 2.12 #1129

raboof opened this issue Feb 15, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@raboof
Copy link
Member

raboof commented Feb 15, 2024

graphviz produces errors during the generation of embedded svgs in the 2.12 scaladocs.

you can reproduce this with e.g. sbt ++2.12 persistence-tck/doc.

diagnosing by adding -diagrams-debug to the scaladoc options in project/Doc.scala, we get some more diagnostics:

model contains 36 documentable templates

**********************************************************************
The graphviz dot diagram tool has malfunctioned and will be restarted.

The following is the log of the failure:
  DOT <error console>: malloc_consolidate(): unaligned fastbin chunk detected

  Cleanup: Last template: org.apache.pekko.persistence.journal.JournalPerfSpec
  Cleanup: Last dot input: 
    digraph G {
    compound="true";
    rankdir="TB";
    node [margin="0.08,0.01", fontsize="8.00", style="filled,rounded", height="0.0", penwidth="1", shape="rect", width="0.0", fontname="Source Code Pro"];
    edge [arrowsize="0.7", fontcolor="#aaaaaa", fontsize="9.00", color="#d4d4d4", fontname="Source Code Pro"];
    subgraph clusterAll {
    style="invis"
    subgraph clusterOutgoing {
    style="invis"
    node6 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">scalatest.matchers.should.Matchers.Equalizer[JournalPerfSpec] </TD></TR></TABLE>>,fontcolor="#7d7d7d", color="#ababab", id="implicit-outgoing class|graph1_6", fillcolor="#e1e1e1", tooltip="org.apache.pekko.persistence.journal.JournalPerfSpec can be implicitly converted to scalatest.matchers.should.Matchers.Equalizer[JournalPerfSpec] by the implicit method convertToEqualizer in trait org.scalactic.TripleEquals"];
    node5 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">scalatest.matchers.should.Matchers.AnyShouldWrapper[JournalPerfSpec] </TD></TR></TABLE>>,fontcolor="#7d7d7d", color="#ababab", id="implicit-outgoing class|graph1_5", fillcolor="#e1e1e1", tooltip="org.apache.pekko.persistence.journal.JournalPerfSpec can be implicitly converted to scalatest.matchers.should.Matchers.AnyShouldWrapper[JournalPerfSpec] by the implicit method convertToAnyShouldWrapper in trait org.scalatest.matchers.should.Matchers"];
    node4 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">scalactic.TripleEquals.Equalizer[JournalPerfSpec] </TD></TR></TABLE>>,fontcolor="#7d7d7d", color="#ababab", id="implicit-outgoing class|graph1_4", fillcolor="#e1e1e1", tooltip="org.apache.pekko.persistence.journal.JournalPerfSpec can be implicitly converted to scalactic.TripleEquals.Equalizer[JournalPerfSpec] by the implicit method convertToEqualizer in trait org.scalactic.TripleEquals"];
    node3 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">scalatest.Assertions.Equalizer[JournalPerfSpec] </TD></TR></TABLE>>,fontcolor="#7d7d7d", color="#ababab", id="implicit-outgoing class|graph1_3", fillcolor="#e1e1e1", tooltip="org.apache.pekko.persistence.journal.JournalPerfSpec can be implicitly converted to scalatest.Assertions.Equalizer[JournalPerfSpec] by the implicit method convertToEqualizer in trait org.scalactic.TripleEquals"];
    node3 -> node4 -> node5 -> node6 [constraint="false", style="invis", minlen="0.0"];
    }
    subgraph clusterThis {
    style="invis"
    node0 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">JournalPerfSpec </TD></TR></TABLE>>,fontcolor="#ffffff", URL="#inheritance-diagram", color="#418565", id="this class|graph1_0", fillcolor="#418565", tooltip="org.apache.pekko.persistence.journal.JournalPerfSpec (this class)"];
    }
    
    node0 -> node3 [id="implicit-outgoing|0_3", tooltip="JournalPerfSpec can be implicitly converted to scalatest.Assertions.Equalizer[JournalPerfSpec], scalactic.TripleEquals.Equalizer[JournalPerfSpec], scalatest.matchers.should.Matchers.AnyShouldWrapper[JournalPerfSpec], scalatest.matchers.should.Matchers.Equalizer[JournalPerfSpec]", constraint="false", minlen="2", ltail="clusterThis", lhead="clusterOutgoing", label="implicitly"];
    }
    node1 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">JavaJournalPerfSpec </TD></TR></TABLE>>,fontcolor="#ffffff", URL="../japi/journal/JavaJournalPerfSpec.html#inheritance-diagram", color="#418565", id="class|graph1_1", fillcolor="#418565", tooltip="org.apache.pekko.persistence.japi.journal.JavaJournalPerfSpec"];
    node2 [label=<<TABLE BORDER="0" CELLBORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="/home/aengelen/dev/apache/incubator-pekko/persistence-tck/target/scala-2.12/api/lib/class_diagram.png" /></TD><TD VALIGN="MIDDLE">JournalSpec </TD></TR></TABLE>>,fontcolor="#ffffff", URL="JournalSpec.html#inheritance-diagram", color="#418565", id="class|graph1_2", fillcolor="#418565", tooltip="org.apache.pekko.persistence.journal.JournalSpec"];
    node2 -> node0 [id="inheritance|graph1_2_0", tooltip="JournalPerfSpec is a subtype of JournalSpec", dir="back", arrowtail="empty"];
    node0 -> node1 [id="inheritance|graph1_0_1", tooltip="JavaJournalPerfSpec is a subtype of JournalPerfSpec", dir="back", arrowtail="empty"];
    }

  Cleanup: Dot path: dot
  Cleanup: Dot exit code: 134
**********************************************************************
Graphviz will be restarted...


Diagram generation running time breakdown:

  diagrams model filtering
  ========================
    count:        72 items
    total time:   0 ms
    average time: 0 ms
    maximum time: 0 ms

  diagrams model generation
  =========================
    count:        72 items
    total time:   10 ms
    average time: 0 ms
    maximum time: 2 ms

  dot diagram generation
  ======================
    count:        21 items
    total time:   6 ms
    average time: 0 ms
    maximum time: 1 ms

  dot process running
  ===================
    count:        21 items
    total time:   387 ms
    average time: 18 ms
    maximum time: 277 ms

  svg processing
  ==============
    count:        21 items
    total time:   81 ms
    average time: 3 ms
    maximum time: 28 ms

  Broken images: 94
  Fixed images: 0

I'm using graphviz 9.0.0, and passing that graph to dot manually works fine. Also 2.13 docs appear to be fine.

Perhaps we should just disable scaladoc diagrams for 2.12?

@raboof raboof added the bug Something isn't working label Feb 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant