llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: None (jimingham) <details> <summary>Changes</summary> But one made in a situation where that's impossible might only have an error, and no symbol context, so that's not necessarily true. Check for the target's validity before using it. Fixes issue #<!-- -->93313 --- Full diff: https://github.com/llvm/llvm-project/pull/93880.diff 2 Files Affected: - (modified) lldb/source/DataFormatters/FormatManager.cpp (+7-1) - (modified) lldb/test/API/python_api/run_locker/TestRunLocker.py (+3) ``````````diff diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index d7ba5b4b70c94..60765952760a2 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -176,8 +176,14 @@ void FormatManager::GetPossibleMatches( FormattersMatchCandidate::Flags current_flags, bool root_level) { compiler_type = compiler_type.GetTypeForFormatters(); ConstString type_name(compiler_type.GetTypeName()); + // A ValueObject that couldn't be made correctly won't necessarily have a + // target. We aren't going to find a formatter in this case anyway, so we + // should just exit. + TargetSP target_sp = valobj.GetTargetSP(); + if (!target_sp) + return; ScriptInterpreter *script_interpreter = - valobj.GetTargetSP()->GetDebugger().GetScriptInterpreter(); + target_sp->GetDebugger().GetScriptInterpreter(); if (valobj.GetBitfieldBitSize() > 0) { StreamString sstring; sstring.Printf("%s:%d", type_name.AsCString(), valobj.GetBitfieldBitSize()); diff --git a/lldb/test/API/python_api/run_locker/TestRunLocker.py b/lldb/test/API/python_api/run_locker/TestRunLocker.py index 4e0dd26bff70d..2f6892c6cbbc1 100644 --- a/lldb/test/API/python_api/run_locker/TestRunLocker.py +++ b/lldb/test/API/python_api/run_locker/TestRunLocker.py @@ -85,6 +85,9 @@ def runlocker_test(self, stop_at_entry): # you aren't supposed to do while running, and that we get some # actual error: val = target.EvaluateExpression("SomethingToCall()") + # There was a bug [#93313] in the printing that would cause repr to crash, so I'm + # testing that separately. + self.assertIn("can't evaluate expressions when the process is running", repr(val), "repr works") error = val.GetError() self.assertTrue(error.Fail(), "Failed to run expression") self.assertIn( `````````` </details> https://github.com/llvm/llvm-project/pull/93880 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits