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

  1. Ensure the builder allows version 7: call protocolVersion(7, 0) or newer, or drop the explicit pin so requireVersion can auto-upgrade.
  2. Skip startDocument when you must stay on v6; emit graph-level properties instead.
  3. 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

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


AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14). Data as JSON: /api/errors/396b12baf5f2e033. Report an issue: GitHub.