Skip to content

Commit

Permalink
[LLDB][ClangExpression] Prevent nullptr namespace map access during l…
Browse files Browse the repository at this point in the history
…ogging

Some codepaths lead to `namespace_map == nullptr` when we get to
`ClangASTSource::FindCompleteType`. This occurred while debugging
an lldb session that had `settings set target.import-std-module true`.

In that case, with `LLDBLog::Expressions` logging enabled, we would
dereference a `nullptr` and crash.

This commit moves the logging until after we check for `nullptr`.

**Testing**

* Fixed the specific crash I was seeing while debugging an `lldb`
  session with `import-std-module` enabled.

Differential Revision: https://reviews.llvm.org/D130561
  • Loading branch information
Michael137 committed Jul 26, 2022
1 parent 0eb9f18 commit 0a412b3
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,12 @@ TagDecl *ClangASTSource::FindCompleteType(const TagDecl *decl) {
ClangASTImporter::NamespaceMapSP namespace_map =
m_ast_importer_sp->GetNamespaceMap(namespace_context);

LLDB_LOGV(log, " CTD Inspecting namespace map{0} ({1} entries)",
namespace_map.get(), namespace_map->size());

if (!namespace_map)
return nullptr;

LLDB_LOGV(log, " CTD Inspecting namespace map{0} ({1} entries)",
namespace_map.get(), namespace_map->size());

for (const ClangASTImporter::NamespaceMapItem &item : *namespace_map) {
LLDB_LOG(log, " CTD Searching namespace {0} in module {1}",
item.second.GetName(), item.first->GetFileSpec().GetFilename());
Expand Down

0 comments on commit 0a412b3

Please sign in to comment.