NationalSecurityAgency/ghidra · error · InvalidNameException
Name must be at least one character long: ${name}
Error message
Name must be at least one character long: ${name} What it means
DBTraceDataTypeManager.setName rejects null or zero-length names with InvalidNameException("Name must be at least one character long"). The trace name must be non-empty because it propagates to trace.setName and triggers a category-renamed event on the root category.
Source
Thrown at Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java:105
@Override
public boolean allowsDefaultBuiltInSettings() {
return true;
}
@Override
public void invalidateCache(boolean all) {
super.invalidateCache();
}
@Override
public String getName() {
return trace.getName();
}
@Override
public void setName(String name) throws InvalidNameException {
if (name == null || name.length() == 0) {
throw new InvalidNameException("Name must be at least one character long: " + name);
}
trace.setName(name);
categoryRenamed(CategoryPath.ROOT, getCategory(CategoryPath.ROOT));
}
@Override
public InternalTracePlatform getPlatform() {
return platform;
}
@Override
public void sourceArchiveChanged(UniversalID sourceArchiveID) {
super.sourceArchiveChanged(sourceArchiveID);
trace.sourceArchiveChanged(sourceArchiveID);
}
@OverrideView on GitHub (pinned to d5f144c24d)
Solutions
- Validate name != null && !name.trim().isEmpty() before calling setName.
- Provide a default non-empty name when the input is blank.
- Reject empty submissions at the UI/controller boundary.
Example fix
// before
dtm.setName(newName);
// after
if (newName == null || newName.trim().isEmpty()) {
throw new InvalidNameException("name required");
}
dtm.setName(newName.trim()); Defensive patterns
Strategy: validation
Validate before calling
if (name == null || name.trim().isEmpty()) {
throw new InvalidNameException("name required");
}
dtm.setName(name.trim()); Type guard
static boolean isValidTraceName(String n) { return n != null && !n.trim().isEmpty(); } Try / catch
try { dtm.setName(name); }
catch (InvalidNameException e) { /* prompt user for a non-empty name */ } Prevention
- Disable submit actions while the name field is blank.
- Trim and validate names at the controller boundary.
- Provide a sensible default name fallback.
When it happens
Trigger: Calling trace.getDataTypeManager().setName("") or setName(null); wiring a UI text field that can submit an empty string.
Common situations: "Save As" / rename dialogs allowing blank input; programmatic rename using an uninitialized field; trimming whitespace yielding an empty string.
Related errors
- Invalid number of elements specified: {}
- pos cannot be less than zero
- %s: unknown demangling style `%s'
- Max ascii string size is %d you provided: %lu chars. Exiting
- need even-number of ascii chars for byte-stream: (offset: %0
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/d7b5ed87b528faeb.
Report an issue: GitHub.