Errored with large state diagram

0 votes
asked May 24, 2013 in Bug by anonymous

I am getting the following error when trying to generate a large state diagram: 300 states and 450 transitions.  I tried to increase the jvm heap but that didn't seem to help. Any help would be appreciated.

1 Answer

0 votes
answered May 25, 2013 by plantuml (295,000 points)

PlantUML is using GraphViz to generate some diagrams. So PlantUML is launching dot program and retrieve the information generated by dot as a SVG flow. (see http://plantuml.sourceforge.net/graphvizdot.html )

This message means that PlantUML is getting an empty flow from dot execution, and therefore cannot generate UML diagrams. There may be several reasons why this happens:

  • There is an issue with your GraphViz installation. Try a very simple diagram, with only one class for example.
  • Your version of GraphViz is too old and is crashing with information provided by PlantUML. Check your version with testdot
  • Your diagram is too complex.
  • There is a bug in PlantUML and/or in dot.

Can you test your diagram on the online server to see if it's working there ? http://www.plantuml.com

You should also update to the last PlantUML version, and check your graphiz installation:

@startuml
testdot
@enduml

 

commented May 25, 2013 by anonymous
I am using GraphViz 2.28 on windows and the latest plantul build 7967.

I tried it on demo server and it just return without the graph.  

I tried to reduce the # of transitions and eventually it started to work. I played with heap memory and that does not seem to help (I have set to 1024m).

This is a customer's model, so I can't post it here. But if you could let me know how I can send it to you in private, I'll try to get my customer's approval to share the graph with you for debugging purpose.

Thanks.
commented May 26, 2013 by plantuml (295,000 points)
Changing heap memory at this point won't change result, because the issue is on GraphViz side, which is ignoring this setting.

You should try to remove all comments on transition and avoid "left/right" transitions. It means change :

@startuml
state foo1
state foo2
foo1 -> foo2 : some comment
@enduml

To:

@startuml
state foo1
state foo2
foo1 --> foo2
@enduml

For some reasons, the second example is much more easier to manage for GraphViz, and it would probably help for large diagrams.

You can send private examples to plantuml@gmail.com : this will be kept private and never published.

Regards,
...