================
@@ -209,7 +208,23 @@ Status ProcessMinidump::DoLoadCore() {
   GetTarget().SetArchitecture(arch, true /*set_platform*/);
 
   m_thread_list = m_minidump_parser->GetThreads();
-  m_active_exception = m_minidump_parser->GetExceptionStream();
+  auto exception_stream_it = m_minidump_parser->GetExceptionStreams();
+  for (auto exception_stream : exception_stream_it) {
+    // If we can't read an exception stream skip it
+    // We should probably serve a warning
+    if (!exception_stream)
+      continue;
+
+    if (!m_exceptions_by_tid
+             .try_emplace(exception_stream->ThreadId, exception_stream.get())
+             .second) {
+      // We only cast to avoid the warning around converting little endian in
+      // printf.
+      return Status::FromErrorStringWithFormat(
+          "Duplicate exception stream for tid %" PRIu32,
+          (uint32_t)exception_stream->ThreadId);
+    }
----------------
labath wrote:

This wasn't just an idle warning. The cast is actually necessary to make the 
code correct. But it's even better to use a formatting function that handles 
this for you.

```suggestion
      return Status::FromErrorStringWithFormatv(
          "Duplicate exception stream for tid {0}",
          exception_stream->ThreadId);
    }
```

https://github.com/llvm/llvm-project/pull/97470
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to