NationalSecurityAgency/ghidra · error · IllegalArgumentException
name cannot contain whitespace
Error message
name cannot contain whitespace
What it means
Thrown by TraceEquateManager.validateName: the name contains one or more whitespace characters (matched by \s+). Equate names must be single tokens with no internal/leading/trailing whitespace so they can be used as identifiers in disassembly annotations.
Source
Thrown at Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/symbol/TraceEquateManager.java:41
import ghidra.trace.model.stack.TraceStackFrame;
import ghidra.trace.model.thread.TraceThread;
import ghidra.util.exception.DuplicateNameException;
/**
* TODO: Document me
*/
public interface TraceEquateManager extends TraceEquateOperations {
static void validateName(String name) throws IllegalArgumentException {
if (name == null) {
throw new IllegalArgumentException("name cannot be null");
}
if (name.length() == 0) {
throw new IllegalArgumentException("name cannot be empty string");
}
Pattern whitespace = Pattern.compile("\\s+");
Matcher matcher = whitespace.matcher(name);
if (matcher.find()) {
throw new IllegalArgumentException("name cannot contain whitespace");
}
}
TraceEquateSpace getEquateSpace(AddressSpace space, boolean createIfAbsent);
TraceEquateSpace getEquateRegisterSpace(TraceThread thread, boolean createIfAbsent);
TraceEquateSpace getEquateRegisterSpace(TraceStackFrame frame, boolean createIfAbsent);
TraceEquate create(String name, long value)
throws DuplicateNameException, IllegalArgumentException;
TraceEquate getByName(String name);
TraceEquate getByKey(long key);
Collection<? extends TraceEquate> getByValue(long value);
View on GitHub (pinned to d5f144c24d)
Solutions
- Strip whitespace: name = name.replaceAll("\\s+", ""); (or reject and prompt the user).
- Replace internal separators with underscores: name = name.trim().replaceAll("\\s+", "_").
- Validate up front and surface a clear error to the user before calling create.
Example fix
// before
equateMgr.create("MY CONST", value); // contains space
// after
String name = "MY CONST".replaceAll("\\s+", "_"); // "MY_CONST"
equateMgr.create(name, value); Defensive patterns
Strategy: validation
Validate before calling
String n = name == null ? null : name.replaceAll("\\s+", "_");
if (n == null || n.isEmpty()) { n = "0x" + Long.toHexString(value); }
equateMgr.create(n, value); Type guard
static boolean validName(String name) { return name != null && !name.isEmpty() && !name.matches(".*\\s.*"); } Prevention
- Strip or replace whitespace in equate names before creating.
- Use underscores as internal separators, never spaces.
When it happens
Trigger: Calling TraceEquateManager.create(name, value) with a name containing spaces, tabs, newlines, etc. (e.g. "MY CONST" or " 0x10").
Common situations: Copy-pasting constant names that include spaces; not trimming names; UI input with trailing whitespace; names derived from free-form strings.
Related errors
- name cannot be null
- name cannot be empty string
- operandIndex
- Memory addresses cannot be associated with a thread
- Given namespace is not in this trace
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/9fd220010ba4d6dd.
Report an issue: GitHub.