tests: add clone-f.test. Check how strace -f follows clone syscall.
* tests/clone-f.c: New file. * tests/clone-f.test: New test. * tests/Makefile.am: (check_PROGRAMS): Add clone-f. (TESTS): Add clone-f.test. * tests/.gitignore: Add clone-f. --- tests/.gitignore | 1 + tests/Makefile.am | 2 ++ tests/clone-f.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ tests/clone-f.test | 11 +++++++++++ 4 files changed, 58 insertions(+) create mode 100644 tests/clone-f.c create mode 100755 tests/clone-f.test diff --git a/tests/.gitignore b/tests/.gitignore index cfe1e9f..7aa2449 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -12,6 +12,7 @@ bpf caps clock_nanosleep clock_xettime +clone-f epoll_create1 eventfd execve diff --git a/tests/Makefile.am b/tests/Makefile.am index 33f76cb..80292c4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -58,6 +58,7 @@ check_PROGRAMS = \ caps \ clock_nanosleep \ clock_xettime \ + clone-f \ epoll_create1 \ eventfd \ execve \ @@ -194,6 +195,7 @@ TESTS = \ caps.test \ clock_nanosleep.test \ clock_xettime.test \ + clone-f.test \ dumpio.test \ epoll_create1.test \ eventfd.test \ diff --git a/tests/clone-f.c b/tests/clone-f.c new file mode 100644 index 0000000..df97b54 --- /dev/null +++ b/tests/clone-f.c @@ -0,0 +1,44 @@ +#include "tests.h" +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> +#include <sched.h> +#include <signal.h> + +#define CHILD_STACK_SIZE 16384 + +static int +logit(const char *const str) +{ + return pwrite(-1, str, strlen(str), 0) >= 0; +} + +void +child(void) +{ + logit("child"); +} + +int main() +{ + logit("parent"); + + void *child_stack; + if ((child_stack = (void *) malloc(CHILD_STACK_SIZE)) == NULL) { + printf("cannot allocate stack for child!\n"); + } + + pid_t child_pid = clone(&child, child_stack + CHILD_STACK_SIZE, CLONE_VM, NULL); + if (child_pid < 0) { + perror_msg_and_fail("clone"); + } + + free(child_stack); + + pid_t pid = getpid(); + printf("%-5d pwrite64(-1, \"parent\", 6, 0) = -1 EBADF (%m)\n" + "%-5d pwrite64(-1, \"child\", 5, 0) = -1 EBADF (%m)\n", + pid, child_pid); + return 0; +} diff --git a/tests/clone-f.test b/tests/clone-f.test new file mode 100755 index 0000000..439426d --- /dev/null +++ b/tests/clone-f.test @@ -0,0 +1,11 @@ +#!/bin/sh + +. "${srcdir=.}/init.sh" + +OUT="$LOG.out" +run_prog > /dev/null +run_strace -a32 -epwrite64 -esignal=none -f -qq $args >"$OUT" +match_diff "$LOG" "$OUT" +rm -f "$OUT" + +exit 0 -- 1.8.3.1 ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel