[Lldb-commits] [lldb] [lldb][Android] Fix platform process list regression (PR #164333)
Emre Kultursay via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 21 12:00:18 PDT 2025
================
@@ -652,75 +709,169 @@ PlatformAndroid::FindProcesses(const ProcessInstanceInfoMatch &match_info,
return 0;
}
- // Use 'pidof' command to get PIDs for the process name.
- // Quote the process name to handle special characters (spaces, etc.)
- std::string pidof_output;
- StreamString command;
- command.Printf("pidof '%s'", process_name.c_str());
- error = adb->Shell(command.GetData(), seconds(5), &pidof_output);
+ std::string ps_output;
+ error = adb->Shell("ps -A -o PID,ARGS", seconds(5), &ps_output);
----------------
emrekultursay wrote:
> Agreed. It would be surprising to me if I ran `platform process list` and it applied some kind of extra filtering.
That is the Android (Linux) security model.
- Android sets `hidepid=2` https://android.googlesource.com/platform/system/core/+/c39ba5a
- Here's hidepid semantics: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201
On Android, when running inside a process/package, you are not **supposed to** see other processes, by design.
- When lldb-server runs inside a package/user, it should only see the processes in the package.
- When lldb-server runs as shell or root on the Android device, it will already have access to all process on the system.
By using this adb-based approach, you are bypassing the security model. On a non-Android Linux machine that was configured with hidepid=2, I don't think you will see processes from other users. That means this PR is actually introducing behavior that is inconsistent across Android and Linux (and goes against the security model).
https://github.com/llvm/llvm-project/pull/164333
More information about the lldb-commits
mailing list