{"record":{"id":"2358721355f34878","repo":"NationalSecurityAgency/ghidra","slug":"the-parameter-s-of-method-s-refers-to-a-non","errorCode":null,"errorMessage":"The parameter '%s' of method '%s' refers to a non-existent schema '%s'","messagePattern":"The parameter '(.+?)' of method '(.+?)' refers to a non-existent schema '(.+?)'","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java","lineNumber":610,"sourceCode":"\t\t\t\t\t.findFirst()\n\t\t\t\t\t.orElse(null);\n\t\t}\n\t}\n\n\trecord MatchedMethod(RemoteMethod method, Map<String, RemoteParameter> params, int score)\n\t\t\timplements Comparable<MatchedMethod> {\n\t\t@Override\n\t\tpublic int compareTo(MatchedMethod that) {\n\t\t\treturn Integer.compare(this.score, that.score);\n\t\t}\n\t}\n\n\tprotected static boolean typeMatches(RemoteMethod method, RemoteParameter param,\n\t\t\tTraceObjectSchema rootSchema, KeyPath path, Class<?> type) {\n\t\tSchemaContext ctx = rootSchema.getContext();\n\t\tTraceObjectSchema sch = ctx.getSchemaOrNull(param.type());\n\t\tif (sch == null) {\n\t\t\tthrow new RuntimeException(\n\t\t\t\t\"The parameter '%s' of method '%s' refers to a non-existent schema '%s'\"\n\t\t\t\t\t\t.formatted(param.name(), method.name(), param.type()));\n\t\t}\n\t\tif (type == TraceObject.class) {\n\t\t\t// The method cannot impose any further restriction. It must accept any object.\n\t\t\treturn sch == PrimitiveTraceObjectSchema.OBJECT;\n\t\t}\n\t\telse if (TraceObjectInterface.class.isAssignableFrom(type)) {\n\t\t\tif (path == null) {\n\t\t\t\treturn sch.getInterfaces().contains(type);\n\t\t\t}\n\t\t\tKeyPath found =\n\t\t\t\trootSchema.searchForSuitable(type.asSubclass(TraceObjectInterface.class), path);\n\t\t\tif (found == null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn sch == rootSchema.getSuccessorSchema(path);\n\t\t}","sourceCodeStart":592,"sourceCodeEnd":628,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiTarget.java#L592-L628","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"SchemaContext ctx = rootSchema.getContext();\nif (ctx.getSchemaOrNull(param.type()) == null) {\n    throw new IllegalStateException(\"unknown schema: \" + param.type());\n}","typeGuard":"boolean schemaExists(TraceObjectSchema root, SchemaName name) {\n    return root.getContext().getSchemaOrNull(name) != null;\n}","tryCatchPattern":null,"preventionTips":["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."],"tags":["schema","trace-rmi","configuration","remote-method"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}