From 92b1dd733fb7506d2b0887920295065300a50f6c Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 10 Jul 2023 16:09:23 -0400 Subject: [PATCH] GP-0 corrected StackUnwinderTest failures --- .../app/plugin/core/debug/stack/AnalysisUnwoundFrame.java | 5 ++++- .../app/plugin/core/debug/stack/UnwindStackCommand.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/AnalysisUnwoundFrame.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/AnalysisUnwoundFrame.java index 1c583fd6d7..ac495428de 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/AnalysisUnwoundFrame.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/AnalysisUnwoundFrame.java @@ -221,9 +221,12 @@ public class AnalysisUnwoundFrame extends AbstractUnwoundFrame { * Generate the structure for {@link #resolveStructure(int)} * * @param prevParamSize the number of bytes occupied by the parameters for the next frame down. - * @return the generated structure + * @return the generated structure or null if {@link UnwindInfo info} contains an error. */ protected Structure generateStructure(int prevParamSize) { + if (info.error() != null) { + return null; + } FrameStructureBuilder builder = new FrameStructureBuilder(language, staticPcVal, info, prevParamSize); return builder.build(StackUnwinder.FRAMES_PATH, "frame_" + pcVal.toString(false), diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindStackCommand.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindStackCommand.java index 73ad2c2071..61849a178d 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindStackCommand.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/stack/UnwindStackCommand.java @@ -46,7 +46,7 @@ public class UnwindStackCommand extends TypedBackgroundCommand { for (AnalysisUnwoundFrame frame : unwinder.frames(where.frame(0), monitor)) { UnwindInfo info = frame.getUnwindInfo(); - if (info != null) { + if (info != null && info.error() == null) { frame.applyToListing(prevParamSize, monitor); prevParamSize = info.computeParamSize(); }