NationalSecurityAgency/ghidra · error · LSHException
Could not perform getexeinfo: {}
Error message
Could not perform getexeinfo: {} What it means
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.
Source
Thrown at Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BulkSignatures.java:701
String archFilter, String compilerFilter, String sortCol, boolean incFakes)
throws IOException, LSHException {
establishQueryServerConnection(false);
ExeTableOrderColumn sortEnum;
if (sortCol != null) {
sortEnum = ExeTableOrderColumn.valueOf(sortCol.toUpperCase());
}
else {
sortEnum = ExeTableOrderColumn.MD5;
}
QueryExeInfo exeQuery = new QueryExeInfo(limit, md5Filter, exeNameFilter, archFilter,
compilerFilter, sortEnum, incFakes);
ResponseExe response = exeQuery.execute(querydb);
if (response == null) {
BSimError lastError = querydb.getLastError();
throw new LSHException("Could not perform getexeinfo: " + lastError.message);
}
return response.records;
}
/**
* Retrieves the number of records in the database that match the filter criteria.
*
* @param md5Filter the MD5 value must contain this
* @param exeNameFilter the executable name must contain this
* @param archFilter the architecture type must match this
* @param compilerFilter the compiler type must match this
* @param incFakes if true, include executables with an MD5 that we created
* @return the number of executables matching the filter criteria
* @throws IOException if there's a problem establishing the database connection
*/
public int getCount(String md5Filter, String exeNameFilter, String archFilter,
String compilerFilter, boolean incFakes) throws IOException {View on GitHub (pinned to d5f144c24d)
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.
Example fix
// before bsim.getExecutableRecords(100, null, null, null, null, "BOGUS", false); // bad sort -> LSHException // after // omit sortCol (defaults to MD5) or pass a valid ExeTableOrderColumn name bsim.getExecutableRecords(100, null, null, null, null, null, false);
Defensive patterns
Strategy: validation
Validate before calling
// validate sort column before querying
if (sortCol != null) {
try { ExeTableOrderColumn.valueOf(sortCol.toUpperCase()); }
catch (IllegalArgumentException e) { sortCol = null; /* default MD5 */ }
}
bsim.getExecutableRecords(limit, md5Filter, exeNameFilter, archFilter, compilerFilter, sortCol, incFakes); Try / catch
try {
bsim.getExecutableRecords(limit, md5, name, arch, comp, sortCol, fakes);
} catch (LSHException e) {
// message: "Could not perform getexeinfo: <server>"; sanitize filters/sort and retry
} Prevention
- Validate the sort column against ExeTableOrderColumn before querying.
- Sanitize/limit filter strings.
- Retry once on transient connection failures.
When it happens
Trigger: 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.
Common situations: Invalid sort column name, malformed filter values, transient connection loss mid-query, backend resource error, version/protocol skew.
Related errors
- {getType()}scripts cannot be used for context [{context.name
- Unknown script name {scriptSource}
- Could not resolve filter specifying executable:
- Could not resolve filter specifying function: [
- Error querying vectorid:
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/3d90da83dcaaf5d6.
Report an issue: GitHub.