{"record":{"id":"3d90da83dcaaf5d6","repo":"NationalSecurityAgency/ghidra","slug":"could-not-perform-getexeinfo","errorCode":null,"errorMessage":"Could not perform getexeinfo: {}","messagePattern":"Could not perform getexeinfo: (.+?)","errorType":"exception","errorClass":"LSHException","httpStatus":null,"severity":"error","filePath":"Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BulkSignatures.java","lineNumber":701,"sourceCode":"\t\t\tString archFilter, String compilerFilter, String sortCol, boolean incFakes)\n\t\t\tthrows IOException, LSHException {\n\n\t\testablishQueryServerConnection(false);\n\t\tExeTableOrderColumn sortEnum;\n\t\tif (sortCol != null) {\n\t\t\tsortEnum = ExeTableOrderColumn.valueOf(sortCol.toUpperCase());\n\t\t}\n\t\telse {\n\t\t\tsortEnum = ExeTableOrderColumn.MD5;\n\t\t}\n\n\t\tQueryExeInfo exeQuery = new QueryExeInfo(limit, md5Filter, exeNameFilter, archFilter,\n\t\t\tcompilerFilter, sortEnum, incFakes);\n\n\t\tResponseExe response = exeQuery.execute(querydb);\n\t\tif (response == null) {\n\t\t\tBSimError lastError = querydb.getLastError();\n\t\t\tthrow new LSHException(\"Could not perform getexeinfo: \" + lastError.message);\n\t\t}\n\n\t\treturn response.records;\n\t}\n\n\t/**\n\t * Retrieves the number of records in the database that match the filter criteria.\n\t * \n\t * @param md5Filter the MD5 value must contain this\n\t * @param exeNameFilter the executable name must contain this\n\t * @param archFilter the architecture type must match this\n\t * @param compilerFilter the compiler type must match this\n\t * @param incFakes if true, include executables with an MD5 that we created\n\t * @return the number of executables matching the filter criteria\n\t * @throws IOException if there's a problem establishing the database connection\n\t */\n\tpublic int getCount(String md5Filter, String exeNameFilter, String archFilter,\n\t\t\tString compilerFilter, boolean incFakes) throws IOException {","sourceCodeStart":683,"sourceCodeEnd":719,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BulkSignatures.java#L683-L719","documentation":"Thrown in getExecutableRecords when QueryExeInfo.execute(querydb) returns null, i.e. the server could not answer the executable-info query. BulkSignatures rethrows the BSimError message as 'Could not perform getexeinfo: <message>' (LSHException). This wraps any null-response failure from the metadata query path.","triggerScenarios":"Querying exe info while the connection drops, the backend errors on the filter/sort parameters, or the server reports a Fatal error for the query.","commonSituations":"Invalid sort column name, malformed filter values, transient connection loss mid-query, backend resource error, version/protocol skew.","solutions":["Read the message for the specific server reason.","Validate the sort column against ExeTableOrderColumn and sanitize filters before querying.","Retry once for transient connection issues.","Confirm client/server version compatibility."],"exampleFix":"// before\nbsim.getExecutableRecords(100, null, null, null, null, \"BOGUS\", false);  // bad sort -> LSHException\n\n// after\n// omit sortCol (defaults to MD5) or pass a valid ExeTableOrderColumn name\nbsim.getExecutableRecords(100, null, null, null, null, null, false);","handlingStrategy":"validation","validationCode":"// validate sort column before querying\nif (sortCol != null) {\n    try { ExeTableOrderColumn.valueOf(sortCol.toUpperCase()); }\n    catch (IllegalArgumentException e) { sortCol = null; /* default MD5 */ }\n}\nbsim.getExecutableRecords(limit, md5Filter, exeNameFilter, archFilter, compilerFilter, sortCol, incFakes);","typeGuard":null,"tryCatchPattern":"try {\n    bsim.getExecutableRecords(limit, md5, name, arch, comp, sortCol, fakes);\n} catch (LSHException e) {\n    // message: \"Could not perform getexeinfo: <server>\"; sanitize filters/sort and retry\n}","preventionTips":["Validate the sort column against ExeTableOrderColumn before querying.","Sanitize/limit filter strings.","Retry once on transient connection failures."],"tags":["bsim","query","getexeinfo","lshexception"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}