BTIGhidra
BTIGhidra copied to clipboard
Type Interference - Cannot invoke "ghidra.program.model.data.DataType.getLength()" because "dt" is null
(These messages are also written to the application log file)
Cannot invoke "ghidra.program.model.data.DataType.getLength()" because "dt" is null
java.lang.NullPointerException: Cannot invoke "ghidra.program.model.data.DataType.getLength()" because "dt" is null
at binary_type_inference.TypeLattice.FieldMember(TypeLattice.java:165)
at binary_type_inference.TypeLattice.get_ptr_dtv_for_type(TypeLattice.java:176)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:190)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:195)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_datatype_recursive(TypeLattice.java:294)
at binary_type_inference.TypeLattice.representation_for_structure(TypeLattice.java:228)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:264)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:195)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_datatype_recursive(TypeLattice.java:294)
at binary_type_inference.TypeLattice.representation_for_structure(TypeLattice.java:228)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:264)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_datatype_recursive(TypeLattice.java:294)
at binary_type_inference.TypeLattice.representation_for_structure(TypeLattice.java:228)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:264)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:195)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_datatype_recursive(TypeLattice.java:294)
at binary_type_inference.TypeLattice.representation_for_structure(TypeLattice.java:228)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:264)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:195)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_datatype_recursive(TypeLattice.java:294)
at binary_type_inference.TypeLattice.representation_for_structure(TypeLattice.java:228)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:264)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.representation_for_pointer(TypeLattice.java:195)
at binary_type_inference.TypeLattice.representation_for_datatype_no_memo(TypeLattice.java:261)
at binary_type_inference.TypeLattice.representation_for_datatype(TypeLattice.java:282)
at binary_type_inference.TypeLattice.constraintsForParam(TypeLattice.java:123)
at binary_type_inference.TypeLattice.constraintsForSignature(TypeLattice.java:302)
at binary_type_inference.TypeLattice.lambda$collectSignatureConstraints$0(TypeLattice.java:320)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1858)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:657)
at binary_type_inference.TypeLattice.collectSignatureConstraints(TypeLattice.java:321)
at binary_type_inference.TypeLattice.getOutputBuilder(TypeLattice.java:376)
at binary_type_inference.BinaryTypeInference.produceArtifacts(BinaryTypeInference.java:287)
at binary_type_inference.BinaryTypeInference.run(BinaryTypeInference.java:475)
at binary_type_inference.TypeAnalyzer.added(TypeAnalyzer.java:213)
at ghidra.app.plugin.core.analysis.OneShotAnalysisCommand.applyTo(OneShotAnalysisCommand.java:48)
at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisTaskWrapper.run(AutoAnalysisManager.java:686)
at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:786)
at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:665)
at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:630)
at ghidra.app.plugin.core.analysis.AnalysisBackgroundCommand.applyTo(AnalysisBackgroundCommand.java:58)
at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:103)
at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:334)
at java.base/java.lang.Thread.run(Thread.java:1583)
System Information Platform: Gentoo Linux Ghidra 11.0.1 Java: openjdk-bin-21.0.2_p13 BTIGhidra version: 0.0.6
I'm also running into this issue.
The doc for Pointer.getDataType() explicitly states that it can return null, so this specific code needs to handle this somehow (and it's not an issue else where that that accidentally introduced the null value)
public interface Pointer extends DataType {
[...]
/**
* Returns the "pointed to" dataType
* @return referenced datatype (may be null)
*/
DataType getDataType();
https://github.com/NationalSecurityAgency/ghidra/blob/c014e6851fd6da1676949a42891d5f884e487e75/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/Pointer.java#L30-L34