[Lldb-commits] [PATCH] D148400: [lldb] Fix bug to update process public run lock with process state

Alex Langford via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Apr 17 13:03:41 PDT 2023


bulbazord requested changes to this revision.
bulbazord added a comment.
This revision now requires changes to proceed.

Idea is good, few concerns about the implementation.



================
Comment at: lldb/source/Target/Process.cpp:404-419
+llvm::StringRef Process::GetAttachSynchronousHijackListenerName() {
+  static ConstString class_name(
+      "lldb.internal.Process.AttachSynchronous.hijack");
+  return class_name.GetCString();
+}
+
+llvm::StringRef Process::GetLaunchSynchronousHijackListenerName() {
----------------
Do these need to be ConstStrings? They will live in the string pool forever, and it looks like in the code below you're just manipulating `const char *` anyway.

Could be something like:
```
llvm::StringRef Process::GetAttachSynchronousHijackListenerName() {
  return "lldb.internal.Process.AttachSynchronous.hijack";
}
```


================
Comment at: lldb/source/Target/Process.cpp:1427
     if (hijacking_name &&
-        strcmp(hijacking_name, g_resume_sync_name))
+        strstr(hijacking_name, "lldb.internal") != hijacking_name)
       return true;
----------------
Instead of using the `strstr` function directly, I would at least do `strnstr` to ensure that we're not touching memory we don't have. Especially if we could get `hijacking_name` to be shorter than `"lldb.internal"` somehow...

We could also change this to use StringRefs and use the `starts_with`/`startswith` methods instead.


================
Comment at: lldb/source/Target/Process.cpp:1437-1438
     if (hijacking_name &&
-        strcmp(hijacking_name, g_resume_sync_name) == 0)
+        strcmp(hijacking_name,
+               GetResumeSynchronousHijackListenerName().data()) == 0)
       return true;
----------------
First, I would probably avoid `strcmp` directly and use `strncmp` instead. We know the length of the HijackListener name, that would be a good choice for `n` here.

But you could probably simplify this even further. You can compare `GetResumeSynchronousHijackListenerName` to `hijacking_name` with StringRef's operator==. 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D148400



More information about the lldb-commits mailing list