[Lldb-commits] [PATCH] D90863: [lldb] [Process/FreeBSDRemote] Remove thread name caching

Michał Górny via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Nov 5 11:46:09 PST 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG40140e122f8b: [lldb] [Process/FreeBSDRemote] Remove thread name caching (authored by mgorny).
Herald added a project: LLDB.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90863/new/

https://reviews.llvm.org/D90863

Files:
  lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
  lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
  lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py


Index: lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
===================================================================
--- lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
+++ lldb/test/API/tools/lldb-server/thread-name/TestGdbRemoteThreadName.py
@@ -29,7 +29,6 @@
         self.assertEqual(expected_name, kv_dict.get("name"))
 
     @skipIfWindows # the test is not updated for Windows.
-    @expectedFailureAll(oslist=["freebsd"])
     @llgs_test
     def test(self):
         """ Make sure lldb-server can retrieve inferior thread name"""
Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
===================================================================
--- lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
+++ lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.h
@@ -74,7 +74,6 @@
   using WatchpointIndexMap = std::map<lldb::addr_t, uint32_t>;
   WatchpointIndexMap m_watchpoint_index_map;
   WatchpointIndexMap m_hw_break_index_map;
-  llvm::Optional<std::string> m_thread_name;
 };
 
 typedef std::shared_ptr<NativeThreadFreeBSD> NativeThreadFreeBSDSP;
Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
===================================================================
--- lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
+++ lldb/source/Plugins/Process/FreeBSDRemote/NativeThreadFreeBSD.cpp
@@ -149,41 +149,35 @@
 }
 
 std::string NativeThreadFreeBSD::GetName() {
-  if (!m_thread_name) {
-    Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD));
-
-    std::vector<struct kinfo_proc> kp;
-    int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD,
-                  static_cast<int>(GetProcess().GetID())};
-
-    while (1) {
-      size_t len = kp.size() * sizeof(struct kinfo_proc);
-      void *ptr = len == 0 ? nullptr : kp.data();
-      int error = ::sysctl(mib, 4, ptr, &len, nullptr, 0);
-      if (ptr == nullptr || (error != 0 && errno == ENOMEM)) {
-        kp.resize(len / sizeof(struct kinfo_proc));
-        continue;
-      }
-      if (error != 0) {
-        len = 0;
-        LLDB_LOG(log, "tid = {0} in state {1} failed to get thread name: {2}", GetID(),
-                 m_state, strerror(errno));
-      }
+  Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD));
+
+  std::vector<struct kinfo_proc> kp;
+  int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD,
+                static_cast<int>(GetProcess().GetID())};
+
+  while (1) {
+    size_t len = kp.size() * sizeof(struct kinfo_proc);
+    void *ptr = len == 0 ? nullptr : kp.data();
+    int error = ::sysctl(mib, 4, ptr, &len, nullptr, 0);
+    if (ptr == nullptr || (error != 0 && errno == ENOMEM)) {
       kp.resize(len / sizeof(struct kinfo_proc));
-      break;
+      continue;
     }
-
-    // empty == unknown
-    m_thread_name = std::string();
-    for (auto& procinfo : kp) {
-      if (procinfo.ki_tid == (lwpid_t)GetID()) {
-        m_thread_name = procinfo.ki_tdname;
-        break;
-      }
+    if (error != 0) {
+      len = 0;
+      LLDB_LOG(log, "tid = {0} in state {1} failed to get thread name: {2}", GetID(),
+               m_state, strerror(errno));
     }
+    kp.resize(len / sizeof(struct kinfo_proc));
+    break;
+  }
+
+  for (auto& procinfo : kp) {
+    if (procinfo.ki_tid == static_cast<lwpid_t>(GetID()))
+      return procinfo.ki_tdname;
   }
 
-  return m_thread_name.getValue();
+  return "";
 }
 
 lldb::StateType NativeThreadFreeBSD::GetState() { return m_state; }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90863.303212.patch
Type: text/x-patch
Size: 3609 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20201105/e47a2e67/attachment-0001.bin>


More information about the lldb-commits mailing list