NationalSecurityAgency/ghidra · error · IOException
Unsupported content type: {}
Error message
Unsupported content type: {} What it means
getImmutableObject opens a FolderItem as an immutable DBTrace. It checks the item's stored contentType equals "Trace"; a different stored type (e.g. "Program", "DataTypeArchive", or a legacy/unknown type) means the file is not a trace database and cannot be opened by this handler.
Source
Thrown at Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTraceContentHandler.java:62
private static final DBTraceLinkContentHandler LINK_HANDLER = new DBTraceLinkContentHandler();
@Override
public long createFile(FileSystem fs, FileSystem userfs, String path, String name,
DomainObject obj, TaskMonitor monitor)
throws IOException, InvalidNameException, CancelledException {
if (!(obj instanceof DBTrace trace)) {
throw new IOException("Unsupported domain object: " + obj.getClass().getName());
}
return createFile(trace, TRACE_CONTENT_TYPE, fs, path, name, monitor);
}
@Override
public DBTrace getImmutableObject(FolderItem item, Object consumer, int version,
int minChangeVersion, TaskMonitor monitor)
throws IOException, CancelledException, VersionException {
String contentType = item.getContentType();
if (contentType != null && !contentType.equals(TRACE_CONTENT_TYPE)) {
throw new IOException("Unsupported content type: " + contentType);
}
DatabaseItem dbItem = (DatabaseItem) item;
ManagedBufferFile bf = null;
DBHandle dbh = null;
DBTrace trace = null;
boolean success = false;
try {
bf = dbItem.open(version, minChangeVersion);
dbh = new DBHandle(bf);
OpenMode openMode = OpenMode.IMMUTABLE;
trace = new DBTrace(dbh, openMode, monitor, consumer);
getTraceChangeSet(trace, bf);
success = true;
return trace;
}
catch (VersionException | IOException | CancelledException e) {
throw e;
}View on GitHub (pinned to d5f144c24d)
Solutions
- Route the item to the content handler matching item.getContentType() (use ContentHandler.getHandler for the type).
- If the file genuinely should be a trace, recreate it as a trace file.
- Verify item.getContentType() == DBTraceContentHandler.TRACE_CONTENT_TYPE before calling getImmutableObject.
Example fix
// before
DBTrace t = handler.getImmutableObject(item, consumer, ver, minVer, monitor);
// after
if (!DBTraceContentHandler.TRACE_CONTENT_TYPE.equals(item.getContentType())) {
throw new IOException("Item is not a trace: " + item.getContentType());
}
DBTrace t = handler.getImmutableObject(item, consumer, ver, minVer, monitor); Defensive patterns
Strategy: validation
Validate before calling
if (!DBTraceContentHandler.TRACE_CONTENT_TYPE.equals(item.getContentType())) {
throw new IOException("Item is not a trace: " + item.getContentType());
}
DBTrace t = handler.getImmutableObject(item, consumer, ver, minVer, monitor); Type guard
static boolean isTraceItem(FolderItem item) {
return DBTraceContentHandler.TRACE_CONTENT_TYPE.equals(item.getContentType());
} Try / catch
try {
return handler.getImmutableObject(item, consumer, ver, minVer, monitor);
} catch (IOException e) {
if (e.getMessage().contains("Unsupported content type")) {
// dispatch to the handler for item.getContentType()
} else throw e;
} Prevention
- Always dispatch open calls via ContentHandler.getHandler(item.getContentType()).
- Verify contentType before opening, especially for imported/shared files.
- Guard against null contentType by treating it as incompatible unless explicitly expected.
When it happens
Trigger: Calling getImmutableObject on a FolderItem whose contentType is not "Trace" — opening a Program file via the trace handler, or a corrupted/mislabeled item.
Common situations: Content-handler misrouting. A file renamed/converted so its contentType no longer matches. Version upgrade leaving a stale contentType. Mixed shared-project content.
Related errors
- Unsupported domain object: {}
- only DBTrace objects are supported
- File imported is not a Trace: {traceName}
- Address does not belong to a memory in the trace
- Address is not associated with a breakpoint container
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/2f9490153a2537a7.
Report an issue: GitHub.