NationalSecurityAgency/ghidra · error · LoadException

Encountered too many errors with this trace

Error message

Encountered too many errors with this trace

What it means

LoadException('Encountered too many errors with this trace') from TenetPlusPlusLoader once errorCount >= ERROR_THRESHOLD (static final 10). Inside the do/while read loop, each line where parseRegisterOperations returns false increments errorCount; the threshold check fires after the per-line parse block. It aborts after repeated parse failures rather than on the first bad line.

Source

Thrown at Ghidra/Debug/Debugger-importers/src/main/java/ghidra/app/util/opinion/TenetPlusPlusLoader.java:450

											TraceMemoryFlag.EXECUTE, TraceMemoryFlag.WRITE);
							}

							addModuleEventsToSnap(trace, snap, modulesToLoad, modulesToUnload);

							curIp = Long.parseLong(ipMatcher.group(1), 16);

							if (parseRegisterOperations(log, trace, traceThread, snap, curIp, line,
								lineNumber, numLines, monitor)) {
								parseMemoryOperations(trace, snap, curIp, line, lineNumber,
									numLines, monitor);
							}
							else {
								errorCount++;
							}
						}

						if (errorCount >= ERROR_THRESHOLD) {
							throw new LoadException("Encountered too many errors with this trace");
						}

						lineNumber++;

						line = reader.readLine();
					}
					while (line != null);
				}
				catch (final CancelledException e) {
					throw e;
				}
				catch (final Exception e) {
					throw new LoadException(e);
				}
			}
		}
		return trace;
	}

View on GitHub (pinned to d5f144c24d)

Solutions

  1. Inspect the trace around the failing lines to confirm the Tenet++ format and IP/register syntax.
  2. Ensure the associated Program is the exact target the trace was recorded against (matching address space and registers).
  3. Re-record/re-export the trace if it is incomplete or corrupt.
  4. Check the MessageLog for the specific lines logged before the threshold to identify the first failure pattern.
Defensive patterns

Strategy: validation

Validate before calling

if (errorCount >= TenetPlusPlusLoader.ERROR_THRESHOLD) {
    // inspect MessageLog for the first failing lines before re-importing
}

Try / catch

try {
    loader.load(settings);
} catch (LoadException e) {
    if (e.getMessage().contains("too many errors")) {
        // verify trace integrity and the associated program
    }
}

Prevention

When it happens

Trigger: Loading a Tenet++ trace where 10+ lines fail register-operation parsing (parseRegisterOperations(log, trace, traceThread, snap, curIp, line, lineNumber, numLines, monitor) returns false), so parseMemoryOperations is skipped and errorCount grows to the threshold.

Common situations: Malformed/corrupt Tenet++ trace; wrong associated Program (mismatched language/compiler spec); format written by an incompatible recorder version; encoding issues altering numeric parsing of curIp or register fields.

Related errors


AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14). Data as JSON: /api/errors/d5c364d18662fb1b. Report an issue: GitHub.