oracle/graal · error · IOException
Failed to open %s to dump IGV graphs
Error message
Failed to open %s to dump IGV graphs
What it means
After an IGV network failure (error 34), or when file-based dumping is selected directly, IgvDumpChannel.createFileChannel opens a writable channel at a path supplied by a pathProvider (based on -Dgraal.DumpPath and the file name counter). If PathUtilities.openFileChannel fails — bad path, permission denied, directory missing — the IOException('Failed to open %s to dump IGV graphs') is thrown, chaining the cause.
Source
Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/debug/IgvDumpChannel.java:174
// Ignore races - an extra announcement is ok
lastTargetAnnouncement = targetAnnouncement;
TTY.println(targetAnnouncement);
}
}
private static WritableByteChannel createFileChannel(Supplier<String> pathProvider, String networkFailure) throws IOException {
String path = pathProvider.get();
try {
WritableByteChannel channel = PathUtilities.openFileChannel(path, StandardOpenOption.WRITE, StandardOpenOption.CREATE);
String dir = isDirectory(path, false) ? path : getParent(path);
if (networkFailure == null) {
maybeAnnounceTarget("Dumping IGV graphs in " + dir);
} else {
maybeAnnounceTarget(networkFailure + ". Dumping IGV graphs in " + dir);
}
return channel;
} catch (IOException e) {
throw new IOException(String.format("Failed to open %s to dump IGV graphs", path), e);
}
}
}
View on GitHub (pinned to a66e9ccd1d)
Solutions
- Ensure the -Dgraal.DumpPath directory exists and is writable by the JVM process (mkdir -p + chmod).
- Use an absolute dump path to avoid working-directory surprises.
- Free disk space if the volume is full; dumping large graphs can consume significant space.
- If dumping to IGV over the network was intended, fix the connection (see error 34) so the file fallback is not used.
Example fix
# before -Dgraal.DumpPath=/read-only-mount/dumps # after mkdir -p /tmp/graal-dumps -Dgraal.DumpPath=/tmp/graal-dumps
Defensive patterns
Strategy: validation
Validate before calling
Path dir = Path.of(dumpPath);
Files.createDirectories(dir);
if (!Files.isWritable(dir)) {
throw new IOException("Dump path not writable: " + dir.toAbsolutePath());
}
// safe to start the JVM with -Dgraal.Dump and this DumpPath Try / catch
try {
dumpGraphs(graph);
} catch (IOException e) {
if (e.getMessage() != null && e.getMessage().startsWith("Failed to open")) {
// switch DumpPath to a temp dir and retry once, or drop dumping for this run
} else {
throw e;
}
} Prevention
- Pre-create the dump directory and assert writability at JVM startup when dumping is enabled.
- Monitor free space on the dump volume during long dumping sessions.
When it happens
Trigger: Configuring -Dgraal.DumpPath to a non-existent or read-only directory, a path with illegal characters for the filesystem, the max-file-count/name-collision logic producing an invalid name, or the filesystem being full. Triggered exactly when a dump is attempted (first graph dump of the run).
Common situations: CI sandboxes with read-only output mounts, dump paths relative to a working directory that was never created, long-running daemons whose DumpPath directory was deleted underneath them, or disk exhaustion during heavy dumping.
Related errors
- Could not connect to the IGV on %s:%d
- Error disassembling %s%nPartial disassembly:%n%s
- Error archiving %s. This directory will not be deleted and m
- unknown verbosity:
- Cannot downgrade from minimum required version
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/c1853797ca44c813.
Report an issue: GitHub.