oracle/graal · error · IOException
Invalid replay symbolic method index
Error message
Invalid replay symbolic method index
What it means
IOException thrown by BinaryReplayCodec.ReadState.methodAt when a replay stream references a symbolic-method table index outside [0, methodTable.size()). Like the string table, methods are resolved by dense index into a table populated during decoding; an out-of-range reference indicates a corrupt, truncated, or version-mismatched stream.
Source
Thrown at compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/replaycomp/BinaryReplayCodec.java:266
}
private String stringAt(int index) throws IOException {
if (index < 0 || index >= stringTable.size()) {
throw new IOException("Invalid replay string table index " + index);
}
return stringTable.get(index);
}
private void defineString(int index, String value) throws IOException {
if (index != stringTable.size()) {
throw new IOException("Invalid replay string definition index " + index);
}
stringTable.add(value);
}
private CompilationProxy.SymbolicMethod methodAt(int index) throws IOException {
if (index < 0 || index >= methodTable.size()) {
throw new IOException("Invalid replay symbolic method index " + index);
}
return methodTable.get(index);
}
private void defineMethod(int index, CompilationProxy.SymbolicMethod method) throws IOException {
if (index != methodTable.size()) {
throw new IOException("Invalid replay symbolic method definition index " + index);
}
methodTable.add(method);
}
private CompilerInterfaceDeclarations.Registration registrationAt(int index) throws IOException {
if (index < 0 || index >= registrations.length) {
throw new IOException("Invalid replay registration index " + index);
}
return registrations[index];
}
View on GitHub (pinned to a66e9ccd1d)
Solutions
- Regenerate replay data with the current compiler build.
- Verify integrity (file size/checksum) of the replay artifact.
- Avoid mixing replay artifacts across Graal versions.
Defensive patterns
Strategy: validation
Try / catch
try {
replayCodec.decode(input);
} catch (IOException e) {
if (e.getMessage().startsWith("Invalid replay symbolic method index")) {
// regenerate replay data on this build
}
throw e;
} Prevention
- Keep replay artifacts pinned to the producing compiler revision.
- Automate re-capture when the compiler version changes in CI.
When it happens
Trigger: A replay record refers to a SymbolicMethod index never defined (or beyond table end) — typical when the reader and writer builds order method definitions differently or bytes were lost.
Common situations: Cross-version replay of compilation profiles; interrupted profile capture; moving replay files between environments with different compiler builds.
Related errors
- Invalid replay string table index
- Invalid replay string definition index
- Invalid replay symbolic method definition index
- Invalid replay registration index
- Registration is not a singleton
AI-assisted analysis of oracle/graal@a66e9ccd1d (2026-08-14).
Data as JSON: /api/errors/ae75daf3d9ecc1c4.
Report an issue: GitHub.