NationalSecurityAgency / ghidra

Ghidra is a software reverse engineering (SRE) framework
https://www.nsa.gov/ghidra
Apache License 2.0
50.96k stars 5.81k forks source link

Open failed: Unexpected Node Type (8) found, expecting LongKeyNode #6945

Open devingDev opened 1 week ago

devingDev commented 1 week ago

Describe the bug I was renaming some symbols, parameters and function signatures, then i check-in and reopened the code browser but it gave me this error message each time. I even deleted the last "commit" and checked out and it still gives me this error. Restarting ghidra does not help either. Code browser is also just empty then.

Screenshots image

Environment (please complete the following information):

Open failed: Unexpected Node Type (8) found, expecting LongKeyNode
java.io.IOException: Open failed: Unexpected Node Type (8) found, expecting LongKeyNode
    at ghidra.program.database.ProgramContentHandler.getDomainObject(ProgramContentHandler.java:209)
    at ghidra.program.database.ProgramContentHandler.getDomainObject(ProgramContentHandler.java:42)
    at ghidra.framework.data.GhidraFileData.getDomainObject(GhidraFileData.java:563)
    at ghidra.framework.data.GhidraFile.getDomainObject(GhidraFile.java:231)
    at ghidra.app.util.task.ProgramOpener.openFileMaybeUgrade(ProgramOpener.java:244)
    at ghidra.app.util.task.ProgramOpener.openNormal(ProgramOpener.java:146)
    at ghidra.app.util.task.ProgramOpener.openProgram(ProgramOpener.java:138)
    at ghidra.app.util.task.ProgramOpener.openProgram(ProgramOpener.java:97)
    at ghidra.app.util.task.OpenProgramTask.run(OpenProgramTask.java:144)
    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:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: ghidra.util.exception.AssertException: Unexpected Node Type (8) found, expecting LongKeyNode
    at db.NodeMgr.getLongKeyNode(NodeMgr.java:273)
    at db.Table$LongKeyRecordIterator.<init>(Table.java:2083)
    at db.Table$LongKeyRecordIterator.<init>(Table.java:2056)
    at db.Table.iterator(Table.java:1830)
    at ghidra.program.database.map.AddressMapDBAdapterV1.readAddresses(AddressMapDBAdapterV1.java:66)
    at ghidra.program.database.map.AddressMapDBAdapterV1.<init>(AddressMapDBAdapterV1.java:61)
    at ghidra.program.database.map.AddressMapDBAdapter.getAdapter(AddressMapDBAdapter.java:45)
    at ghidra.program.database.map.AddressMapDB.<init>(AddressMapDB.java:190)
    at ghidra.program.database.ProgramDB.createManagers(ProgramDB.java:1639)
    at ghidra.program.database.ProgramDB.<init>(ProgramDB.java:351)
    at ghidra.program.database.ProgramContentHandler.getDomainObject(ProgramContentHandler.java:185)
    ... 13 more

Build Date: 2024-Jul-09 1157 EDT Ghidra Version: 11.1.2 Java Home: C:\Program Files\Eclipse Adoptium\jdk-21.0.3.9-hotspot JVM Version: Eclipse Adoptium 21.0.3 OS: Windows 10 10.0 amd64

Additional context We are using a shared project, so I'm not sure where this went wrong.

I'm not sure what other info I can give or you need but I will try my best to do so.

ghidra1 commented 1 week ago

Unfortunetly, when a DB corruption occurs there is no way to identify the cause or correct the DB state. It is also difficult to identify the point in time when the corruption occured. You could try to examine your log files for stacktraces caused by severe errors such as out-of-memory exceptions which can have unpredictable consequences.