NationalSecurityAgency/ghidra · error · IllegalArgumentException
name cannot be empty string
Error message
name cannot be empty string
What it means
Thrown by TraceEquateManager.validateName: the name is non-null but zero-length. Equates require a non-empty identifier, so an empty string is rejected (after the null check, before the whitespace check).
Source
Thrown at Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/symbol/TraceEquateManager.java:36
import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import ghidra.program.model.address.AddressSpace;
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);View on GitHub (pinned to d5f144c24d)
Solutions
- Provide a non-empty name (e.g. the constant's textual representation).
- Treat empty as absent: skip creation when name.trim().isEmpty().
- Derive a fallback name from the value.
Example fix
// before equateMgr.create(name.trim(), value); // name.trim() == "" // after String n = name.trim(); if (n.isEmpty()) n = "0x" + Long.toHexString(value); equateMgr.create(n, value);
Defensive patterns
Strategy: validation
Validate before calling
String n = name == null ? null : name.trim();
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
- Trim and reject empty names before creating an equate.
- Derive a constant name from the value when none is supplied.
When it happens
Trigger: Calling TraceEquateManager.create(name, value) (or any validating operation) with a name that is "".
Common situations: A UI/import that yields an empty string for an unnamed equate; trimming a whitespace-only name to empty; defaulting to "" instead of a real constant name.
Related errors
- name cannot be null
- name cannot contain whitespace
- 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/b626f650693010c4.
Report an issue: GitHub.