Skip to content

Unexpected Node Type (9) found, expecting LongKeyNode in diff tool #8980

@axd1x8a

Description

@axd1x8a

Describe the bug
When I use the diff tool, an exception is thrown:

2026-02-17 22:11:50 ERROR (CreateDiffTask) Task Error: Checking Program Differences - Uncaught Exception: ghidra.util.exception.AssertException: Unexpected Node Type (9) 
found, expecting LongKeyNode ghidra.util.exception.AssertException: Unexpected Node Type (9) found, expecting LongKeyNode
	at db.NodeMgr.getLongKeyNode(NodeMgr.java:273)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:414)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:416)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:416)
	at db.Table.getRecord(Table.java:701)
	at ghidra.program.database.references.ToAdapterV1.getRefList(ToAdapterV1.java:76)
	at ghidra.program.database.references.ReferenceDBManager.getToRefs(ReferenceDBManager.java:1642)
	at ghidra.program.database.references.ReferenceDBManager.isExternalEntryPoint(ReferenceDBManager.java:1560)
	at ghidra.program.database.symbol.SymbolManager.isExternalEntryPoint(SymbolManager.java:1454)
	at ghidra.program.database.symbol.MemorySymbol.isExternalEntryPoint(MemorySymbol.java:73)
	at ghidra.program.util.ProgramDiff$SymbolComparator.isSame(ProgramDiff.java:2090)
	at ghidra.program.util.ProgramDiff$SymbolComparator.isSame(ProgramDiff.java:2079)
	at ghidra.program.util.ProgramDiff$ProgramDiffComparatorImpl.getObjectDiffs(ProgramDiff.java:1986)
	at ghidra.program.util.ProgramDiff.getLabelDifferences(ProgramDiff.java:1440)
	at ghidra.program.util.ProgramDiff.createAddressSet(ProgramDiff.java:974)
	at ghidra.program.util.ProgramDiff.getDifferences(ProgramDiff.java:512)
	at ghidra.program.util.ProgramMergeManager.getFilteredDifferences(ProgramMergeManager.java:147)
	at ghidra.app.plugin.core.diff.DiffController.getFilteredDifferences(DiffController.java:160)
	at ghidra.app.plugin.core.diff.CreateDiffTask.run(CreateDiffTask.java:80)
	at ghidra.util.task.Task.monitoredRun(Task.java:134)
	at ghidra.util.task.TaskRunner.lambda$startTaskThread$0(TaskRunner.java:106)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.base/java.lang.Thread.run(Thread.java:1447)

When I select the functions option only, I can see the differences, but I can't apply all of them:

2026-02-17 22:34:42 ERROR (ApplyDiffCommand) Error Applying Diff: An error occurred while applying differences.
Only some of the differences may have been applied. ghidra.util.exception.AssertException: Unexpected Node Type (9) found, expecting LongKeyNode
	at db.NodeMgr.getLongKeyNode(NodeMgr.java:273)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:414)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:416)
	at db.LongKeyInteriorNode.getLeafNode(LongKeyInteriorNode.java:416)
	at db.Table.getRecord(Table.java:701)
	at ghidra.program.database.references.ToAdapterV1.getRefList(ToAdapterV1.java:76)
	at ghidra.program.database.references.ReferenceDBManager.getToRefs(ReferenceDBManager.java:1642)
	at ghidra.program.database.references.ReferenceDBManager.isExternalEntryPoint(ReferenceDBManager.java:1560)
	at ghidra.program.database.symbol.SymbolManager.isExternalEntryPoint(SymbolManager.java:1454)
	at ghidra.program.database.symbol.MemorySymbol.isExternalEntryPoint(MemorySymbol.java:73)
	at ghidra.program.util.ProgramDiff$SymbolComparator.isSame(ProgramDiff.java:2090)
	at ghidra.program.util.ProgramDiff$SymbolComparator.isSame(ProgramDiff.java:2079)
	at ghidra.program.util.ProgramDiff$ProgramDiffComparatorImpl.getObjectDiffs(ProgramDiff.java:1986)
	at ghidra.program.util.ProgramDiff.getLabelDifferences(ProgramDiff.java:1440)
	at ghidra.program.util.ProgramDiff.createAddressSet(ProgramDiff.java:974)
	at ghidra.program.util.ProgramDiff.getDifferences(ProgramDiff.java:512)
	at ghidra.program.util.ProgramMergeManager.mergeLabels(ProgramMergeManager.java:827)
	at ghidra.program.util.ProgramMergeManager.merge(ProgramMergeManager.java:452)
	at ghidra.program.util.ProgramMergeManager.merge(ProgramMergeManager.java:404)
	at ghidra.app.plugin.core.diff.DiffController.apply(DiffController.java:207)
	at ghidra.app.plugin.core.diff.ApplyDiffCommand.analysisWorkerCallback(ApplyDiffCommand.java:60)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisWorkerCommand.applyTo(AutoAnalysisManager.java:1699)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisWorkerCommand.applyToWithTransaction(AutoAnalysisManager.java:1647)
	at ghidra.app.plugin.core.analysis.AutoAnalysisManager.scheduleWorker(AutoAnalysisManager.java:1355)
	at ghidra.app.plugin.core.diff.ApplyDiffCommand.applyTo(ApplyDiffCommand.java:83)
	at ghidra.app.plugin.core.diff.ApplyDiffCommand.applyTo(ApplyDiffCommand.java:39)
	at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:103)
	at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:347)
	at java.base/java.lang.Thread.run(Thread.java:1447)

I also saw these errors, but I'm not sure if they are related:

2026-02-17 22:27:42 ERROR (ProgramDataTypeManager) java.lang.IllegalAccessException: class ghidra.program.database.data.DataTypeManagerDB cannot access a member of class ghidra.program.model.data.BadDataType with modifiers "private"  
2026-02-17 22:27:42 ERROR (ProgramDataTypeManager) java.lang.IllegalAccessException: class ghidra.program.database.data.DataTypeManagerDB cannot access a member of class ghidra.program.model.data.BadDataType with modifiers "private" 

To Reproduce
Steps to reproduce the behavior:

  1. Copy the program and make some changes to the copy
  2. Use diff tool to diff it with original program
  3. See error

Environment (please complete the following information):

  • OS: windows
  • Java Version: 21
  • Ghidra Version: 12.0.3
  • Ghidra Origin: github releases

Metadata

Metadata

Assignees

Labels

Status: TriageInformation is being gathered

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions