astrelsky / Ghidra-Cpp-Class-Analyzer

Ghidra C++ Class and Run Time Type Information Analyzer
MIT License
633 stars 46 forks source link

NullPointerException in AbstractCppClassAnalyzer while analyzing libstdc++ #15

Closed TheAifam5 closed 4 years ago

TheAifam5 commented 4 years ago

C&P from: https://github.com/NationalSecurityAgency/ghidra/issues/1750

Describe the bug Importing 64-bit libstdc++.so.6 on ArchLinux from /usr/lib/libstdc++.so.6 throws a single dialog with a text java.lang.NullPointerException with no callstack or any useful error information. In Attachments section I added the log with the callstack.

To Reproduce Steps to reproduce the behavior:

  1. Load libstdc++.so.6
  2. Analyze with default options + GCC RTTI (Fundamental Types) + C++ Class Analyzer (Fill Class Fields and Locate Constructors)

Expected behavior IMHO should show more detailed error message like every other plugin does when crashing (I mean the expand button to see more). I don't know if that affected the analysis but such thing should not exists.

Attachments ArchLinux package containing that file (gcc-libs 9.3.0-1): https://www.archlinux.org/packages/core/x86_64/gcc-libs/

2020-04-12  04:09:12    ERROR   (MessageLog) Exception appended to MessageLog java.lang.NullPointerException
            at ghidra.app.plugin.prototype.CppCodeAnalyzerPlugin.AbstractCppClassAnalyzer.analyzeDestructor(AbstractCppClassAnalyzer.java:241)
            at ghidra.app.plugin.prototype.CppCodeAnalyzerPlugin.AbstractCppClassAnalyzer.fillStructures(AbstractCppClassAnalyzer.java:186)
            at ghidra.app.plugin.prototype.CppCodeAnalyzerPlugin.AbstractCppClassAnalyzer.added(AbstractCppClassAnalyzer.java:108)
            at ghidra.app.plugin.core.analysis.AnalysisScheduler.runAnalyzer(AnalysisScheduler.java:190)
            at ghidra.app.plugin.core.analysis.AnalysisTask.applyTo(AnalysisTask.java:39)
            at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisTaskWrapper.run(AutoAnalysisManager.java:685)
            at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:785)
            at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:664)
            at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:629)
            at ghidra.app.plugin.core.analysis.AnalysisBackgroundCommand.applyTo(AnalysisBackgroundCommand.java:58)
            at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:101)
            at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:315)
            at java.base/java.lang.Thread.run(Thread.java:830)

Environment:

astrelsky commented 4 years ago

I'm working on this now. Will push the fix shortly.

TheAifam5 commented 4 years ago

No need to hurry :D Thank you for your active development on this.