mirror of
https://github.com/google/sandboxed-api.git
synced 2024-03-22 13:11:30 +08:00
Remove information about in-progress syscalls on process exit.
PiperOrigin-RevId: 463091104 Change-Id: I402cb61e9e816a20a87274ea874cddf91c101e14
This commit is contained in:
parent
4d906e7143
commit
78ee270388
|
@ -816,8 +816,7 @@ void Monitor::ActionProcessSyscall(Regs* regs, const Syscall& syscall) {
|
||||||
if (trace_response == Notify::TraceAction::kInspectAfterReturn) {
|
if (trace_response == Notify::TraceAction::kInspectAfterReturn) {
|
||||||
// Note that a process might die without an exit-stop before the syscall is
|
// Note that a process might die without an exit-stop before the syscall is
|
||||||
// completed (eg. a thread calls execve() and the thread group leader dies),
|
// completed (eg. a thread calls execve() and the thread group leader dies),
|
||||||
// so this entry might never get removed from the table. This may increase
|
// so the entry is removed when the process exits.
|
||||||
// the monitor's memory usage by O(number-of-sandboxed-pids).
|
|
||||||
syscalls_in_progress_[regs->pid()] = syscall;
|
syscalls_in_progress_[regs->pid()] = syscall;
|
||||||
CompleteSyscall(regs->pid(), 0);
|
CompleteSyscall(regs->pid(), 0);
|
||||||
return;
|
return;
|
||||||
|
@ -985,6 +984,9 @@ void Monitor::EventPtraceExec(pid_t pid, int event_msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Monitor::EventPtraceExit(pid_t pid, int event_msg) {
|
void Monitor::EventPtraceExit(pid_t pid, int event_msg) {
|
||||||
|
// Forget about any syscalls in progress for this PID.
|
||||||
|
syscalls_in_progress_.erase(pid);
|
||||||
|
|
||||||
// A regular exit, let it continue (fast-path).
|
// A regular exit, let it continue (fast-path).
|
||||||
if (ABSL_PREDICT_TRUE(
|
if (ABSL_PREDICT_TRUE(
|
||||||
WIFEXITED(event_msg) &&
|
WIFEXITED(event_msg) &&
|
||||||
|
|
Loading…
Reference in New Issue
Block a user