NationalSecurityAgency/ghidra · error · RuntimeException
The parameter '%s' of method '%s' refers to a non-existent s
Error message
The parameter '%s' of method '%s' refers to a non-existent schema '%s'
What it means
Thrown by TraceRmiTarget.typeMatches when a RemoteParameter's declared schema type name is not present in the SchemaContext of the root schema. The method specification (from the trace's object schema) references a schema name that the loaded schema definitions do not define, so type matching for that method cannot proceed.
Source
Thrown at Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java:610
.findFirst()
.orElse(null);
}
}
record MatchedMethod(RemoteMethod method, Map<String, RemoteParameter> params, int score)
implements Comparable<MatchedMethod> {
@Override
public int compareTo(MatchedMethod that) {
return Integer.compare(this.score, that.score);
}
}
protected static boolean typeMatches(RemoteMethod method, RemoteParameter param,
TraceObjectSchema rootSchema, KeyPath path, Class<?> type) {
SchemaContext ctx = rootSchema.getContext();
TraceObjectSchema sch = ctx.getSchemaOrNull(param.type());
if (sch == null) {
throw new RuntimeException(
"The parameter '%s' of method '%s' refers to a non-existent schema '%s'"
.formatted(param.name(), method.name(), param.type()));
}
if (type == TraceObject.class) {
// The method cannot impose any further restriction. It must accept any object.
return sch == PrimitiveTraceObjectSchema.OBJECT;
}
else if (TraceObjectInterface.class.isAssignableFrom(type)) {
if (path == null) {
return sch.getInterfaces().contains(type);
}
KeyPath found =
rootSchema.searchForSuitable(type.asSubclass(TraceObjectInterface.class), path);
if (found == null) {
return false;
}
return sch == rootSchema.getSuccessorSchema(path);
}View on GitHub (pinned to d5f144c24d)
Solutions
- Inspect the error's schema name and verify it is declared in the loaded schema definitions; correct the spelling in the method spec or schema file.
- Ensure all required schema definition files/packages for the target are installed and loaded.
- Regenerate the method/schema spec against the schema set currently deployed in Ghidra.
Defensive patterns
Strategy: validation
Validate before calling
SchemaContext ctx = rootSchema.getContext();
if (ctx.getSchemaOrNull(param.type()) == null) {
throw new IllegalStateException("unknown schema: " + param.type());
} Type guard
boolean schemaExists(TraceObjectSchema root, SchemaName name) {
return root.getContext().getSchemaOrNull(name) != null;
} Prevention
- Validate every schema name referenced by method specs against the loaded SchemaContext.
- Keep schema definition files complete and typo-free.
- Regenerate method/schema specs against the deployed schema set.
When it happens
Trigger: A schema manifest references a type that was never declared, was misspelled, or belongs to a schema version newer than the loaded definitions; an extension method spec names a schema that the current Ghidra build does not ship.
Common situations: Custom schema files with a typo'd schema name; method spec generated against a newer schema set; missing schema definition file; partial/corrupt schema package.
Related errors
- Cannot convert: {value:r}
- Cannot get schema for {annotation}
- Cannot write Value: {schema}, {value}, {type(value)}
- Could not parse pyproject.toml
- Cannot find column '{}' for @DBAnnotatedColumn on {}
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/2358721355f34878.
Report an issue: GitHub.