[Lldb-commits] [lldb] [lldb] Fix Intel PT plugin compile errors (PR #77252)
Nicholas Mosier via lldb-commits
lldb-commits at lists.llvm.org
Mon Jan 8 14:23:42 PST 2024
================
@@ -107,7 +107,15 @@ DecodedThread::CreateNewTraceItem(lldb::TraceItemKind kind) {
(*m_last_tsc)->second.items_count++;
if (m_last_nanoseconds)
(*m_last_nanoseconds)->second.items_count++;
- return m_item_data.back();
+
+ TraceItemStorage &data = m_item_data.back();
+
+ // If creating an error item, then properly initialize TraceItemStorage's
+ // non-trivially-constructible union member `error`.
+ if (kind == lldb::eTraceItemKindError)
+ new (&data.error) std::string();
----------------
nmosier wrote:
I don't think so (I tried it, and the crash came back). The problem is that before line 116, `data.error` is uninitialized. Thus `data.error = {}` implicitly invokes the destructor of `data.error` on uninitialized memory before constructing a new std::string, causing a crash.
https://github.com/llvm/llvm-project/pull/77252
More information about the lldb-commits
mailing list