[PATCH v6 0/3] [GSoC] Stop condition based on number of syscalls

Sahil Siddiq icegambit91 at gmail.com
Sat Apr 15 12:02:33 UTC 2023


Hi,

On Thursday, 30 March 2023 17:58:46 IST Sahil Siddiq wrote:
> Hi,
> 
> This patch adds the feature to detach strace after capturing a specified
> number of syscalls.
> 
> On Thursday, 30 March 2023 10:25:22 IST Sahil Siddiq wrote:
> > [...]
> > In the ideal case, I would expect strace to terminate while the shell
> > (such
> > a bash) becomes the tracee's parent. I know one can use prctl() with
> > "PR_SET_CHILD_SUBREAPER" to reparent an orphan process to the nearest
> > living ancestor, but I do not know how to set this option for the shell.
> > 
> > The options I have thought of are:
> > 
> > 1. to simply let "init" become the parent of the orphaned tracee after
> > strace terminates. But if the detached tracee is interactive, it may
> > interfere with current shell.
> > 
> > 2. to stop the tracee after strace terminates (which is probably not
> > desired).
> > 
> > 3. to let strace run and remain as the parent of the tracee without
> > tracing
> > more syscalls. In this case, strace would have detached from the tracees
> > but it won't terminate. I have understood that "-b execve" is per-tracee
> > and not global. However, I noticed that if every child/thread invokes
> > execve and "-b execve" detaches from all of those threads, strace still
> > remains the parent and does not terminate. In this case, strace would
> > sleep
> > for a minute even after detaching from tracee in
> > "strace--syscall-limit.test"
> This patch series implements approach 1. Versions 1 through 3 used approach
> 2. The other versions up till the previous one used approach 3.
> 
> I am sending this patch in case you would like to test it.
> 
> Regards,
> Sahil
> 
> Changes v5 -> v6:
>  - src/strace.c:
>    (next_event) "syscall_limit == 0" returns NULL
>    (maybe_allocate_tcb): Remove "syscall_limit == 0" check
>    (dispatch_event): Remove "syscall_limit == 0" check
>  - NEWS: Move update to current NEWS section
>  - tests/gen_tests.in: Modify rule for "strace--syscall-limit-status"
>  - tests/strace--syscall-limit.c: Unify main() and helper() functions.
>  - tests/strace--syscall-limit-path.c: Likewise
>  - tests/strace--syscall-limit-status.c:
>    - Likewise
>    - Also, use fchdir instead of getcwd in child process
>  - tests/strace--syscall-limit.test: Wait for dummy file creation and read
>    file before comparing logs.
> 
> Sahil Siddiq (3):
>   Introduce -l/--syscall-limit option
>   Make relevant changes in NEWS and man page
>   Add tests for the -l/--syscall-limit option
> 
>  NEWS                                 |  2 +
>  doc/strace.1.in                      | 15 ++++++
>  src/defs.h                           |  1 +
>  src/strace.c                         | 20 +++++++-
>  src/syscall.c                        |  3 ++
>  tests/.gitignore                     |  3 ++
>  tests/Makefile.am                    |  4 ++
>  tests/gen_tests.in                   |  2 +
>  tests/options-syntax.test            |  4 ++
>  tests/strace--syscall-limit-path.c   | 65 ++++++++++++++++++++++++++
>  tests/strace--syscall-limit-status.c | 68 ++++++++++++++++++++++++++++
>  tests/strace--syscall-limit.c        | 56 +++++++++++++++++++++++
>  tests/strace--syscall-limit.test     | 57 +++++++++++++++++++++++
>  13 files changed, 299 insertions(+), 1 deletion(-)
>  create mode 100644 tests/strace--syscall-limit-path.c
>  create mode 100644 tests/strace--syscall-limit-status.c
>  create mode 100644 tests/strace--syscall-limit.c
>  create mode 100755 tests/strace--syscall-limit.test

Is there any update on this patch
(https://lists.strace.io/pipermail/strace-devel/2023-March/011273.html)?

I was thinking of working on adding another stop condition based on how long
strace runs for (GH issue #139: https://github.com/strace/strace/issues/139).
I thought I would wait for feedback on this patch before working on the next issue.

Regards,
Sahil




More information about the Strace-devel mailing list