[Lldb-commits] [PATCH] D119297: "thread until": make sure the current function is valid before asking it questions
Jim Ingham via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 8 15:31:35 PST 2022
jingham created this revision.
jingham added a reviewer: JDevlieghere.
jingham requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
Thread until was assuming that if you have debug information, you will have a function. Apparently some hand-crafted cross-library stubs can have debug information but no functions, and that was causing lldb to crash. This patch just adds a check for the function as well, and we error out if we don't have a function. The patch is sufficiently obvious I don't think it warrants the effort to make one of these odd constructs.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D119297
Files:
lldb/source/Commands/CommandObjectThread.cpp
Index: lldb/source/Commands/CommandObjectThread.cpp
===================================================================
--- lldb/source/Commands/CommandObjectThread.cpp
+++ lldb/source/Commands/CommandObjectThread.cpp
@@ -960,7 +960,14 @@
uint32_t index_ptr = 0, end_ptr;
std::vector<addr_t> address_list;
- // Find the beginning & end index of the
+ // Find the beginning & end index of the function, but first make
+ // sure it is valid:
+ if (!sc.function) {
+ result.AppendErrorWithFormat("Have debug information but no "
+ "function info - can't get until range.");
+ return false;
+ }
+
AddressRange fun_addr_range = sc.function->GetAddressRange();
Address fun_start_addr = fun_addr_range.GetBaseAddress();
line_table->FindLineEntryByAddress(fun_start_addr, function_start,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119297.406995.patch
Type: text/x-patch
Size: 918 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220208/61a1447c/attachment.bin>
More information about the lldb-commits
mailing list