oracle/graal · error · IllegalStateException
Dump properties unsupported in format v.
Error message
Dump properties unsupported in format v.
What it means
Document-level dump properties (beginDocument/startDocument metadata) were introduced in protocol version 7. GraphProtocol.startDocument checks versionMajor and refuses to emit document properties on older formats with IllegalStateException, because the reading side of v<7 has no way to parse them. The stream would be corrupt rather than merely degraded, so it fails fast.
Source
Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/graphio/GraphProtocol.java:142
writeString(format);
writeInt(args.length);
for (Object a : args) {
writePropertyObject(graph, a);
}
} else {
writePoolObject(formatTitle(graph, id, format, args));
}
writeGraph(graph, properties);
flushEmbedded();
flush();
} finally {
printing = false;
}
}
public final void startDocument(Map<? extends Object, ? extends Object> documentProperties) throws IOException {
if (versionMajor < 7) {
throw new IllegalStateException("Dump properties unsupported in format v." + versionMajor);
}
printing = true;
try {
writeByte(BEGIN_DOCUMENT);
writeProperties(null, documentProperties);
} finally {
printing = false;
}
}
public final void beginGroup(Graph noGraph, String name, String shortName, ResolvedJavaMethod method, int bci, Map<? extends Object, ? extends Object> properties) throws IOException {
printing = true;
try {
writeByte(BEGIN_GROUP);
writePoolObject(name);
writePoolObject(shortName);
writePoolObject(method);
writeInt(bci);View on GitHub (pinned to a66e9ccd1d)
Solutions
- Ensure the builder allows version 7: call protocolVersion(7, 0) or newer, or drop the explicit pin so requireVersion can auto-upgrade.
- Skip startDocument when you must stay on v6; emit graph-level properties instead.
- Upgrade the consuming tool (IGV) to a version that reads v7+ dumps, then use the new API.
Example fix
// before builder.protocolVersion(6, 0).build(); output.startDocument(props); // IllegalStateException // after builder.protocolVersion(7, 0).build(); output.startDocument(props);
Defensive patterns
Strategy: validation
Validate before calling
// ensure the built output is on v7+ before using document properties builder.protocolVersion(7, 0); GraphOutput<G, N, M> out = builder.build(); out.startDocument(props);
Try / catch
try {
output.startDocument(props);
} catch (IllegalStateException e) {
if (e.getMessage().contains("Dump properties unsupported")) {
output.print(graph, props); // degrade to graph-level properties on old protocol
} else throw e;
} Prevention
- Gate startDocument usage on a configuration flag for old-IGV compatibility.
- When you pin for legacy readers, also stub out new-protocol calls in the same config.
When it happens
Trigger: Building a GraphOutput pinned (explicitly or via an old default) to major < 7 and then calling startDocument(map). Common when supporting an old Ideal Graph Visualizer that only reads v6 dumps while the code emits document properties.
Common situations: Legacy IGV integration with a pinned protocol version. GraphOutput built by a helper that always sets an old version. Upgrading graphio where startDocument became available but the pin was never revisited.
Related errors
- Cannot downgrade from minimum required version
- Feature unsupported in version
- Unrecognized version
- Trying to write during graph print.
- Expecting
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/396b12baf5f2e033.
Report an issue: GitHub.