Console Output
Skipping 402 KB..
Full Log1: - strcase("ETOOMANYREFS", 109);
1: - strcase("ETIMEDOUT", 110);
1: - strcase("ECONNREFUSED", 111);
1: - strcase("EHOSTDOWN", 112);
1: - strcase("EHOSTUNREACH", 113);
1: - strcase("EALREADY", 114);
1: - strcase("EINPROGRESS", 115);
1: - strcase("ESTALE", 116);
1: - strcase("EUCLEAN", 117);
1: - strcase("ENOTNAM", 118);
1: - strcase("ENAVAIL", 119);
1: - strcase("EISNAM", 120);
1: - strcase("EREMOTEIO", 121);
1: - strcase("EDQUOT", 122);
1: - strcase("ENOMEDIUM", 123);
1: - strcase("EMEDIUMTYPE", 124);
1: - strcase("ECANCELED", 125);
1: - strcase("ENOKEY", 126);
1: - strcase("EKEYEXPIRED", 127);
1: - strcase("EKEYREVOKED", 128);
1: - strcase("EKEYREJECTED", 129);
1: - strcase("EOWNERDEAD", 130);
1: - strcase("ENOTRECOVERABLE", 131);
1: - strcase("ERFKILL", 132);
1: - strcase("EHWPOISON", 133);
1: +static int errno_by_name_x86_64(const char *errno_name) {
1: +#define strcase(X, N) \
1: + if (!strcmp(errno_name, (X))) \
1: + return N
1: +
1: + strcase("EPERM", 1);
1: + strcase("ENOENT", 2);
1: + strcase("ESRCH", 3);
1: + strcase("EINTR", 4);
1: + strcase("EIO", 5);
1: + strcase("ENXIO", 6);
1: + strcase("E2BIG", 7);
1: + strcase("ENOEXEC", 8);
1: + strcase("EBADF", 9);
1: + strcase("ECHILD", 10);
1: + strcase("EAGAIN", 11);
1: + strcase("EWOULDBLOCK", 11);
1: + strcase("ENOMEM", 12);
1: + strcase("EACCES", 13);
1: + strcase("EFAULT", 14);
1: + strcase("ENOTBLK", 15);
1: + strcase("EBUSY", 16);
1: + strcase("EEXIST", 17);
1: + strcase("EXDEV", 18);
1: + strcase("ENODEV", 19);
1: + strcase("ENOTDIR", 20);
1: + strcase("EISDIR", 21);
1: + strcase("EINVAL", 22);
1: + strcase("ENFILE", 23);
1: + strcase("EMFILE", 24);
1: + strcase("ENOTTY", 25);
1: + strcase("ETXTBSY", 26);
1: + strcase("EFBIG", 27);
1: + strcase("ENOSPC", 28);
1: + strcase("ESPIPE", 29);
1: + strcase("EROFS", 30);
1: + strcase("EMLINK", 31);
1: + strcase("EPIPE", 32);
1: + strcase("EDOM", 33);
1: + strcase("ERANGE", 34);
1: + strcase("EDEADLK", 35);
1: + strcase("EDEADLOCK", 35);
1: + strcase("ENAMETOOLONG", 36);
1: + strcase("ENOLCK", 37);
1: + strcase("ENOSYS", 38);
1: + strcase("ENOTEMPTY", 39);
1: + strcase("ELOOP", 40);
1: + strcase("ENOMSG", 42);
1: + strcase("EIDRM", 43);
1: + strcase("ECHRNG", 44);
1: + strcase("EL2NSYNC", 45);
1: + strcase("EL3HLT", 46);
1: + strcase("EL3RST", 47);
1: + strcase("ELNRNG", 48);
1: + strcase("EUNATCH", 49);
1: + strcase("ENOCSI", 50);
1: + strcase("EL2HLT", 51);
1: + strcase("EBADE", 52);
1: + strcase("EBADR", 53);
1: + strcase("EXFULL", 54);
1: + strcase("ENOANO", 55);
1: + strcase("EBADRQC", 56);
1: + strcase("EBADSLT", 57);
1: + strcase("EBFONT", 59);
1: + strcase("ENOSTR", 60);
1: + strcase("ENODATA", 61);
1: + strcase("ETIME", 62);
1: + strcase("ENOSR", 63);
1: + strcase("ENONET", 64);
1: + strcase("ENOPKG", 65);
1: + strcase("EREMOTE", 66);
1: + strcase("ENOLINK", 67);
1: + strcase("EADV", 68);
1: + strcase("ESRMNT", 69);
1: + strcase("ECOMM", 70);
1: + strcase("EPROTO", 71);
1: + strcase("EMULTIHOP", 72);
1: + strcase("EDOTDOT", 73);
1: + strcase("EBADMSG", 74);
1: + strcase("EOVERFLOW", 75);
1: + strcase("ENOTUNIQ", 76);
1: + strcase("EBADFD", 77);
1: + strcase("EREMCHG", 78);
1: + strcase("ELIBACC", 79);
1: + strcase("ELIBBAD", 80);
1: + strcase("ELIBSCN", 81);
1: + strcase("ELIBMAX", 82);
1: + strcase("ELIBEXEC", 83);
1: + strcase("EILSEQ", 84);
1: + strcase("ERESTART", 85);
1: + strcase("ESTRPIPE", 86);
1: + strcase("EUSERS", 87);
1: + strcase("ENOTSOCK", 88);
1: + strcase("EDESTADDRREQ", 89);
1: + strcase("EMSGSIZE", 90);
1: + strcase("EPROTOTYPE", 91);
1: + strcase("ENOPROTOOPT", 92);
1: + strcase("EPROTONOSUPPORT", 93);
1: + strcase("ESOCKTNOSUPPORT", 94);
1: + strcase("ENOTSUP", 95);
1: + strcase("EOPNOTSUPP", 95);
1: + strcase("EPFNOSUPPORT", 96);
1: + strcase("EAFNOSUPPORT", 97);
1: + strcase("EADDRINUSE", 98);
1: + strcase("EADDRNOTAVAIL", 99);
1: + strcase("ENETDOWN", 100);
1: + strcase("ENETUNREACH", 101);
1: + strcase("ENETRESET", 102);
1: + strcase("ECONNABORTED", 103);
1: + strcase("ECONNRESET", 104);
1: + strcase("ENOBUFS", 105);
1: + strcase("EISCONN", 106);
1: + strcase("ENOTCONN", 107);
1: + strcase("ESHUTDOWN", 108);
1: + strcase("ETOOMANYREFS", 109);
1: + strcase("ETIMEDOUT", 110);
1: + strcase("ECONNREFUSED", 111);
1: + strcase("EHOSTDOWN", 112);
1: + strcase("EHOSTUNREACH", 113);
1: + strcase("EALREADY", 114);
1: + strcase("EINPROGRESS", 115);
1: + strcase("ESTALE", 116);
1: + strcase("EUCLEAN", 117);
1: + strcase("ENOTNAM", 118);
1: + strcase("ENAVAIL", 119);
1: + strcase("EISNAM", 120);
1: + strcase("EREMOTEIO", 121);
1: + strcase("EDQUOT", 122);
1: + strcase("ENOMEDIUM", 123);
1: + strcase("EMEDIUMTYPE", 124);
1: + strcase("ECANCELED", 125);
1: + strcase("ENOKEY", 126);
1: + strcase("EKEYEXPIRED", 127);
1: + strcase("EKEYREVOKED", 128);
1: + strcase("EKEYREJECTED", 129);
1: + strcase("EOWNERDEAD", 130);
1: + strcase("ENOTRECOVERABLE", 131);
1: + strcase("ERFKILL", 132);
1: + strcase("EHWPOISON", 133);
1:
1: #undef strcase
1:
1: - return -1;
1: -
1: + return -1;
1: }
1: #endif
1:
1: /* Try to find the errno number using the errno(1) program */
1: -static int errno_by_name_dynamic(const char *errno_name)
1: -{
1: - int len = strlen(errno_name);
1: - int err, number = -1;
1: - char buf[128];
1: - char cmd[64];
1: - char *end;
1: - long val;
1: - FILE *f;
1: -
1: - /* sanity check to not call popen with random input */
1: - for (int i = 0; i < len; i++) {
1: - if (errno_name[i] < 'A' || errno_name[i] > 'Z') {
1: - warn("errno_name contains invalid char 0x%02x: %s\n",
1: - errno_name[i], errno_name);
1: - return -1;
1: - }
1: - }
1: -
1: - snprintf(cmd, sizeof(cmd), "errno %s", errno_name);
1: - f = popen(cmd, "r");
1: - if (!f) {
1: - warn("popen: %s: %s\n", cmd, strerror(errno));
1: - return -1;
1: - }
1: -
1: - if (!fgets(buf, sizeof(buf), f)) {
1: - goto close;
1: - } else if (ferror(f)) {
1: - warn("fgets: %s\n", strerror(errno));
1: - goto close;
1: - }
1: -
1: - // expecting "<name> <number> <description>"
1: - if (strncmp(errno_name, buf, len) || strlen(buf) < len+2) {
1: - warn("expected '%s': %s\n", errno_name, buf);
1: - goto close;
1: - }
1: - errno = 0;
1: - val = strtol(buf+len+2, &end, 10);
1: - if (errno || end == (buf+len+2) || number < 0 || number > INT_MAX) {
1: - warn("can't parse the second column, expected int: %s\n", buf);
1: - goto close;
1: - }
1: - number = val;
1: +static int errno_by_name_dynamic(const char *errno_name) {
1: + int len = strlen(errno_name);
1: + int err, number = -1;
1: + char buf[128];
1: + char cmd[64];
1: + char *end;
1: + long val;
1: + FILE *f;
1: +
1: + /* sanity check to not call popen with random input */
1: + for (int i = 0; i < len; i++) {
1: + if (errno_name[i] < 'A' || errno_name[i] > 'Z') {
1: + warn("errno_name contains invalid char 0x%02x: %s\n", errno_name[i],
1: + errno_name);
1: + return -1;
1: + }
1: + }
1: +
1: + snprintf(cmd, sizeof(cmd), "errno %s", errno_name);
1: + f = popen(cmd, "r");
1: + if (!f) {
1: + warn("popen: %s: %s\n", cmd, strerror(errno));
1: + return -1;
1: + }
1: +
1: + if (!fgets(buf, sizeof(buf), f)) {
1: + goto close;
1: + } else if (ferror(f)) {
1: + warn("fgets: %s\n", strerror(errno));
1: + goto close;
1: + }
1: +
1: + // expecting "<name> <number> <description>"
1: + if (strncmp(errno_name, buf, len) || strlen(buf) < len + 2) {
1: + warn("expected '%s': %s\n", errno_name, buf);
1: + goto close;
1: + }
1: + errno = 0;
1: + val = strtol(buf + len + 2, &end, 10);
1: + if (errno || end == (buf + len + 2) || number < 0 || number > INT_MAX) {
1: + warn("can't parse the second column, expected int: %s\n", buf);
1: + goto close;
1: + }
1: + number = val;
1:
1: close:
1: - err = pclose(f);
1: - if (err < 0)
1: - warn("pclose: %s\n", strerror(errno));
1: + err = pclose(f);
1: + if (err < 0)
1: + warn("pclose: %s\n", strerror(errno));
1: #ifndef __x86_64__
1: - /* Ignore the error for x86_64 where we have a table compiled in */
1: - else if (err && WEXITSTATUS(err) == 127) {
1: - warn("errno(1) required for errno name/number mapping\n");
1: - } else if (err) {
1: - warn("errno(1) exit status (see wait(2)): 0x%x\n", err);
1: - }
1: + /* Ignore the error for x86_64 where we have a table compiled in */
1: + else if (err && WEXITSTATUS(err) == 127) {
1: + warn("errno(1) required for errno name/number mapping\n");
1: + } else if (err) {
1: + warn("errno(1) exit status (see wait(2)): 0x%x\n", err);
1: + }
1: #endif
1: - return number;
1: + return number;
1: }
1:
1: -int errno_by_name(const char *errno_name)
1: -{
1: +int errno_by_name(const char *errno_name) {
1: #ifdef __x86_64__
1: - int err;
1: + int err;
1:
1: - err = errno_by_name_x86_64(errno_name);
1: - if (err >= 0)
1: - return err;
1: + err = errno_by_name_x86_64(errno_name);
1: + if (err >= 0)
1: + return err;
1: #endif
1:
1: - return errno_by_name_dynamic(errno_name);
1: + return errno_by_name_dynamic(errno_name);
1: }
1: diff --git a/libbpf-tools/filelife.c b/libbpf-tools/filelife.c
1: index 020f0487..0ca62ce7 100644
1: --- a/libbpf-tools/filelife.c
1: +++ b/libbpf-tools/filelife.c
1: @@ -127,8 +127,8 @@ int main(int argc, char **argv)
1:
1: obj = filelife_bpf__open();
1: if (!obj) {
1: - fprintf(stderr, "failed to open and/or load BPF object\n");
1: - return 1;
1: + fprintf(stderr, "failed to open and/or load BPF object\n");
1: + return 1;
1: }
1:
1: /* initialize global data (filtering options) */
1: diff --git a/libbpf-tools/syscall_helpers.c b/libbpf-tools/syscall_helpers.c
1: index c72a1709..50d32196 100644
1: --- a/libbpf-tools/syscall_helpers.c
1: +++ b/libbpf-tools/syscall_helpers.c
1: @@ -1,10 +1,10 @@
1: // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
1: // Copyright (c) 2020 Anton Protopopov
1: -#include <stdlib.h>
1: -#include <string.h>
1: +#include <errno.h>
1: #include <limits.h>
1: #include <stdio.h>
1: -#include <errno.h>
1: +#include <stdlib.h>
1: +#include <string.h>
1:
1: static const char **syscall_names;
1: static size_t syscall_names_size;
1: @@ -12,113 +12,107 @@ static size_t syscall_names_size;
1: #define warn(...) fprintf(stderr, __VA_ARGS__)
1: #define MAX(x, y) (((x) > (y)) ? (x) : (y))
1:
1: -static const char *parse_syscall(const char *buf, int *number)
1: -{
1: - char *end;
1: - long x;
1: +static const char *parse_syscall(const char *buf, int *number) {
1: + char *end;
1: + long x;
1:
1: - errno = 0;
1: - x = strtol(buf, &end, 10);
1: - if (errno) {
1: - warn("strtol(%s): %s\n", buf, strerror(errno));
1: - return NULL;
1: - } else if (end == buf) {
1: - warn("strtol(%s): no digits found\n", buf);
1: - return NULL;
1: - } else if (x < 0 || x > INT_MAX) {
1: - warn("strtol(%s): bad syscall number: %ld\n", buf, x);
1: - return NULL;
1: - }
1: - if (*end != '\t') {
1: - warn("bad input: %s (expected <num>\t<name>)\n", buf);
1: - return NULL;
1: - }
1: + errno = 0;
1: + x = strtol(buf, &end, 10);
1: + if (errno) {
1: + warn("strtol(%s): %s\n", buf, strerror(errno));
1: + return NULL;
1: + } else if (end == buf) {
1: + warn("strtol(%s): no digits found\n", buf);
1: + return NULL;
1: + } else if (x < 0 || x > INT_MAX) {
1: + warn("strtol(%s): bad syscall number: %ld\n", buf, x);
1: + return NULL;
1: + }
1: + if (*end != '\t') {
1: + warn("bad input: %s (expected <num>\t<name>)\n", buf);
1: + return NULL;
1: + }
1:
1: - *number = x;
1: - return ++end;
1: + *number = x;
1: + return ++end;
1: }
1:
1: -void init_syscall_names(void)
1: -{
1: - size_t old_size, size = 1024;
1: - const char *name;
1: - char buf[64];
1: - int number;
1: - int err;
1: - FILE *f;
1: +void init_syscall_names(void) {
1: + size_t old_size, size = 1024;
1: + const char *name;
1: + char buf[64];
1: + int number;
1: + int err;
1: + FILE *f;
1:
1: - f = popen("ausyscall --dump 2>/dev/null", "r");
1: - if (!f) {
1: - warn("popen: ausyscall --dump: %s\n", strerror(errno));
1: - return;
1: - }
1: + f = popen("ausyscall --dump 2>/dev/null", "r");
1: + if (!f) {
1: + warn("popen: ausyscall --dump: %s\n", strerror(errno));
1: + return;
1: + }
1:
1: - syscall_names = calloc(size, sizeof(char *));
1: - if (!syscall_names) {
1: - warn("calloc: %s\n", strerror(errno));
1: - goto close;
1: - }
1: + syscall_names = calloc(size, sizeof(char *));
1: + if (!syscall_names) {
1: + warn("calloc: %s\n", strerror(errno));
1: + goto close;
1: + }
1:
1: - /* skip the header */
1: - fgets(buf, sizeof(buf), f);
1: + /* skip the header */
1: + fgets(buf, sizeof(buf), f);
1:
1: - while (fgets(buf, sizeof(buf), f)) {
1: - if (buf[strlen(buf) - 1] == '\n')
1: - buf[strlen(buf) - 1] = '\0';
1: + while (fgets(buf, sizeof(buf), f)) {
1: + if (buf[strlen(buf) - 1] == '\n')
1: + buf[strlen(buf) - 1] = '\0';
1:
1: - name = parse_syscall(buf, &number);
1: - if (!name || !name[0])
1: - goto close;
1: + name = parse_syscall(buf, &number);
1: + if (!name || !name[0])
1: + goto close;
1:
1: - /* In a rare case when syscall number is > than initial 1024 */
1: - if (number >= size) {
1: - old_size = size;
1: - size = 1024 * (1 + number / 1024);
1: - syscall_names = realloc(syscall_names,
1: - size * sizeof(char *));
1: - if (!syscall_names) {
1: - warn("realloc: %s\n", strerror(errno));
1: - goto close;
1: - }
1: - memset(syscall_names+old_size, 0,
1: - (size - old_size) * sizeof(char *));
1: - }
1: + /* In a rare case when syscall number is > than initial 1024 */
1: + if (number >= size) {
1: + old_size = size;
1: + size = 1024 * (1 + number / 1024);
1: + syscall_names = realloc(syscall_names, size * sizeof(char *));
1: + if (!syscall_names) {
1: + warn("realloc: %s\n", strerror(errno));
1: + goto close;
1: + }
1: + memset(syscall_names + old_size, 0, (size - old_size) * sizeof(char *));
1: + }
1:
1: - if (syscall_names[number]) {
1: - warn("duplicate number: %d (stored: %s)",
1: - number, syscall_names[number]);
1: - goto close;
1: - }
1: + if (syscall_names[number]) {
1: + warn("duplicate number: %d (stored: %s)", number, syscall_names[number]);
1: + goto close;
1: + }
1:
1: - syscall_names[number] = strdup(name);
1: - if (!syscall_names[number]) {
1: - warn("strdup: %s\n", strerror(errno));
1: - goto close;
1: - }
1: - syscall_names_size = MAX(number+1, syscall_names_size);
1: - }
1: + syscall_names[number] = strdup(name);
1: + if (!syscall_names[number]) {
1: + warn("strdup: %s\n", strerror(errno));
1: + goto close;
1: + }
1: + syscall_names_size = MAX(number + 1, syscall_names_size);
1: + }
1:
1: - if (ferror(f))
1: - warn("fgets: %s\n", strerror(errno));
1: + if (ferror(f))
1: + warn("fgets: %s\n", strerror(errno));
1: close:
1: - err = pclose(f);
1: - if (err < 0)
1: - warn("pclose: %s\n", strerror(errno));
1: + err = pclose(f);
1: + if (err < 0)
1: + warn("pclose: %s\n", strerror(errno));
1: #ifndef __x86_64__
1: - /* Ignore the error for x86_64 where we have a table compiled in */
1: - else if (err && WEXITSTATUS(err) == 127) {
1: - warn("ausyscall required for syscalls number/name mapping\n");
1: - } else if (err) {
1: - warn("ausyscall exit status (see wait(2)): 0x%x\n", err);
1: - }
1: + /* Ignore the error for x86_64 where we have a table compiled in */
1: + else if (err && WEXITSTATUS(err) == 127) {
1: + warn("ausyscall required for syscalls number/name mapping\n");
1: + } else if (err) {
1: + warn("ausyscall exit status (see wait(2)): 0x%x\n", err);
1: + }
1: #endif
1: }
1:
1: -void free_syscall_names(void)
1: -{
1: - for (size_t i = 0; i < syscall_names_size; i++)
1: - free((void *) syscall_names[i]);
1: - free(syscall_names);
1: +void free_syscall_names(void) {
1: + for (size_t i = 0; i < syscall_names_size; i++)
1: + free((void *)syscall_names[i]);
1: + free(syscall_names);
1: }
1:
1: /*
1: @@ -134,393 +128,391 @@ void free_syscall_names(void)
1: */
1: #ifdef __x86_64__
1: static const char *syscall_names_x86_64[] = {
1: - [0] = "read",
1: - [1] = "write",
1: - [2] = "open",
1: - [3] = "close",
1: - [4] = "stat",
1: - [5] = "fstat",
1: - [6] = "lstat",
1: - [7] = "poll",
1: - [8] = "lseek",
1: - [9] = "mmap",
1: - [10] = "mprotect",
1: - [11] = "munmap",
1: - [12] = "brk",
1: - [13] = "rt_sigaction",
1: - [14] = "rt_sigprocmask",
1: - [15] = "rt_sigreturn",
1: - [16] = "ioctl",
1: - [17] = "pread64",
1: - [18] = "pwrite64",
1: - [19] = "readv",
1: - [20] = "writev",
1: - [21] = "access",
1: - [22] = "pipe",
1: - [23] = "select",
1: - [24] = "sched_yield",
1: - [25] = "mremap",
1: - [26] = "msync",
1: - [27] = "mincore",
1: - [28] = "madvise",
1: - [29] = "shmget",
1: - [30] = "shmat",
1: - [31] = "shmctl",
1: - [32] = "dup",
1: - [33] = "dup2",
1: - [34] = "pause",
1: - [35] = "nanosleep",
1: - [36] = "getitimer",
1: - [37] = "alarm",
1: - [38] = "setitimer",
1: - [39] = "getpid",
1: - [40] = "sendfile",
1: - [41] = "socket",
1: - [42] = "connect",
1: - [43] = "accept",
1: - [44] = "sendto",
1: - [45] = "recvfrom",
1: - [46] = "sendmsg",
1: - [47] = "recvmsg",
1: - [48] = "shutdown",
1: - [49] = "bind",
1: - [50] = "listen",
1: - [51] = "getsockname",
1: - [52] = "getpeername",
1: - [53] = "socketpair",
1: - [54] = "setsockopt",
1: - [55] = "getsockopt",
1: - [56] = "clone",
1: - [57] = "fork",
1: - [58] = "vfork",
1: - [59] = "execve",
1: - [60] = "exit",
1: - [61] = "wait4",
1: - [62] = "kill",
1: - [63] = "uname",
1: - [64] = "semget",
1: - [65] = "semop",
1: - [66] = "semctl",
1: - [67] = "shmdt",
1: - [68] = "msgget",
1: - [69] = "msgsnd",
1: - [70] = "msgrcv",
1: - [71] = "msgctl",
1: - [72] = "fcntl",
1: - [73] = "flock",
1: - [74] = "fsync",
1: - [75] = "fdatasync",
1: - [76] = "truncate",
1: - [77] = "ftruncate",
1: - [78] = "getdents",
1: - [79] = "getcwd",
1: - [80] = "chdir",
1: - [81] = "fchdir",
1: - [82] = "rename",
1: - [83] = "mkdir",
1: - [84] = "rmdir",
1: - [85] = "creat",
1: - [86] = "link",
1: - [87] = "unlink",
1: - [88] = "symlink",
1: - [89] = "readlink",
1: - [90] = "chmod",
1: - [91] = "fchmod",
1: - [92] = "chown",
1: - [93] = "fchown",
1: - [94] = "lchown",
1: - [95] = "umask",
1: - [96] = "gettimeofday",
1: - [97] = "getrlimit",
1: - [98] = "getrusage",
1: - [99] = "sysinfo",
1: - [100] = "times",
1: - [101] = "ptrace",
1: - [102] = "getuid",
1: - [103] = "syslog",
1: - [104] = "getgid",
1: - [105] = "setuid",
1: - [106] = "setgid",
1: - [107] = "geteuid",
1: - [108] = "getegid",
1: - [109] = "setpgid",
1: - [110] = "getppid",
1: - [111] = "getpgrp",
1: - [112] = "setsid",
1: - [113] = "setreuid",
1: - [114] = "setregid",
1: - [115] = "getgroups",
1: - [116] = "setgroups",
1: - [117] = "setresuid",
1: - [118] = "getresuid",
1: - [119] = "setresgid",
1: - [120] = "getresgid",
1: - [121] = "getpgid",
1: - [122] = "setfsuid",
1: - [123] = "setfsgid",
1: - [124] = "getsid",
1: - [125] = "capget",
1: - [126] = "capset",
1: - [127] = "rt_sigpending",
1: - [128] = "rt_sigtimedwait",
1: - [129] = "rt_sigqueueinfo",
1: - [130] = "rt_sigsuspend",
1: - [131] = "sigaltstack",
1: - [132] = "utime",
1: - [133] = "mknod",
1: - [134] = "uselib",
1: - [135] = "personality",
1: - [136] = "ustat",
1: - [137] = "statfs",
1: - [138] = "fstatfs",
1: - [139] = "sysfs",
1: - [140] = "getpriority",
1: - [141] = "setpriority",
1: - [142] = "sched_setparam",
1: - [143] = "sched_getparam",
1: - [144] = "sched_setscheduler",
1: - [145] = "sched_getscheduler",
1: - [146] = "sched_get_priority_max",
1: - [147] = "sched_get_priority_min",
1: - [148] = "sched_rr_get_interval",
1: - [149] = "mlock",
1: - [150] = "munlock",
1: - [151] = "mlockall",
1: - [152] = "munlockall",
1: - [153] = "vhangup",
1: - [154] = "modify_ldt",
1: - [155] = "pivot_root",
1: - [156] = "_sysctl",
1: - [157] = "prctl",
1: - [158] = "arch_prctl",
1: - [159] = "adjtimex",
1: - [160] = "setrlimit",
1: - [161] = "chroot",
1: - [162] = "sync",
1: - [163] = "acct",
1: - [164] = "settimeofday",
1: - [165] = "mount",
1: - [166] = "umount2",
1: - [167] = "swapon",
1: - [168] = "swapoff",
1: - [169] = "reboot",
1: - [170] = "sethostname",
1: - [171] = "setdomainname",
1: - [172] = "iopl",
1: - [173] = "ioperm",
1: - [174] = "create_module",
1: - [175] = "init_module",
1: - [176] = "delete_module",
1: - [177] = "get_kernel_syms",
1: - [178] = "query_module",
1: - [179] = "quotactl",
1: - [180] = "nfsservctl",
1: - [181] = "getpmsg",
1: - [182] = "putpmsg",
1: - [183] = "afs_syscall",
1: - [184] = "tuxcall",
1: - [185] = "security",
1: - [186] = "gettid",
1: - [187] = "readahead",
1: - [188] = "setxattr",
1: - [189] = "lsetxattr",
1: - [190] = "fsetxattr",
1: - [191] = "getxattr",
1: - [192] = "lgetxattr",
1: - [193] = "fgetxattr",
1: - [194] = "listxattr",
1: - [195] = "llistxattr",
1: - [196] = "flistxattr",
1: - [197] = "removexattr",
1: - [198] = "lremovexattr",
1: - [199] = "fremovexattr",
1: - [200] = "tkill",
1: - [201] = "time",
1: - [202] = "futex",
1: - [203] = "sched_setaffinity",
1: - [204] = "sched_getaffinity",
1: - [205] = "set_thread_area",
1: - [206] = "io_setup",
1: - [207] = "io_destroy",
1: - [208] = "io_getevents",
1: - [209] = "io_submit",
1: - [210] = "io_cancel",
1: - [211] = "get_thread_area",
1: - [212] = "lookup_dcookie",
1: - [213] = "epoll_create",
1: - [214] = "epoll_ctl_old",
1: - [215] = "epoll_wait_old",
1: - [216] = "remap_file_pages",
1: - [217] = "getdents64",
1: - [218] = "set_tid_address",
1: - [219] = "restart_syscall",
1: - [220] = "semtimedop",
1: - [221] = "fadvise64",
1: - [222] = "timer_create",
1: - [223] = "timer_settime",
1: - [224] = "timer_gettime",
1: - [225] = "timer_getoverrun",
1: - [226] = "timer_delete",
1: - [227] = "clock_settime",
1: - [228] = "clock_gettime",
1: - [229] = "clock_getres",
1: - [230] = "clock_nanosleep",
1: - [231] = "exit_group",
1: - [232] = "epoll_wait",
1: - [233] = "epoll_ctl",
1: - [234] = "tgkill",
1: - [235] = "utimes",
1: - [236] = "vserver",
1: - [237] = "mbind",
1: - [238] = "set_mempolicy",
1: - [239] = "get_mempolicy",
1: - [240] = "mq_open",
1: - [241] = "mq_unlink",
1: - [242] = "mq_timedsend",
1: - [243] = "mq_timedreceive",
1: - [244] = "mq_notify",
1: - [245] = "mq_getsetattr",
1: - [246] = "kexec_load",
1: - [247] = "waitid",
1: - [248] = "add_key",
1: - [249] = "request_key",
1: - [250] = "keyctl",
1: - [251] = "ioprio_set",
1: - [252] = "ioprio_get",
1: - [253] = "inotify_init",
1: - [254] = "inotify_add_watch",
1: - [255] = "inotify_rm_watch",
1: - [256] = "migrate_pages",
1: - [257] = "openat",
1: - [258] = "mkdirat",
1: - [259] = "mknodat",
1: - [260] = "fchownat",
1: - [261] = "futimesat",
1: - [262] = "newfstatat",
1: - [263] = "unlinkat",
1: - [264] = "renameat",
1: - [265] = "linkat",
1: - [266] = "symlinkat",
1: - [267] = "readlinkat",
1: - [268] = "fchmodat",
1: - [269] = "faccessat",
1: - [270] = "pselect6",
1: - [271] = "ppoll",
1: - [272] = "unshare",
1: - [273] = "set_robust_list",
1: - [274] = "get_robust_list",
1: - [275] = "splice",
1: - [276] = "tee",
1: - [277] = "sync_file_range",
1: - [278] = "vmsplice",
1: - [279] = "move_pages",
1: - [280] = "utimensat",
1: - [281] = "epoll_pwait",
1: - [282] = "signalfd",
1: - [283] = "timerfd_create",
1: - [284] = "eventfd",
1: - [285] = "fallocate",
1: - [286] = "timerfd_settime",
1: - [287] = "timerfd_gettime",
1: - [288] = "accept4",
1: - [289] = "signalfd4",
1: - [290] = "eventfd2",
1: - [291] = "epoll_create1",
1: - [292] = "dup3",
1: - [293] = "pipe2",
1: - [294] = "inotify_init1",
1: - [295] = "preadv",
1: - [296] = "pwritev",
1: - [297] = "rt_tgsigqueueinfo",
1: - [298] = "perf_event_open",
1: - [299] = "recvmmsg",
1: - [300] = "fanotify_init",
1: - [301] = "fanotify_mark",
1: - [302] = "prlimit64",
1: - [303] = "name_to_handle_at",
1: - [304] = "open_by_handle_at",
1: - [305] = "clock_adjtime",
1: - [306] = "syncfs",
1: - [307] = "sendmmsg",
1: - [308] = "setns",
1: - [309] = "getcpu",
1: - [310] = "process_vm_readv",
1: - [311] = "process_vm_writev",
1: - [312] = "kcmp",
1: - [313] = "finit_module",
1: - [314] = "sched_setattr",
1: - [315] = "sched_getattr",
1: - [316] = "renameat2",
1: - [317] = "seccomp",
1: - [318] = "getrandom",
1: - [319] = "memfd_create",
1: - [320] = "kexec_file_load",
1: - [321] = "bpf",
1: - [322] = "execveat",
1: - [323] = "userfaultfd",
1: - [324] = "membarrier",
1: - [325] = "mlock2",
1: - [326] = "copy_file_range",
1: - [327] = "preadv2",
1: - [328] = "pwritev2",
1: - [329] = "pkey_mprotect",
1: - [330] = "pkey_alloc",
1: - [331] = "pkey_free",
1: - [332] = "statx",
1: - [333] = "io_pgetevents",
1: - [334] = "rseq",
1: - [424] = "pidfd_send_signal",
1: - [425] = "io_uring_setup",
1: - [426] = "io_uring_enter",
1: - [427] = "io_uring_register",
1: - [428] = "open_tree",
1: - [429] = "move_mount",
1: - [430] = "fsopen",
1: - [431] = "fsconfig",
1: - [432] = "fsmount",
1: - [433] = "fspick",
1: - [434] = "pidfd_open",
1: - [435] = "clone3",
1: - [437] = "openat2",
1: - [438] = "pidfd_getfd",
1: + [0] = "read",
1: + [1] = "write",
1: + [2] = "open",
1: + [3] = "close",
1: + [4] = "stat",
1: + [5] = "fstat",
1: + [6] = "lstat",
1: + [7] = "poll",
1: + [8] = "lseek",
1: + [9] = "mmap",
1: + [10] = "mprotect",
1: + [11] = "munmap",
1: + [12] = "brk",
1: + [13] = "rt_sigaction",
1: + [14] = "rt_sigprocmask",
1: + [15] = "rt_sigreturn",
1: + [16] = "ioctl",
1: + [17] = "pread64",
1: + [18] = "pwrite64",
1: + [19] = "readv",
1: + [20] = "writev",
1: + [21] = "access",
1: + [22] = "pipe",
1: + [23] = "select",
1: + [24] = "sched_yield",
1: + [25] = "mremap",
1: + [26] = "msync",
1: + [27] = "mincore",
1: + [28] = "madvise",
1: + [29] = "shmget",
1: + [30] = "shmat",
1: + [31] = "shmctl",
1: + [32] = "dup",
1: + [33] = "dup2",
1: + [34] = "pause",
1: + [35] = "nanosleep",
1: + [36] = "getitimer",
1: + [37] = "alarm",
1: + [38] = "setitimer",
1: + [39] = "getpid",
1: + [40] = "sendfile",
1: + [41] = "socket",
1: + [42] = "connect",
1: + [43] = "accept",
1: + [44] = "sendto",
1: + [45] = "recvfrom",
1: + [46] = "sendmsg",
1: + [47] = "recvmsg",
1: + [48] = "shutdown",
1: + [49] = "bind",
1: + [50] = "listen",
1: + [51] = "getsockname",
1: + [52] = "getpeername",
1: + [53] = "socketpair",
1: + [54] = "setsockopt",
1: + [55] = "getsockopt",
1: + [56] = "clone",
1: + [57] = "fork",
1: + [58] = "vfork",
1: + [59] = "execve",
1: + [60] = "exit",
1: + [61] = "wait4",
1: + [62] = "kill",
1: + [63] = "uname",
1: + [64] = "semget",
1: + [65] = "semop",
1: + [66] = "semctl",
1: + [67] = "shmdt",
1: + [68] = "msgget",
1: + [69] = "msgsnd",
1: + [70] = "msgrcv",
1: + [71] = "msgctl",
1: + [72] = "fcntl",
1: + [73] = "flock",
1: + [74] = "fsync",
1: + [75] = "fdatasync",
1: + [76] = "truncate",
1: + [77] = "ftruncate",
1: + [78] = "getdents",
1: + [79] = "getcwd",
1: + [80] = "chdir",
1: + [81] = "fchdir",
1: + [82] = "rename",
1: + [83] = "mkdir",
1: + [84] = "rmdir",
1: + [85] = "creat",
1: + [86] = "link",
1: + [87] = "unlink",
1: + [88] = "symlink",
1: + [89] = "readlink",
1: + [90] = "chmod",
1: + [91] = "fchmod",
1: + [92] = "chown",
1: + [93] = "fchown",
1: + [94] = "lchown",
1: + [95] = "umask",
1: + [96] = "gettimeofday",
1: + [97] = "getrlimit",
1: + [98] = "getrusage",
1: + [99] = "sysinfo",
1: + [100] = "times",
1: + [101] = "ptrace",
1: + [102] = "getuid",
1: + [103] = "syslog",
1: + [104] = "getgid",
1: + [105] = "setuid",
1: + [106] = "setgid",
1: + [107] = "geteuid",
1: + [108] = "getegid",
1: + [109] = "setpgid",
1: + [110] = "getppid",
1: + [111] = "getpgrp",
1: + [112] = "setsid",
1: + [113] = "setreuid",
1: + [114] = "setregid",
1: + [115] = "getgroups",
1: + [116] = "setgroups",
1: + [117] = "setresuid",
1: + [118] = "getresuid",
1: + [119] = "setresgid",
1: + [120] = "getresgid",
1: + [121] = "getpgid",
1: + [122] = "setfsuid",
1: + [123] = "setfsgid",
1: + [124] = "getsid",
1: + [125] = "capget",
1: + [126] = "capset",
1: + [127] = "rt_sigpending",
1: + [128] = "rt_sigtimedwait",
1: + [129] = "rt_sigqueueinfo",
1: + [130] = "rt_sigsuspend",
1: + [131] = "sigaltstack",
1: + [132] = "utime",
1: + [133] = "mknod",
1: + [134] = "uselib",
1: + [135] = "personality",
1: + [136] = "ustat",
1: + [137] = "statfs",
1: + [138] = "fstatfs",
1: + [139] = "sysfs",
1: + [140] = "getpriority",
1: + [141] = "setpriority",
1: + [142] = "sched_setparam",
1: + [143] = "sched_getparam",
1: + [144] = "sched_setscheduler",
1: + [145] = "sched_getscheduler",
1: + [146] = "sched_get_priority_max",
1: + [147] = "sched_get_priority_min",
1: + [148] = "sched_rr_get_interval",
1: + [149] = "mlock",
1: + [150] = "munlock",
1: + [151] = "mlockall",
1: + [152] = "munlockall",
1: + [153] = "vhangup",
1: + [154] = "modify_ldt",
1: + [155] = "pivot_root",
1: + [156] = "_sysctl",
1: + [157] = "prctl",
1: + [158] = "arch_prctl",
1: + [159] = "adjtimex",
1: + [160] = "setrlimit",
1: + [161] = "chroot",
1: + [162] = "sync",
1: + [163] = "acct",
1: + [164] = "settimeofday",
1: + [165] = "mount",
1: + [166] = "umount2",
1: + [167] = "swapon",
1: + [168] = "swapoff",
1: + [169] = "reboot",
1: + [170] = "sethostname",
1: + [171] = "setdomainname",
1: + [172] = "iopl",
1: + [173] = "ioperm",
1: + [174] = "create_module",
1: + [175] = "init_module",
1: + [176] = "delete_module",
1: + [177] = "get_kernel_syms",
1: + [178] = "query_module",
1: + [179] = "quotactl",
1: + [180] = "nfsservctl",
1: + [181] = "getpmsg",
1: + [182] = "putpmsg",
1: + [183] = "afs_syscall",
1: + [184] = "tuxcall",
1: + [185] = "security",
1: + [186] = "gettid",
1: + [187] = "readahead",
1: + [188] = "setxattr",
1: + [189] = "lsetxattr",
1: + [190] = "fsetxattr",
1: + [191] = "getxattr",
1: + [192] = "lgetxattr",
1: + [193] = "fgetxattr",
1: + [194] = "listxattr",
1: + [195] = "llistxattr",
1: + [196] = "flistxattr",
1: + [197] = "removexattr",
1: + [198] = "lremovexattr",
1: + [199] = "fremovexattr",
1: + [200] = "tkill",
1: + [201] = "time",
1: + [202] = "futex",
1: + [203] = "sched_setaffinity",
1: + [204] = "sched_getaffinity",
1: + [205] = "set_thread_area",
1: + [206] = "io_setup",
1: + [207] = "io_destroy",
1: + [208] = "io_getevents",
1: + [209] = "io_submit",
1: + [210] = "io_cancel",
1: + [211] = "get_thread_area",
1: + [212] = "lookup_dcookie",
1: + [213] = "epoll_create",
1: + [214] = "epoll_ctl_old",
1: + [215] = "epoll_wait_old",
1: + [216] = "remap_file_pages",
1: + [217] = "getdents64",
1: + [218] = "set_tid_address",
1: + [219] = "restart_syscall",
1: + [220] = "semtimedop",
1: + [221] = "fadvise64",
1: + [222] = "timer_create",
1: + [223] = "timer_settime",
1: + [224] = "timer_gettime",
1: + [225] = "timer_getoverrun",
1: + [226] = "timer_delete",
1: + [227] = "clock_settime",
1: + [228] = "clock_gettime",
1: + [229] = "clock_getres",
1: + [230] = "clock_nanosleep",
1: + [231] = "exit_group",
1: + [232] = "epoll_wait",
1: + [233] = "epoll_ctl",
1: + [234] = "tgkill",
1: + [235] = "utimes",
1: + [236] = "vserver",
1: + [237] = "mbind",
1: + [238] = "set_mempolicy",
1: + [239] = "get_mempolicy",
1: + [240] = "mq_open",
1: + [241] = "mq_unlink",
1: + [242] = "mq_timedsend",
1: + [243] = "mq_timedreceive",
1: + [244] = "mq_notify",
1: + [245] = "mq_getsetattr",
1: + [246] = "kexec_load",
1: + [247] = "waitid",
1: + [248] = "add_key",
1: + [249] = "request_key",
1: + [250] = "keyctl",
1: + [251] = "ioprio_set",
1: + [252] = "ioprio_get",
1: + [253] = "inotify_init",
1: + [254] = "inotify_add_watch",
1: + [255] = "inotify_rm_watch",
1: + [256] = "migrate_pages",
1: + [257] = "openat",
1: + [258] = "mkdirat",
1: + [259] = "mknodat",
1: + [260] = "fchownat",
1: + [261] = "futimesat",
1: + [262] = "newfstatat",
1: + [263] = "unlinkat",
1: + [264] = "renameat",
1: + [265] = "linkat",
1: + [266] = "symlinkat",
1: + [267] = "readlinkat",
1: + [268] = "fchmodat",
1: + [269] = "faccessat",
1: + [270] = "pselect6",
1: + [271] = "ppoll",
1: + [272] = "unshare",
1: + [273] = "set_robust_list",
1: + [274] = "get_robust_list",
1: + [275] = "splice",
1: + [276] = "tee",
1: + [277] = "sync_file_range",
1: + [278] = "vmsplice",
1: + [279] = "move_pages",
1: + [280] = "utimensat",
1: + [281] = "epoll_pwait",
1: + [282] = "signalfd",
1: + [283] = "timerfd_create",
1: + [284] = "eventfd",
1: + [285] = "fallocate",
1: + [286] = "timerfd_settime",
1: + [287] = "timerfd_gettime",
1: + [288] = "accept4",
1: + [289] = "signalfd4",
1: + [290] = "eventfd2",
1: + [291] = "epoll_create1",
1: + [292] = "dup3",
1: + [293] = "pipe2",
1: + [294] = "inotify_init1",
1: + [295] = "preadv",
1: + [296] = "pwritev",
1: + [297] = "rt_tgsigqueueinfo",
1: + [298] = "perf_event_open",
1: + [299] = "recvmmsg",
1: + [300] = "fanotify_init",
1: + [301] = "fanotify_mark",
1: + [302] = "prlimit64",
1: + [303] = "name_to_handle_at",
1: + [304] = "open_by_handle_at",
1: + [305] = "clock_adjtime",
1: + [306] = "syncfs",
1: + [307] = "sendmmsg",
1: + [308] = "setns",
1: + [309] = "getcpu",
1: + [310] = "process_vm_readv",
1: + [311] = "process_vm_writev",
1: + [312] = "kcmp",
1: + [313] = "finit_module",
1: + [314] = "sched_setattr",
1: + [315] = "sched_getattr",
1: + [316] = "renameat2",
1: + [317] = "seccomp",
1: + [318] = "getrandom",
1: + [319] = "memfd_create",
1: + [320] = "kexec_file_load",
1: + [321] = "bpf",
1: + [322] = "execveat",
1: + [323] = "userfaultfd",
1: + [324] = "membarrier",
1: + [325] = "mlock2",
1: + [326] = "copy_file_range",
1: + [327] = "preadv2",
1: + [328] = "pwritev2",
1: + [329] = "pkey_mprotect",
1: + [330] = "pkey_alloc",
1: + [331] = "pkey_free",
1: + [332] = "statx",
1: + [333] = "io_pgetevents",
1: + [334] = "rseq",
1: + [424] = "pidfd_send_signal",
1: + [425] = "io_uring_setup",
1: + [426] = "io_uring_enter",
1: + [427] = "io_uring_register",
1: + [428] = "open_tree",
1: + [429] = "move_mount",
1: + [430] = "fsopen",
1: + [431] = "fsconfig",
1: + [432] = "fsmount",
1: + [433] = "fspick",
1: + [434] = "pidfd_open",
1: + [435] = "clone3",
1: + [437] = "openat2",
1: + [438] = "pidfd_getfd",
1: };
1: -size_t syscall_names_x86_64_size = sizeof(syscall_names_x86_64)/sizeof(char*);
1: +size_t syscall_names_x86_64_size =
1: + sizeof(syscall_names_x86_64) / sizeof(char *);
1: #endif
1:
1: -void syscall_name(unsigned n, char *buf, size_t size)
1: -{
1: - const char *name = NULL;
1: +void syscall_name(unsigned n, char *buf, size_t size) {
1: + const char *name = NULL;
1:
1: - if (n < syscall_names_size)
1: - name = syscall_names[n];
1: + if (n < syscall_names_size)
1: + name = syscall_names[n];
1: #ifdef __x86_64__
1: - else if (n < syscall_names_x86_64_size)
1: - name = syscall_names_x86_64[n];
1: + else if (n < syscall_names_x86_64_size)
1: + name = syscall_names_x86_64[n];
1: #endif
1:
1: - if (name)
1: - strncpy(buf, name, size-1);
1: - else
1: - snprintf(buf, size, "[unknown: %u]", n);
1: + if (name)
1: + strncpy(buf, name, size - 1);
1: + else
1: + snprintf(buf, size, "[unknown: %u]", n);
1: }
1:
1: -int list_syscalls(void)
1: -{
1: - const char **list = syscall_names;
1: - size_t size = syscall_names_size;
1: +int list_syscalls(void) {
1: + const char **list = syscall_names;
1: + size_t size = syscall_names_size;
1:
1: #ifdef __x86_64__
1: - if (!size) {
1: - size = syscall_names_x86_64_size;
1: - list = syscall_names_x86_64;
1: - }
1: + if (!size) {
1: + size = syscall_names_x86_64_size;
1: + list = syscall_names_x86_64;
1: + }
1: #endif
1:
1: - for (size_t i = 0; i < size; i++) {
1: - if (list[i])
1: - printf("%3zd: %s\n", i, list[i]);
1: - }
1: + for (size_t i = 0; i < size; i++) {
1: + if (list[i])
1: + printf("%3zd: %s\n", i, list[i]);
1: + }
1:
1: - return (!list || !size);
1: + return (!list || !size);
1: }
1: -
1: diff --git a/libbpf-tools/syscount.bpf.c b/libbpf-tools/syscount.bpf.c
1: index ffac0be2..7eab9490 100644
1: --- a/libbpf-tools/syscount.bpf.c
1: +++ b/libbpf-tools/syscount.bpf.c
1: @@ -2,12 +2,12 @@
1: // Copyright (c) 2020 Anton Protopopov
1: //
1: // Based on syscount(8) from BCC by Sasha Goldshtein
1: -#include "vmlinux.h"
1: +#include <bpf/bpf_core_read.h>
1: #include <bpf/bpf_helpers.h>
1: #include <bpf/bpf_tracing.h>
1: -#include <bpf/bpf_core_read.h>
1: #include <string.h>
1: #include "syscount.h"
1: +#include "vmlinux.h"
1:
1: const volatile bool count_by_process = false;
1: const volatile bool measure_latency = false;
1: @@ -16,105 +16,100 @@ const volatile int filter_errno = false;
1: const volatile pid_t filter_pid = 0;
1:
1: struct {
1: - __uint(type, BPF_MAP_TYPE_HASH);
1: - __uint(max_entries, MAX_ENTRIES);
1: - __type(key, u32);
1: - __type(value, u64);
1: - __uint(map_flags, BPF_F_NO_PREALLOC);
1: + __uint(type, BPF_MAP_TYPE_HASH);
1: + __uint(max_entries, MAX_ENTRIES);
1: + __type(key, u32);
1: + __type(value, u64);
1: + __uint(map_flags, BPF_F_NO_PREALLOC);
1: } start SEC(".maps");
1:
1: struct {
1: - __uint(type, BPF_MAP_TYPE_HASH);
1: - __uint(max_entries, MAX_ENTRIES);
1: - __type(key, u32);
1: - __type(value, struct data_t);
1: - __uint(map_flags, BPF_F_NO_PREALLOC);
1: + __uint(type, BPF_MAP_TYPE_HASH);
1: + __uint(max_entries, MAX_ENTRIES);
1: + __type(key, u32);
1: + __type(value, struct data_t);
1: + __uint(map_flags, BPF_F_NO_PREALLOC);
1: } data SEC(".maps");
1:
1: -static __always_inline
1: -void *bpf_map_lookup_or_try_init(void *map, void *key, const void *init)
1: -{
1: - void *val;
1: - int err;
1: +static __always_inline void *bpf_map_lookup_or_try_init(void *map, void *key,
1: + const void *init) {
1: + void *val;
1: + int err;
1:
1: - val = bpf_map_lookup_elem(map, key);
1: - if (val)
1: - return val;
1: + val = bpf_map_lookup_elem(map, key);
1: + if (val)
1: + return val;
1:
1: - err = bpf_map_update_elem(map, key, init, 0);
1: - if (err)
1: - return (void *) 0;
1: + err = bpf_map_update_elem(map, key, init, 0);
1: + if (err)
1: + return (void *)0;
1:
1: - return bpf_map_lookup_elem(map, key);
1: + return bpf_map_lookup_elem(map, key);
1: }
1:
1: -static __always_inline
1: -void save_proc_name(struct data_t *val)
1: -{
1: - struct task_struct *current = (void *)bpf_get_current_task();
1: +static __always_inline void save_proc_name(struct data_t *val) {
1: + struct task_struct *current = (void *)bpf_get_current_task();
1:
1: - /* We should save the process name every time because it can be
1: - * changed (e.g., by exec). This can be optimized later by managing
1: - * this field with the help of tp/sched/sched_process_exec and
1: - * raw_tp/task_rename. */
1: - BPF_CORE_READ_STR_INTO(&val->comm, current, group_leader, comm);
1: + /* We should save the process name every time because it can be
1: + * changed (e.g., by exec). This can be optimized later by managing
1: + * this field with the help of tp/sched/sched_process_exec and
1: + * raw_tp/task_rename. */
1: + BPF_CORE_READ_STR_INTO(&val->comm, current, group_leader, comm);
1: }
1:
1: SEC("tracepoint/raw_syscalls/sys_enter")
1: -int sys_enter(struct trace_event_raw_sys_enter *args)
1: -{
1: - u64 id = bpf_get_current_pid_tgid();
1: - pid_t pid = id >> 32;
1: - u32 tid = id;
1: - u64 ts;
1: -
1: - if (filter_pid && pid != filter_pid)
1: - return 0;
1: -
1: - ts = bpf_ktime_get_ns();
1: - bpf_map_update_elem(&start, &tid, &ts, 0);
1: - return 0;
1: +int sys_enter(struct trace_event_raw_sys_enter *args) {
1: + u64 id = bpf_get_current_pid_tgid();
1: + pid_t pid = id >> 32;
1: + u32 tid = id;
1: + u64 ts;
1: +
1: + if (filter_pid && pid != filter_pid)
1: + return 0;
1: +
1: + ts = bpf_ktime_get_ns();
1: + bpf_map_update_elem(&start, &tid, &ts, 0);
1: + return 0;
1: }
1:
1: SEC("tracepoint/raw_syscalls/sys_exit")
1: -int sys_exit(struct trace_event_raw_sys_exit *args)
1: -{
1: - struct task_struct *current;
1: - u64 id = bpf_get_current_pid_tgid();
1: - static const struct data_t zero;
1: - pid_t pid = id >> 32;
1: - struct data_t *val;
1: - u64 *start_ts;
1: - u32 tid = id;
1: - u32 key;
1: -
1: - /* this happens when there is an interrupt */
1: - if (args->id == -1)
1: - return 0;
1: -
1: - if (filter_pid && pid != filter_pid)
1: - return 0;
1: - if (filter_failed && args->ret >= 0)
1: - return 0;
1: - if (filter_errno && args->ret != -filter_errno)
1: - return 0;
1: -
1: - if (measure_latency) {
1: - start_ts = bpf_map_lookup_elem(&start, &tid);
1: - if (!start_ts)
1: - return 0;
1: - }
1: -
1: - key = (count_by_process) ? pid : args->id;
1: - val = bpf_map_lookup_or_try_init(&data, &key, &zero);
1: - if (val) {
1: - val->count++;
1: - if (count_by_process)
1: - save_proc_name(val);
1: - if (measure_latency)
1: - val->total_ns += bpf_ktime_get_ns() - *start_ts;
1: - }
1: - return 0;
1: +int sys_exit(struct trace_event_raw_sys_exit *args) {
1: + struct task_struct *current;
1: + u64 id = bpf_get_current_pid_tgid();
1: + static const struct data_t zero;
1: + pid_t pid = id >> 32;
1: + struct data_t *val;
1: + u64 *start_ts;
1: + u32 tid = id;
1: + u32 key;
1: +
1: + /* this happens when there is an interrupt */
1: + if (args->id == -1)
1: + return 0;
1: +
1: + if (filter_pid && pid != filter_pid)
1: + return 0;
1: + if (filter_failed && args->ret >= 0)
1: + return 0;
1: + if (filter_errno && args->ret != -filter_errno)
1: + return 0;
1: +
1: + if (measure_latency) {
1: + start_ts = bpf_map_lookup_elem(&start, &tid);
1: + if (!start_ts)
1: + return 0;
1: + }
1: +
1: + key = (count_by_process) ? pid : args->id;
1: + val = bpf_map_lookup_or_try_init(&data, &key, &zero);
1: + if (val) {
1: + val->count++;
1: + if (count_by_process)
1: + save_proc_name(val);
1: + if (measure_latency)
1: + val->total_ns += bpf_ktime_get_ns() - *start_ts;
1: + }
1: + return 0;
1: }
1:
1: char LICENSE[] SEC("license") = "GPL";
1: diff --git a/libbpf-tools/syscount.c b/libbpf-tools/syscount.c
1: index 98cb5c6a..1c247d23 100644
1: --- a/libbpf-tools/syscount.c
1: +++ b/libbpf-tools/syscount.c
1: @@ -2,481 +2,461 @@
1: // Copyright (c) 2020 Anton Protopopov
1: //
1: // Based on syscount(8) from BCC by Sasha Goldshtein
1: -#include <sys/resource.h>
1: -#include <unistd.h>
1: -#include <signal.h>
1: -#include <fcntl.h>
1: -#include <time.h>
1: +#include "syscount.h"
1: #include <argp.h>
1: #include <bpf/bpf.h>
1: -#include "syscount.h"
1: -#include "syscount.skel.h"
1: +#include <fcntl.h>
1: +#include <signal.h>
1: +#include <sys/resource.h>
1: +#include <time.h>
1: +#include <unistd.h>
1: #include "errno_helpers.h"
1: #include "syscall_helpers.h"
1: +#include "syscount.skel.h"
1:
1: /* This structure extends data_t by adding a key item which should be sorted
1: * together with the count and total_ns fields */
1: struct data_ext_t {
1: - __u64 count;
1: - __u64 total_ns;
1: - char comm[TASK_COMM_LEN];
1: - __u32 key;
1: + __u64 count;
1: + __u64 total_ns;
1: + char comm[TASK_COMM_LEN];
1: + __u32 key;
1: };
1:
1: -
1: #define warn(...) fprintf(stderr, __VA_ARGS__)
1:
1: const char *argp_program_version = "syscount 0.1";
1: const char *argp_program_bug_address = "<bpf@vger.kernel.org>";
1: static const char argp_program_doc[] =
1: -"\nsyscount: summarize syscall counts and latencies\n"
1: -"\n"
1: -"EXAMPLES:\n"
1: -" syscount # print top 10 syscalls by count every second\n"
1: -" syscount -p $(pidof dd) # look only at a particular process\n"
1: -" syscount -L # measure and sort output by latency\n"
1: -" syscount -P # group statistics by pid, not by syscall\n"
1: -" syscount -x -i 5 # count only failed syscalls\n"
1: -" syscount -e ENOENT -i 5 # count only syscalls failed with a given errno"
1: -;
1: + "\nsyscount: summarize syscall counts and latencies\n"
1: + "\n"
1: + "EXAMPLES:\n"
1: + " syscount # print top 10 syscalls by count every "
1: + "second\n"
1: + " syscount -p $(pidof dd) # look only at a particular process\n"
1: + " syscount -L # measure and sort output by latency\n"
1: + " syscount -P # group statistics by pid, not by syscall\n"
1: + " syscount -x -i 5 # count only failed syscalls\n"
1: + " syscount -e ENOENT -i 5 # count only syscalls failed with a given "
1: + "errno";
1:
1: static const struct argp_option opts[] = {
1: - { "verbose", 'v', NULL, 0, "Verbose debug output" },
1: - { "pid", 'p', "PID", 0, "Process PID to trace" },
1: - { "interval", 'i', "INTERVAL", 0, "Print summary at this interval"
1: - " (seconds), 0 for infinite wait (default)" },
1: - { "duration", 'd', "DURATION", 0, "Total tracing duration (seconds)" },
1: - { "top", 'T', "TOP", 0, "Print only the top syscalls (default 10)" },
1: - { "failures", 'x', NULL, 0, "Trace only failed syscalls" },
1: - { "latency", 'L', NULL, 0, "Collect syscall latency" },
1: - { "milliseconds", 'm', NULL, 0, "Display latency in milliseconds"
1: - " (default: microseconds)" },
1: - { "process", 'P', NULL, 0, "Count by process and not by syscall" },
1: - { "errno", 'e', "ERRNO", 0, "Trace only syscalls that return this error"
1: - "(numeric or EPERM, etc.)" },
1: - { "list", 'l', NULL, 0, "Print list of recognized syscalls and exit" },
1: - {},
1: + {"verbose", 'v', NULL, 0, "Verbose debug output"},
1: + {"pid", 'p', "PID", 0, "Process PID to trace"},
1: + {"interval", 'i', "INTERVAL", 0,
1: + "Print summary at this interval"
1: + " (seconds), 0 for infinite wait (default)"},
1: + {"duration", 'd', "DURATION", 0, "Total tracing duration (seconds)"},
1: + {"top", 'T', "TOP", 0, "Print only the top syscalls (default 10)"},
1: + {"failures", 'x', NULL, 0, "Trace only failed syscalls"},
1: + {"latency", 'L', NULL, 0, "Collect syscall latency"},
1: + {"milliseconds", 'm', NULL, 0,
1: + "Display latency in milliseconds"
1: + " (default: microseconds)"},
1: + {"process", 'P', NULL, 0, "Count by process and not by syscall"},
1: + {"errno", 'e', "ERRNO", 0,
1: + "Trace only syscalls that return this error"
1: + "(numeric or EPERM, etc.)"},
1: + {"list", 'l', NULL, 0, "Print list of recognized syscalls and exit"},
1: + {},
1: };
1:
1: static struct env {
1: - bool list_syscalls;
1: - bool milliseconds;
1: - bool failures;
1: - bool verbose;
1: - bool latency;
1: - bool process;
1: - int filter_errno;
1: - int interval;
1: - int duration;
1: - int top;
1: - pid_t pid;
1: + bool list_syscalls;
1: + bool milliseconds;
1: + bool failures;
1: + bool verbose;
1: + bool latency;
1: + bool process;
1: + int filter_errno;
1: + int interval;
1: + int duration;
1: + int top;
1: + pid_t pid;
1: } env = {
1: - .top = 10,
1: + .top = 10,
1: };
1:
1: -static int get_int(const char *arg, int *ret, int min, int max)
1: -{
1: - char *end;
1: - long val;
1: -
1: - errno = 0;
1: - val = strtol(arg, &end, 10);
1: - if (errno) {
1: - warn("strtol: %s: %s\n", arg, strerror(errno));
1: - return -1;
1: - } else if (end == arg || val < min || val > max) {
1: - return -1;
1: - }
1: - if (ret)
1: - *ret = val;
1: - return 0;
1: +static int get_int(const char *arg, int *ret, int min, int max) {
1: + char *end;
1: + long val;
1: +
1: + errno = 0;
1: + val = strtol(arg, &end, 10);
1: + if (errno) {
1: + warn("strtol: %s: %s\n", arg, strerror(errno));
1: + return -1;
1: + } else if (end == arg || val < min || val > max) {
1: + return -1;
1: + }
1: + if (ret)
1: + *ret = val;
1: + return 0;
1: }
1:
1: -static int libbpf_print_fn(enum libbpf_print_level level,
1: - const char *format, va_list args)
1: -{
1: - if (level == LIBBPF_DEBUG && !env.verbose)
1: - return 0;
1: +static int libbpf_print_fn(enum libbpf_print_level level, const char *format,
1: + va_list args) {
1: + if (level == LIBBPF_DEBUG && !env.verbose)
1: + return 0;
1:
1: - return vfprintf(stderr, format, args);
1: + return vfprintf(stderr, format, args);
1: }
1:
1: -static int bump_memlock_rlimit(void)
1: -{
1: - struct rlimit rlim_new = {
1: - .rlim_cur = RLIM_INFINITY,
1: - .rlim_max = RLIM_INFINITY,
1: - };
1: +static int bump_memlock_rlimit(void) {
1: + struct rlimit rlim_new = {
1: + .rlim_cur = RLIM_INFINITY,
1: + .rlim_max = RLIM_INFINITY,
1: + };
1:
1: - return setrlimit(RLIMIT_MEMLOCK, &rlim_new);
1: + return setrlimit(RLIMIT_MEMLOCK, &rlim_new);
1: }
1:
1: -static int compar_count(const void *dx, const void *dy)
1: -{
1: - __u64 x = ((struct data_ext_t *) dx)->count;
1: - __u64 y = ((struct data_ext_t *) dy)->count;
1: - return x > y ? -1 : !(x == y);
1: +static int compar_count(const void *dx, const void *dy) {
1: + __u64 x = ((struct data_ext_t *)dx)->count;
1: + __u64 y = ((struct data_ext_t *)dy)->count;
1: + return x > y ? -1 : !(x == y);
1: }
1:
1: -static int compar_latency(const void *dx, const void *dy)
1: -{
1: - __u64 x = ((struct data_ext_t *) dx)->total_ns;
1: - __u64 y = ((struct data_ext_t *) dy)->total_ns;
1: - return x > y ? -1 : !(x == y);
1: +static int compar_latency(const void *dx, const void *dy) {
1: + __u64 x = ((struct data_ext_t *)dx)->total_ns;
1: + __u64 y = ((struct data_ext_t *)dy)->total_ns;
1: + return x > y ? -1 : !(x == y);
1: }
1:
1: -static const char *agg_col(struct data_ext_t *val, char *buf, size_t size)
1: -{
1: - if (env.process) {
1: - snprintf(buf, size, "%-6u %-15s", val->key, val->comm);
1: - } else {
1: - syscall_name(val->key, buf, size);
1: - }
1: - return buf;
1: +static const char *agg_col(struct data_ext_t *val, char *buf, size_t size) {
1: + if (env.process) {
1: + snprintf(buf, size, "%-6u %-15s", val->key, val->comm);
1: + } else {
1: + syscall_name(val->key, buf, size);
1: + }
1: + return buf;
1: }
1:
1: -static const char *agg_colname(void)
1: -{
1: - return (env.process) ? "PID COMM" : "SYSCALL";
1: +static const char *agg_colname(void) {
1: + return (env.process) ? "PID COMM" : "SYSCALL";
1: }
1:
1: -static const char *time_colname(void)
1: -{
1: - return (env.milliseconds) ? "TIME (ms)" : "TIME (us)";
1: +static const char *time_colname(void) {
1: + return (env.milliseconds) ? "TIME (ms)" : "TIME (us)";
1: }
1:
1: -static void print_latency_header(void)
1: -{
1: - printf("%-22s %8s %16s\n", agg_colname(), "COUNT", time_colname());
1: +static void print_latency_header(void) {
1: + printf("%-22s %8s %16s\n", agg_colname(), "COUNT", time_colname());
1: }
1:
1: -static void print_count_header(void)
1: -{
1: - printf("%-22s %8s\n", agg_colname(), "COUNT");
1: +static void print_count_header(void) {
1: + printf("%-22s %8s\n", agg_colname(), "COUNT");
1: }
1:
1: -static void print_latency(struct data_ext_t *vals, size_t count)
1: -{
1: - double div = env.milliseconds ? 1000000.0 : 1000.0;
1: - char buf[2 * TASK_COMM_LEN];
1: -
1: - print_latency_header();
1: - for (int i = 0; i < count && i < env.top; i++)
1: - printf("%-22s %8llu %16.3lf\n",
1: - agg_col(&vals[i], buf, sizeof(buf)),
1: - vals[i].count, vals[i].total_ns / div);
1: - printf("\n");
1: +static void print_latency(struct data_ext_t *vals, size_t count) {
1: + double div = env.milliseconds ? 1000000.0 : 1000.0;
1: + char buf[2 * TASK_COMM_LEN];
1: +
1: + print_latency_header();
1: + for (int i = 0; i < count && i < env.top; i++)
1: + printf("%-22s %8llu %16.3lf\n", agg_col(&vals[i], buf, sizeof(buf)),
1: + vals[i].count, vals[i].total_ns / div);
1: + printf("\n");
1: }
1:
1: -static void print_count(struct data_ext_t *vals, size_t count)
1: -{
1: - char buf[2 * TASK_COMM_LEN];
1: +static void print_count(struct data_ext_t *vals, size_t count) {
1: + char buf[2 * TASK_COMM_LEN];
1:
1: - print_count_header();
1: - for (int i = 0; i < count && i < env.top; i++)
1: - printf("%-22s %8llu\n",
1: - agg_col(&vals[i], buf, sizeof(buf)), vals[i].count);
1: - printf("\n");
1: + print_count_header();
1: + for (int i = 0; i < count && i < env.top; i++)
1: + printf("%-22s %8llu\n", agg_col(&vals[i], buf, sizeof(buf)), vals[i].count);
1: + printf("\n");
1: }
1:
1: -static void print_timestamp()
1: -{
1: - time_t now = time(NULL);
1: - struct tm tm;
1: +static void print_timestamp() {
1: + time_t now = time(NULL);
1: + struct tm tm;
1:
1: - if (localtime_r(&now, &tm))
1: - printf("[%02d:%02d:%02d]\n", tm.tm_hour, tm.tm_min, tm.tm_sec);
1: - else
1: - warn("localtime_r: %s", strerror(errno));
1: + if (localtime_r(&now, &tm))
1: + printf("[%02d:%02d:%02d]\n", tm.tm_hour, tm.tm_min, tm.tm_sec);
1: + else
1: + warn("localtime_r: %s", strerror(errno));
1: }
1:
1: static bool batch_map_ops = true; /* hope for the best */
1:
1: -static bool read_vals_batch(int fd, struct data_ext_t *vals, __u32 *count)
1: -{
1: - struct data_t orig_vals[*count];
1: - void *in = NULL, *out;
1: - __u32 n, n_read = 0;
1: - __u32 keys[*count];
1: - int err = 0;
1: -
1: - while (n_read < *count && !err) {
1: - n = *count - n_read;
1: - err = bpf_map_lookup_and_delete_batch(fd, &in, &out,
1: - keys + n_read, orig_vals + n_read, &n, NULL);
1: - if (err && errno != ENOENT) {
1: - /* we want to propagate EINVAL upper, so that
1: - * the batch_map_ops flag is set to false */
1: - if (errno != EINVAL)
1: - warn("bpf_map_lookup_and_delete_batch: %s\n",
1: - strerror(-err));
1: - return false;
1: - }
1: - n_read += n;
1: - in = out;
1: - }
1: -
1: - for (__u32 i = 0; i < n_read; i++) {
1: - vals[i].count = orig_vals[i].count;
1: - vals[i].total_ns = orig_vals[i].total_ns;
1: - vals[i].key = keys[i];
1: - strncpy(vals[i].comm, orig_vals[i].comm, TASK_COMM_LEN);
1: - }
1: -
1: - *count = n_read;
1: - return true;
1: +static bool read_vals_batch(int fd, struct data_ext_t *vals, __u32 *count) {
1: + struct data_t orig_vals[*count];
1: + void *in = NULL, *out;
1: + __u32 n, n_read = 0;
1: + __u32 keys[*count];
1: + int err = 0;
1: +
1: + while (n_read < *count && !err) {
1: + n = *count - n_read;
1: + err = bpf_map_lookup_and_delete_batch(fd, &in, &out, keys + n_read,
1: + orig_vals + n_read, &n, NULL);
1: + if (err && errno != ENOENT) {
1: + /* we want to propagate EINVAL upper, so that
1: + * the batch_map_ops flag is set to false */
1: + if (errno != EINVAL)
1: + warn("bpf_map_lookup_and_delete_batch: %s\n", strerror(-err));
1: + return false;
1: + }
1: + n_read += n;
1: + in = out;
1: + }
1: +
1: + for (__u32 i = 0; i < n_read; i++) {
1: + vals[i].count = orig_vals[i].count;
1: + vals[i].total_ns = orig_vals[i].total_ns;
1: + vals[i].key = keys[i];
1: + strncpy(vals[i].comm, orig_vals[i].comm, TASK_COMM_LEN);
1: + }
1: +
1: + *count = n_read;
1: + return true;
1: }
1:
1: -static bool read_vals(int fd, struct data_ext_t *vals, __u32 *count)
1: -{
1: - __u32 keys[MAX_ENTRIES];
1: - struct data_t val;
1: - __u32 key = -1;
1: - __u32 next_key;
1: - int i = 0;
1: - int err;
1: -
1: - if (batch_map_ops) {
1: - bool ok = read_vals_batch(fd, vals, count);
1: - if (!ok && errno == EINVAL) {
1: - /* fall back to a racy variant */
1: - batch_map_ops = false;
1: - } else {
1: - return ok;
1: - }
1: - }
1: -
1: - if (!vals || !count || !*count)
1: - return true;
1: -
1: - for (key = -1; i < *count; ) {
1: - err = bpf_map_get_next_key(fd, &key, &next_key);
1: - if (err && errno != ENOENT) {
1: - warn("failed to get next key: %s\n", strerror(errno));
1: - return false;
1: - } else if (err) {
1: - break;
1: - }
1: - key = keys[i++] = next_key;
1: - }
1: -
1: - for (int j = 0; j < i; j++) {
1: - err = bpf_map_lookup_elem(fd, &keys[j], &val);
1: - if (err && errno != ENOENT) {
1: - warn("failed to lookup element: %s\n", strerror(errno));
1: - return false;
1: - }
1: - vals[j].count = val.count;
1: - vals[j].total_ns = val.total_ns;
1: - vals[j].key = keys[j];
1: - memcpy(vals[j].comm, val.comm, TASK_COMM_LEN);
1: - }
1: -
1: - /* There is a race here: system calls which are represented by keys
1: - * above and happened between lookup and delete will be ignored. This
1: - * will be fixed in future by using bpf_map_lookup_and_delete_batch,
1: - * but this function is too fresh to use it in bcc. */
1: -
1: - for (int j = 0; j < i; j++) {
1: - err = bpf_map_delete_elem(fd, &keys[j]);
1: - if (err) {
1: - warn("failed to delete element: %s\n", strerror(errno));
1: - return false;
1: - }
1: - }
1: -
1: - *count = i;
1: - return true;
1: +static bool read_vals(int fd, struct data_ext_t *vals, __u32 *count) {
1: + __u32 keys[MAX_ENTRIES];
1: + struct data_t val;
1: + __u32 key = -1;
1: + __u32 next_key;
1: + int i = 0;
1: + int err;
1: +
1: + if (batch_map_ops) {
1: + bool ok = read_vals_batch(fd, vals, count);
1: + if (!ok && errno == EINVAL) {
1: + /* fall back to a racy variant */
1: + batch_map_ops = false;
1: + } else {
1: + return ok;
1: + }
1: + }
1: +
1: + if (!vals || !count || !*count)
1: + return true;
1: +
1: + for (key = -1; i < *count;) {
1: + err = bpf_map_get_next_key(fd, &key, &next_key);
1: + if (err && errno != ENOENT) {
1: + warn("failed to get next key: %s\n", strerror(errno));
1: + return false;
1: + } else if (err) {
1: + break;
1: + }
1: + key = keys[i++] = next_key;
1: + }
1: +
1: + for (int j = 0; j < i; j++) {
1: + err = bpf_map_lookup_elem(fd, &keys[j], &val);
1: + if (err && errno != ENOENT) {
1: + warn("failed to lookup element: %s\n", strerror(errno));
1: + return false;
1: + }
1: + vals[j].count = val.count;
1: + vals[j].total_ns = val.total_ns;
1: + vals[j].key = keys[j];
1: + memcpy(vals[j].comm, val.comm, TASK_COMM_LEN);
1: + }
1: +
1: + /* There is a race here: system calls which are represented by keys
1: + * above and happened between lookup and delete will be ignored. This
1: + * will be fixed in future by using bpf_map_lookup_and_delete_batch,
1: + * but this function is too fresh to use it in bcc. */
1: +
1: + for (int j = 0; j < i; j++) {
1: + err = bpf_map_delete_elem(fd, &keys[j]);
1: + if (err) {
1: + warn("failed to delete element: %s\n", strerror(errno));
1: + return false;
1: + }
1: + }
1: +
1: + *count = i;
1: + return true;
1: }
1:
1: -static error_t parse_arg(int key, char *arg, struct argp_state *state)
1: -{
1: - int number;
1: - int err;
1: -
1: - switch (key) {
1: - case 'v':
1: - env.verbose = true;
1: - break;
1: - case 'x':
1: - env.failures = true;
1: - break;
1: - case 'L':
1: - env.latency = true;
1: - break;
1: - case 'm':
1: - env.milliseconds = true;
1: - break;
1: - case 'P':
1: - env.process = true;
1: - break;
1: - case 'p':
1: - err = get_int(arg, &env.pid, 1, INT_MAX);
1: - if (err) {
1: - warn("invalid PID: %s\n", arg);
1: - argp_usage(state);
1: - }
1: - break;
1: - case 'i':
1: - err = get_int(arg, &env.interval, 0, INT_MAX);
1: - if (err) {
1: - warn("invalid INTERVAL: %s\n", arg);
1: - argp_usage(state);
1: - }
1: - break;
1: - case 'd':
1: - err = get_int(arg, &env.duration, 1, INT_MAX);
1: - if (err) {
1: - warn("invalid DURATION: %s\n", arg);
1: - argp_usage(state);
1: - }
1: - break;
1: - case 'T':
1: - err = get_int(arg, &env.top, 1, INT_MAX);
1: - if (err) {
1: - warn("invalid TOP: %s\n", arg);
1: - argp_usage(state);
1: - }
1: - break;
1: - case 'e':
1: - err = get_int(arg, &number, 1, INT_MAX);
1: - if (err) {
1: - number = errno_by_name(arg);
1: - if (number < 0) {
1: - warn("invalid errno: %s (bad, or can't "
1: - "parse dynamically; consider using "
1: - "numeric value and/or installing the "
1: - "errno program from moreutils)\n", arg);
1: - argp_usage(state);
1: - }
1: - }
1: - env.filter_errno = number;
1: - break;
1: - case 'l':
1: - env.list_syscalls = true;
1: - break;
1: - default:
1: - return ARGP_ERR_UNKNOWN;
1: - }
1: - return 0;
1: +static error_t parse_arg(int key, char *arg, struct argp_state *state) {
1: + int number;
1: + int err;
1: +
1: + switch (key) {
1: + case 'v':
1: + env.verbose = true;
1: + break;
1: + case 'x':
1: + env.failures = true;
1: + break;
1: + case 'L':
1: + env.latency = true;
1: + break;
1: + case 'm':
1: + env.milliseconds = true;
1: + break;
1: + case 'P':
1: + env.process = true;
1: + break;
1: + case 'p':
1: + err = get_int(arg, &env.pid, 1, INT_MAX);
1: + if (err) {
1: + warn("invalid PID: %s\n", arg);
1: + argp_usage(state);
1: + }
1: + break;
1: + case 'i':
1: + err = get_int(arg, &env.interval, 0, INT_MAX);
1: + if (err) {
1: + warn("invalid INTERVAL: %s\n", arg);
1: + argp_usage(state);
1: + }
1: + break;
1: + case 'd':
1: + err = get_int(arg, &env.duration, 1, INT_MAX);
1: + if (err) {
1: + warn("invalid DURATION: %s\n", arg);
1: + argp_usage(state);
1: + }
1: + break;
1: + case 'T':
1: + err = get_int(arg, &env.top, 1, INT_MAX);
1: + if (err) {
1: + warn("invalid TOP: %s\n", arg);
1: + argp_usage(state);
1: + }
1: + break;
1: + case 'e':
1: + err = get_int(arg, &number, 1, INT_MAX);
1: + if (err) {
1: + number = errno_by_name(arg);
1: + if (number < 0) {
1: + warn(
1: + "invalid errno: %s (bad, or can't "
1: + "parse dynamically; consider using "
1: + "numeric value and/or installing the "
1: + "errno program from moreutils)\n",
1: + arg);
1: + argp_usage(state);
1: + }
1: + }
1: + env.filter_errno = number;
1: + break;
1: + case 'l':
1: + env.list_syscalls = true;
1: + break;
1: + default:
1: + return ARGP_ERR_UNKNOWN;
1: + }
1: + return 0;
1: }
1:
1: static volatile sig_atomic_t hang_on = 1;
1:
1: -void sig_int(int signo)
1: -{
1: - hang_on = 0;
1: -}
1: -
1: -int main(int argc, char **argv)
1: -{
1: - void (*print)(struct data_ext_t *, size_t);
1: - int (*compar)(const void *, const void *);
1: - static const struct argp argp = {
1: - .options = opts,
1: - .parser = parse_arg,
1: - .doc = argp_program_doc,
1: - };
1: - struct data_ext_t vals[MAX_ENTRIES];
1: - struct syscount_bpf *obj;
1: - int seconds = 0;
1: - __u32 count;
1: - int err;
1: -
1: - init_syscall_names();
1: -
1: - err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
1: - if (err)
1: - goto free_names;
1: -
1: - if (env.list_syscalls) {
1: - list_syscalls();
1: - goto free_names;
1: - }
1: -
1: - libbpf_set_print(libbpf_print_fn);
1: -
1: - err = bump_memlock_rlimit();
1: - if (err) {
1: - warn("failed to increase rlimit: %s\n", strerror(errno));
1: - goto free_names;
1: - }
1: -
1: - obj = syscount_bpf__open();
1: - if (!obj) {
1: - warn("failed to open and/or load BPF object\n");
1: - err = 1;
1: - goto free_names;
1: - }
1: -
1: - if (env.pid)
1: - obj->rodata->filter_pid = env.pid;
1: - if (env.failures)
1: - obj->rodata->filter_failed = true;
1: - if (env.latency)
1: - obj->rodata->measure_latency = true;
1: - if (env.process)
1: - obj->rodata->count_by_process = true;
1: - if (env.filter_errno)
1: - obj->rodata->filter_errno = env.filter_errno;
1: -
1: - err = syscount_bpf__load(obj);
1: - if (err) {
1: - warn("failed to load BPF object: %s\n", strerror(-err));
1: - goto cleanup_obj;
1: - }
1: -
1: - obj->links.sys_exit = bpf_program__attach(obj->progs.sys_exit);
1: - err = libbpf_get_error(obj->links.sys_exit);
1: - if (err) {
1: - warn("failed to attach sys_exit program: %s\n",
1: - strerror(-err));
1: - goto cleanup_obj;
1: - }
1: - if (env.latency) {
1: - obj->links.sys_enter = bpf_program__attach(obj->progs.sys_enter);
1: - err = libbpf_get_error(obj->links.sys_enter);
1: - if (err) {
1: - warn("failed to attach sys_enter programs: %s\n",
1: - strerror(-err));
1: - goto cleanup_obj;
1: - }
1: - }
1: -
1: - if (signal(SIGINT, sig_int) == SIG_ERR) {
1: - warn("can't set signal handler: %s\n", strerror(-errno));
1: - goto cleanup_obj;
1: - }
1: -
1: - compar = env.latency ? compar_latency : compar_count;
1: - print = env.latency ? print_latency : print_count;
1: -
1: - printf("Tracing syscalls, printing top %d... Ctrl+C to quit.\n", env.top);
1: - while (hang_on) {
1: - sleep(env.interval ?: 1);
1: - if (env.duration) {
1: - seconds += env.interval ?: 1;
1: - if (seconds >= env.duration)
1: - hang_on = 0;
1: - }
1: - if (hang_on && !env.interval)
1: - continue;
1: -
1: - count = MAX_ENTRIES;
1: - if (!read_vals(bpf_map__fd(obj->maps.data), vals, &count))
1: - break;
1: - if (!count)
1: - continue;
1: -
1: - qsort(vals, count, sizeof(vals[0]), compar);
1: - print_timestamp();
1: - print(vals, count);
1: - }
1: +void sig_int(int signo) { hang_on = 0; }
1: +
1: +int main(int argc, char **argv) {
1: + void (*print)(struct data_ext_t *, size_t);
1: + int (*compar)(const void *, const void *);
1: + static const struct argp argp = {
1: + .options = opts,
1: + .parser = parse_arg,
1: + .doc = argp_program_doc,
1: + };
1: + struct data_ext_t vals[MAX_ENTRIES];
1: + struct syscount_bpf *obj;
1: + int seconds = 0;
1: + __u32 count;
1: + int err;
1: +
1: + init_syscall_names();
1: +
1: + err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
1: + if (err)
1: + goto free_names;
1: +
1: + if (env.list_syscalls) {
1: + list_syscalls();
1: + goto free_names;
1: + }
1: +
1: + libbpf_set_print(libbpf_print_fn);
1: +
1: + err = bump_memlock_rlimit();
1: + if (err) {
1: + warn("failed to increase rlimit: %s\n", strerror(errno));
1: + goto free_names;
1: + }
1: +
1: + obj = syscount_bpf__open();
1: + if (!obj) {
1: + warn("failed to open and/or load BPF object\n");
1: + err = 1;
1: + goto free_names;
1: + }
1: +
1: + if (env.pid)
1: + obj->rodata->filter_pid = env.pid;
1: + if (env.failures)
1: + obj->rodata->filter_failed = true;
1: + if (env.latency)
1: + obj->rodata->measure_latency = true;
1: + if (env.process)
1: + obj->rodata->count_by_process = true;
1: + if (env.filter_errno)
1: + obj->rodata->filter_errno = env.filter_errno;
1: +
1: + err = syscount_bpf__load(obj);
1: + if (err) {
1: + warn("failed to load BPF object: %s\n", strerror(-err));
1: + goto cleanup_obj;
1: + }
1: +
1: + obj->links.sys_exit = bpf_program__attach(obj->progs.sys_exit);
1: + err = libbpf_get_error(obj->links.sys_exit);
1: + if (err) {
1: + warn("failed to attach sys_exit program: %s\n", strerror(-err));
1: + goto cleanup_obj;
1: + }
1: + if (env.latency) {
1: + obj->links.sys_enter = bpf_program__attach(obj->progs.sys_enter);
1: + err = libbpf_get_error(obj->links.sys_enter);
1: + if (err) {
1: + warn("failed to attach sys_enter programs: %s\n", strerror(-err));
1: + goto cleanup_obj;
1: + }
1: + }
1: +
1: + if (signal(SIGINT, sig_int) == SIG_ERR) {
1: + warn("can't set signal handler: %s\n", strerror(-errno));
1: + goto cleanup_obj;
1: + }
1: +
1: + compar = env.latency ? compar_latency : compar_count;
1: + print = env.latency ? print_latency : print_count;
1: +
1: + printf("Tracing syscalls, printing top %d... Ctrl+C to quit.\n", env.top);
1: + while (hang_on) {
1: + sleep(env.interval ?: 1);
1: + if (env.duration) {
1: + seconds += env.interval ?: 1;
1: + if (seconds >= env.duration)
1: + hang_on = 0;
1: + }
1: + if (hang_on && !env.interval)
1: + continue;
1: +
1: + count = MAX_ENTRIES;
1: + if (!read_vals(bpf_map__fd(obj->maps.data), vals, &count))
1: + break;
1: + if (!count)
1: + continue;
1: +
1: + qsort(vals, count, sizeof(vals[0]), compar);
1: + print_timestamp();
1: + print(vals, count);
1: + }
1:
1: cleanup_obj:
1: - syscount_bpf__destroy(obj);
1: + syscount_bpf__destroy(obj);
1: free_names:
1: - free_syscall_names();
1: + free_syscall_names();
1:
1: - return err != 0;
1: + return err != 0;
1: }
1: diff --git a/libbpf-tools/syscount.h b/libbpf-tools/syscount.h
1: index 148305a9..2418d85b 100644
1: --- a/libbpf-tools/syscount.h
1: +++ b/libbpf-tools/syscount.h
1: @@ -8,9 +8,9 @@
1: #define TASK_COMM_LEN 16
1:
1: struct data_t {
1: - __u64 count;
1: - __u64 total_ns;
1: - char comm[TASK_COMM_LEN];
1: + __u64 count;
1: + __u64 total_ns;
1: + char comm[TASK_COMM_LEN];
1: };
1:
1: #endif /* __SYSCOUNT_H */
1: diff --git a/libbpf-tools/xfsslower.c b/libbpf-tools/xfsslower.c
1: index d381f3f9..ba301f2a 100644
1: --- a/libbpf-tools/xfsslower.c
1: +++ b/libbpf-tools/xfsslower.c
1: @@ -192,8 +192,8 @@ int main(int argc, char **argv)
1:
1: obj = xfsslower_bpf__open();
1: if (!obj) {
1: - fprintf(stderr, "failed to open and/or load BPF object\n");
1: - return 1;
1: + fprintf(stderr, "failed to open and/or load BPF object\n");
1: + return 1;
1: }
1:
1: /* initialize global data (filtering options) */
1: Ignoring changes in the following files (wrong extension):
1: libbpf-tools/Makefile
1: libbpf-tools/.gitignore
1: Running clang-format on the following files:
1: libbpf-tools/xfsslower.c
1: libbpf-tools/syscount.bpf.c
1: libbpf-tools/filelife.c
1: libbpf-tools/syscall_helpers.h
1: libbpf-tools/syscount.c
1: libbpf-tools/errno_helpers.c
1: libbpf-tools/syscall_helpers.c
1: libbpf-tools/errno_helpers.h
1: libbpf-tools/drsnoop.c
1: libbpf-tools/syscount.h
1: old tree: 31181d3821f5f6bbe54867f798b0aebb0a616c97
1: new tree: 73977e1fda6bfa87c06474a198a758d267936429
1/42 Test #1: style-check ...................... Passed 3.92 sec
test 2
Start 2: c_test_static
2: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "c_test_static" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/cc/test_static"
2: Test timeout computed to be: 9.99988e+06
2: clang -cc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -coverage-notes-file /usr/src/linux-headers-4.15.0-1009-gcp/main.gcno -nostdsysteminc -nobuiltininc -resource-dir lib/clang/6.0.0 -isystem /virtual/lib/clang/include -include ./include/linux/kconfig.h -include /virtual/include/bcc/bpf.h -include /virtual/include/bcc/helpers.h -isystem /virtual/include -I /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/cc -D __BPF_TRACING__ -I ./arch/x86/include -I arch/x86/include/generated/uapi -I arch/x86/include/generated -I include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi -I ./include/uapi -I include/generated/uapi -D __KERNEL__ -D __HAVE_BUILTIN_BSWAP16__ -D __HAVE_BUILTIN_BSWAP32__ -D __HAVE_BUILTIN_BSWAP64__ -O2 -Wno-deprecated-declarations -Wno-gnu-variable-sized-type-not-at-end -Wno-pragma-once-outside-header -Wno-address-of-packed-member -Wno-unknown-warning-option -Wno-unused-value -Wno-pointer-sign -fdebug-compilation-dir /usr/src/linux-headers-4.15.0-1009-gcp -ferror-limit 19 -fmessage-length 0 -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o main.bc -x c /virtual/main.c
2: #if defined(BPF_LICENSE)
2: #error BPF_LICENSE cannot be specified through cflags
2: #endif
2: #if !defined(CONFIG_CC_STACKPROTECTOR)
2: #if defined(CONFIG_CC_STACKPROTECTOR_AUTO) \
2: || defined(CONFIG_CC_STACKPROTECTOR_REGULAR) \
2: || defined(CONFIG_CC_STACKPROTECTOR_STRONG)
2: #define CONFIG_CC_STACKPROTECTOR
2: #endif
2: #endif
2: #define bpf_probe_read_kernel bpf_probe_read
2: #define bpf_probe_read_kernel_str bpf_probe_read_str
2: #define bpf_probe_read_user bpf_probe_read
2: #define bpf_probe_read_user_str bpf_probe_read_str
2: BPF_TABLE("array", int, int, stats, 10);
2:
2: #include <bcc/footer.h>
2: Running from kernel directory at: /lib/modules/4.15.0-1009-gcp/build
2/42 Test #2: c_test_static .................... Passed 1.94 sec
test 3
Start 3: test_libbcc
3: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "c_test_all" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/cc/test_libbcc"
3: Test timeout computed to be: 9.99988e+06
3: /virtual/main.c:2:7: error: map not found: /sys/fs/bpf/test_pinned_table
3: BPF_TABLE_PINNED("hash", u64, u64, ids, 1024, "/sys/fs/bpf/test_pinned_table");
3: ^
3: /virtual/include/bcc/helpers.h:105:92: note: expanded from macro 'BPF_TABLE_PINNED'
3: #define BPF_TABLE_PINNED(_table_type, _key_type, _leaf_type, _name, _max_entries, _pinned) \
3: ^
3: /virtual/include/bcc/helpers.h:102:76: note: expanded from macro '\
3: BPF_TABLE'
3: #define BPF_TABLE(_table_type, _key_type, _leaf_type, _name, _max_entries) \
3: ^
3: /virtual/include/bcc/helpers.h:97:4: note: expanded from macro '\
3: BPF_F_TABLE'
3: }; \
3: ^
3: 1 error generated.
3: Parse error:
3: 4@i%ra+1r
3: -------^
3: unshare: failed to execute ruby: No such file or directory
3:
3: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3: test_libbcc is a Catch v1.4.0 host application.
3: Run with -? for options
3:
3: -------------------------------------------------------------------------------
3: test probing running Ruby process in namespaces
3: in separate mount namespace
3: -------------------------------------------------------------------------------
3: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/cc/test_usdt_probes.cc:340
3: ...............................................................................
3:
3: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/cc/test_usdt_probes.cc:355: FAILED:
3: REQUIRE( res.msg() == "" )
3: with expansion:
3: "Unable to load USDT ruby:gc__mark__begin from binary PID 7211 for probe
3: on_event"
3: ==
3: ""
3:
3: unshare: unrecognized option '--kill-child'
3: Try 'unshare --help' for more information.
3: -------------------------------------------------------------------------------
3: test probing running Ruby process in namespaces
3: in separate mount namespace and separate PID namespace
3: -------------------------------------------------------------------------------
3: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/cc/test_usdt_probes.cc:340
3: ...............................................................................
3:
3: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/cc/test_usdt_probes.cc:381: FAILED:
3: REQUIRE( res.msg() == "" )
3: with expansion:
3: "No valid Binary Path or PID provided"
3: ==
3: ""
3:
3: ===============================================================================
3: test cases: 40 | 39 passed | 1 failed as expected
3: assertions: 637 | 635 passed | 2 failed as expected
3:
3/42 Test #3: test_libbcc ...................... Passed 15.95 sec
test 4
Start 4: py_test_stat1_b
4: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_stat1_b" "namespace" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_stat1.py" "test_stat1.b" "proto.b"
4: Test timeout computed to be: 9.99988e+06
4: Actual changes:
4: tx-checksumming: off
4: tx-checksum-ip-generic: off
4: tx-checksum-sctp: off
4: tcp-segmentation-offload: off
4: tx-tcp-segmentation: off [requested on]
4: tx-tcp-ecn-segmentation: off [requested on]
4: tx-tcp-mangleid-segmentation: off [requested on]
4: tx-tcp6-segmentation: off [requested on]
4: .PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
4: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4: --- 172.16.1.1 ping statistics ---
4: 100 packets transmitted, 100 received, 0% packet loss, time 1ms
4: rtt min/avg/max/mdev = 0.005/0.008/0.086/0.008 ms, ipg/ewma 0.018/0.008 ms
4: .
4: ----------------------------------------------------------------------
4: Ran 2 tests in 0.559s
4:
4: OK
4/42 Test #4: py_test_stat1_b .................. Passed 2.10 sec
test 5
Start 5: py_test_bpf_log
5: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_bpf_prog" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_bpf_log.py"
5: Test timeout computed to be: 9.99988e+06
5/42 Test #5: py_test_bpf_log .................. Passed 1.93 sec
test 6
Start 6: py_test_stat1_c
6: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_stat1_c" "namespace" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_stat1.py" "test_stat1.c"
6: Test timeout computed to be: 9.99988e+06
6: Actual changes:
6: tx-checksumming: off
6: tx-checksum-ip-generic: off
6: tx-checksum-sctp: off
6: tcp-segmentation-offload: off
6: tx-tcp-segmentation: off [requested on]
6: tx-tcp-ecn-segmentation: off [requested on]
6: tx-tcp-mangleid-segmentation: off [requested on]
6: tx-tcp6-segmentation: off [requested on]
6: .PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
6: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6: --- 172.16.1.1 ping statistics ---
6: 100 packets transmitted, 100 received, 0% packet loss, time 2ms
6: rtt min/avg/max/mdev = 0.007/0.008/0.129/0.012 ms, ipg/ewma 0.023/0.008 ms
6: .
6: ----------------------------------------------------------------------
6: Ran 2 tests in 0.494s
6:
6: OK
6/42 Test #6: py_test_stat1_c .................. Passed 0.90 sec
test 7
Start 7: py_test_xlate1_c
7: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_xlate1_c" "namespace" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_xlate1.py" "test_xlate1.c"
7: Test timeout computed to be: 9.99988e+06
7: Actual changes:
7: tx-checksumming: off
7: tx-checksum-ip-generic: off
7: tx-checksum-sctp: off
7: tcp-segmentation-offload: off
7: tx-tcp-segmentation: off [requested on]
7: tx-tcp-ecn-segmentation: off [requested on]
7: tx-tcp-mangleid-segmentation: off [requested on]
7: tx-tcp6-segmentation: off [requested on]
7: PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
7: 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.060 ms
7:
7: --- 192.168.1.1 ping statistics ---
7: 1 packets transmitted, 1 received, 0% packet loss, time 0ms
7: rtt min/avg/max/mdev = 0.060/0.060/0.060/0.000 ms
7: .
7: ----------------------------------------------------------------------
7: Ran 1 test in 0.358s
7:
7: OK
7/42 Test #7: py_test_xlate1_c ................. Passed 1.10 sec
test 8
Start 8: py_test_call1
8: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_call1_c" "namespace" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_call1.py" "test_call1.c"
8: Test timeout computed to be: 9.99988e+06
8: Actual changes:
8: tx-checksumming: off
8: tx-checksum-ip-generic: off
8: tx-checksum-sctp: off
8: tcp-segmentation-offload: off
8: tx-tcp-segmentation: off [requested on]
8: tx-tcp-ecn-segmentation: off [requested on]
8: tx-tcp-mangleid-segmentation: off [requested on]
8: tx-tcp6-segmentation: off [requested on]
8: .
8: ----------------------------------------------------------------------
8: Ran 1 test in 0.302s
8:
8: OK
8/42 Test #8: py_test_call1 .................... Passed 1.06 sec
test 9
Start 9: py_test_trace1
9: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_trace1" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_trace1.py" "test_trace1.b" "kprobe.b"
9: Test timeout computed to be: 9.99988e+06
9: .
9: ----------------------------------------------------------------------
9: Ran 1 test in 0.383s
9:
9: OK
9: ('fd 8:', 'stat1 0', 'stat2 1')
9: ('fd ffff9ff655da2000:', 'stat1 2', 'stat2 0')
9: ('fd a:', 'stat1 200', 'stat2 100')
9: ('fd 9:', 'stat1 1', 'stat2 1')
9/42 Test #9: py_test_trace1 ................... Passed 0.61 sec
test 10
Start 10: py_test_trace2
10: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_trace2" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_trace2.py"
10: Test timeout computed to be: 9.99988e+06
10: .
10: ----------------------------------------------------------------------
10: Ran 1 test in 5.884s
10:
10: OK
10: ('ptr ffff9ff62a785d00:', 'stat1 (0 10)')
10: ('ptr ffff9ff6325c1740:', 'stat1 (0 5)')
10: ('ptr ffff9ff655482e80:', 'stat1 (0 1)')
10: ('ptr ffff9ff6507b2e80:', 'stat1 (0 2)')
10: ('ptr ffffffff89812480:', 'stat1 (0 102)')
10: ('ptr ffff9ff65645dd00:', 'stat1 (0 1)')
10: ('ptr ffff9ff655090000:', 'stat1 (0 22)')
10: ('ptr ffff9ff652e69740:', 'stat1 (0 1)')
10: ('ptr ffff9ff6569e1740:', 'stat1 (0 2)')
10: ('ptr ffff9ff656a0ae80:', 'stat1 (0 43)')
10: ('ptr ffff9ff654378000:', 'stat1 (0 100)')
10: ('ptr ffff9ff654058000:', 'stat1 (0 1)')
10/42 Test #10: py_test_trace2 ................... Passed 5.99 sec
test 11
Start 11: py_test_trace3_c
11: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_trace3_c" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_trace3.py" "test_trace3.c"
11: Test timeout computed to be: 9.99988e+06
11: 1024+0 records in
11: 1024+0 records out
11: 4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.00456572 s, 919 MB/s
11: 1024+0 records in
11: 1024+0 records out
11: 4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0108757 s, 386 MB/s
11: ('latency 0:', 'count 0')
11: ('latency 1:', 'count 0')
11: ('latency 2:', 'count 0')
11: ('latency 3:', 'count 0')
11: ('latency 4:', 'count 0')
11: ('latency 5:', 'count 0')
11: ('latency 6:', 'count 0')
11: ('latency 7:', 'count 0')
11: ('latency 8:', 'count 0')
11: ('latency 9:', 'count 0')
11: ('latency 10:', 'count 0')
11: ('latency 11:', 'count 0')
11: ('latency 12:', 'count 0')
11: ('latency 13:', 'count 0')
11: ('latency 14:', 'count 0')
11: ('latency 15:', 'count 0')
11: ('latency 16:', 'count 0')
11: ('latency 17:', 'count 0')
11: ('latency 18:', 'count 0')
11: ('latency 19:', 'count 0')
11: ('latency 20:', 'count 0')
11: ('latency 21:', 'count 0')
11: ('latency 22:', 'count 0')
11: ('latency 23:', 'count 0')
11: ('latency 24:', 'count 0')
11: ('latency 25:', 'count 0')
11: ('latency 26:', 'count 0')
11: ('latency 27:', 'count 0')
11: ('latency 28:', 'count 0')
11: ('latency 29:', 'count 0')
11: ('latency 30:', 'count 0')
11: ('latency 31:', 'count 0')
11: ('latency 32:', 'count 0')
11: ('latency 33:', 'count 0')
11: ('latency 34:', 'count 0')
11: ('latency 35:', 'count 0')
11: ('latency 36:', 'count 0')
11: ('latency 37:', 'count 0')
11: ('latency 38:', 'count 0')
11: ('latency 39:', 'count 0')
11: ('latency 40:', 'count 0')
11: ('latency 41:', 'count 0')
11: ('latency 42:', 'count 0')
11: ('latency 43:', 'count 0')
11: ('latency 44:', 'count 0')
11: ('latency 45:', 'count 0')
11: ('latency 46:', 'count 0')
11: ('latency 47:', 'count 0')
11: ('latency 48:', 'count 0')
11: ('latency 49:', 'count 0')
11: ('latency 50:', 'count 0')
11: ('latency 51:', 'count 0')
11: ('latency 52:', 'count 0')
11: ('latency 53:', 'count 0')
11: ('latency 54:', 'count 0')
11: ('latency 55:', 'count 0')
11: ('latency 56:', 'count 0')
11: ('latency 57:', 'count 0')
11: ('latency 58:', 'count 0')
11: ('latency 59:', 'count 0')
11: ('latency 60:', 'count 0')
11: ('latency 61:', 'count 0')
11: ('latency 62:', 'count 0')
11: ('latency 63:', 'count 0')
11: ('latency 64:', 'count 0')
11: ('latency 65:', 'count 0')
11: ('latency 66:', 'count 0')
11: ('latency 67:', 'count 0')
11: ('latency 68:', 'count 0')
11: ('latency 69:', 'count 0')
11: ('latency 70:', 'count 0')
11: ('latency 71:', 'count 0')
11: ('latency 72:', 'count 0')
11: ('latency 73:', 'count 0')
11: ('latency 74:', 'count 0')
11: ('latency 75:', 'count 0')
11: ('latency 76:', 'count 0')
11: ('latency 77:', 'count 0')
11: ('latency 78:', 'count 0')
11: ('latency 79:', 'count 0')
11: ('latency 80:', 'count 0')
11: ('latency 81:', 'count 0')
11: ('latency 82:', 'count 0')
11: ('latency 83:', 'count 0')
11: ('latency 84:', 'count 0')
11: ('latency 85:', 'count 0')
11: ('latency 86:', 'count 0')
11: ('latency 87:', 'count 0')
11: ('latency 88:', 'count 0')
11: ('latency 89:', 'count 0')
11: ('latency 90:', 'count 0')
11: ('latency 91:', 'count 0')
11: ('latency 92:', 'count 0')
11: ('latency 93:', 'count 0')
11: ('latency 94:', 'count 0')
11: ('latency 95:', 'count 0')
11: ('latency 96:', 'count 0')
11: ('latency 97:', 'count 0')
11: ('latency 98:', 'count 0')
11: ('latency 99:', 'count 0')
11: .
11: ----------------------------------------------------------------------
11: Ran 1 test in 2.285s
11:
11: OK
11/42 Test #11: py_test_trace3_c ................. Passed 2.51 sec
test 12
Start 12: py_test_trace4
12: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_trace4" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_trace4.py"
12: Test timeout computed to be: 9.99988e+06
12: ..
12: ----------------------------------------------------------------------
12: Ran 2 tests in 1.451s
12:
12: OK
12/42 Test #12: py_test_trace4 ................... Passed 1.65 sec
test 13
Start 13: py_test_trace_maxactive
13: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_trace_maxactive" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_trace_maxactive.py"
13: Test timeout computed to be: 9.99988e+06
13: .
13: ----------------------------------------------------------------------
13: Ran 1 test in 0.939s
13:
13: OK
13/42 Test #13: py_test_trace_maxactive .......... Passed 1.09 sec
test 14
Start 14: py_test_probe_count
14: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_probe_count" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_probe_count.py"
14: Test timeout computed to be: 9.99988e+06
14: ...cannot attach kprobe, probe entry may not exist
14: ...
14: ----------------------------------------------------------------------
14: Ran 6 tests in 5.520s
14:
14: OK
14/42 Test #14: py_test_probe_count .............. Passed 5.58 sec
test 15
Start 15: py_test_debuginfo
15: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_debuginfo" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_debuginfo.py"
15: Test timeout computed to be: 9.99988e+06
15: ......
15: ----------------------------------------------------------------------
15: Ran 6 tests in 0.581s
15:
15: OK
15/42 Test #15: py_test_debuginfo ................ Passed 0.70 sec
test 16
Start 16: py_test_brb
16: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_brb_c" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_brb.py" "test_brb.c"
16: Test timeout computed to be: 9.99988e+06
16: net.ipv4.ip_forward = 1
16: ARPING 100.1.1.254
16: 42 bytes from 5a:75:5f:bb:ed:9e (100.1.1.254): index=0 time=8.019 usec
16:
16: --- 100.1.1.254 statistics ---
16: 1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
16: rtt min/avg/max/std-dev = 0.008/0.008/0.008/0.000 ms
16: ARPING 200.1.1.254
16: 42 bytes from 36:e3:fa:82:22:d5 (200.1.1.254): index=0 time=14.721 usec
16:
16: --- 200.1.1.254 statistics ---
16: 1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
16: rtt min/avg/max/std-dev = 0.015/0.015/0.015/0.000 ms
16: PING 200.1.1.1 (200.1.1.1) 56(84) bytes of data.
16: 64 bytes from 200.1.1.1: icmp_seq=1 ttl=63 time=0.141 ms
16: 64 bytes from 200.1.1.1: icmp_seq=2 ttl=63 time=0.085 ms
16:
16: --- 200.1.1.1 ping statistics ---
16: 2 packets transmitted, 2 received, 0% packet loss, time 1008ms
16: rtt min/avg/max/mdev = 0.085/0.113/0.141/0.028 ms
16: [ ID] Interval Transfer Bandwidth
16: [ 7] 0.0- 1.0 sec 3.15 GBytes 27.1 Gbits/sec
16: [ ID] Interval Transfer Bandwidth
16: [ 10] 0.0- 1.0 sec 3.15 GBytes 26.9 Gbits/sec
16: Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
16: MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 200.1.1.1 () port 0 AF_INET : demo
16: Recv Send Send
16: Socket Socket Message Elapsed
16: Size Size Size Time Throughput
16: bytes bytes bytes secs. 10^6bits/sec
16:
16: 87380 16384 65160 1.00 26502.52
16: MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 200.1.1.1 () port 0 AF_INET : demo : first burst 0
16: Local /Remote
16: Socket Size Request Resp. Elapsed Trans.
16: Send Recv Size Size Time Rate
16: bytes Bytes bytes bytes secs. per sec
16:
16: 16384 87380 1 1 1.00 19832.33
16: 16384 87380
16: .
16: ----------------------------------------------------------------------
16: Ran 1 test in 10.073s
16:
16: OK
16/42 Test #16: py_test_brb ...................... Passed 10.21 sec
test 17
Start 17: py_test_brb2
17: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_brb2_c" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_brb2.py" "test_brb2.c"
17: Test timeout computed to be: 9.99988e+06
17: net.ipv4.ip_forward = 1
17: PING 200.1.1.1 (200.1.1.1) 56(84) bytes of data.
17: 64 bytes from 200.1.1.1: icmp_seq=1 ttl=63 time=0.178 ms
17: 64 bytes from 200.1.1.1: icmp_seq=2 ttl=63 time=0.087 ms
17:
17: --- 200.1.1.1 ping statistics ---
17: 2 packets transmitted, 2 received, 0% packet loss, time 1029ms
17: rtt min/avg/max/mdev = 0.087/0.132/0.178/0.046 ms
17: [ ID] Interval Transfer Bandwidth
17: [ 7] 0.0- 1.0 sec 2.94 GBytes 25.2 Gbits/sec
17: [ ID] Interval Transfer Bandwidth
17: [ 10] 0.0- 1.0 sec 2.94 GBytes 25.0 Gbits/sec
17: Starting netserver with host 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC
17: MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 200.1.1.1 () port 0 AF_INET : demo
17: Recv Send Send
17: Socket Socket Message Elapsed
17: Size Size Size Time Throughput
17: bytes bytes bytes secs. 10^6bits/sec
17:
17: 87380 16384 65160 1.00 25433.41
17: MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 200.1.1.1 () port 0 AF_INET : demo : first burst 0
17: Local /Remote
17: Socket Size Request Resp. Elapsed Trans.
17: Send Recv Size Size Time Rate
17: bytes Bytes bytes bytes secs. per sec
17:
17: 16384 87380 1 1 1.00 21742.56
17: 16384 87380
17: .
17: ----------------------------------------------------------------------
17: Ran 1 test in 8.249s
17:
17: OK
17/42 Test #17: py_test_brb2 ..................... Passed 8.45 sec
test 18
Start 18: py_test_clang
18: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_clang" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_clang.py"
18: Test timeout computed to be: 9.99988e+06
18: ................./virtual/main.c:2:1: error: field has incomplete type 'struct key_t'
18: BPF_HASH(drops, struct key_t);
18: ^
18: /virtual/include/bcc/helpers.h:183:48: note: expanded from macro 'BPF_HASH'
18: BPF_HASHX(__VA_ARGS__, BPF_HASH4, BPF_HASH3, BPF_HASH2, BPF_HASH1)(__VA_ARGS__)
18: ^
18: /virtual/main.c:2:24: note: forward declaration of 'struct key_t'
18: BPF_HASH(drops, struct key_t);
18: ^
18: /virtual/main.c:2:1: error: field has incomplete type 'struct key_t'
18: BPF_HASH(drops, struct key_t);
18: ^
18: /virtual/include/bcc/helpers.h:183:48: note: expanded from macro 'BPF_HASH'
18: BPF_HASHX(__VA_ARGS__, BPF_HASH4, BPF_HASH3, BPF_HASH2, BPF_HASH1)(__VA_ARGS__)
18: ^
18: /virtual/main.c:2:24: note: forward declaration of 'struct key_t'
18: BPF_HASH(drops, struct key_t);
18: ^
18: 2 errors generated.
18: ../virtual/main.c:6:12: error: cannot call non-static helper function
18: return bar();
18: ^
18: 1 error generated.
18: ..s....................................../virtual/main.c:7:12: warning: incompatible pointer to integer conversion returning 'u32 *' (aka 'unsigned int *') from a function with result type 'int' [-Wint-conversion]
18: return *(&skp->sk_daddr);
18: ^~~~~~~~~~~~~~~~~
18: 1 warning generated.
18: ................/virtual/main.c:1:30: error: expected expression
18: int failure(void *ctx) { if (); return 0; }
18: ^
18: 1 error generated.
18: ../virtual/main.c:3:73: error: too many arguments, bcc only supports in-register parameters
18: int many(struct pt_regs *ctx, int a, int b, int c, int d, int e, int f, int g) {
18: ^
18: 1 error generated.
18: ....
18: ----------------------------------------------------------------------
18: Ran 82 tests in 79.712s
18:
18: OK (skipped=1)
18: 0
18/42 Test #18: py_test_clang .................... Passed 80.18 sec
test 19
Start 19: py_test_histogram
19: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_histogram" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_histogram.py"
19: Test timeout computed to be: 9.99988e+06
19:
19: Bucket ptr = 'java'
19: value : count distribution
19: 0 -> 1 : 26 |****************************************|
19:
19: Bucket ptr = 'python'
19: value : count distribution
19: 0 -> 1 : 0 | |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 0 | |
19: 67108864 -> 134217727 : 100 |********************|
19: 134217728 -> 268435455 : 0 | |
19: 268435456 -> 536870911 : 0 | |
19: 536870912 -> 1073741823 : 0 | |
19: 1073741824 -> 2147483647 : 0 | |
19: 2147483648 -> 4294967295 : 0 | |
19: 4294967296 -> 8589934591 : 0 | |
19: 8589934592 -> 17179869183 : 0 | |
19: 17179869184 -> 34359738367 : 0 | |
19: 34359738368 -> 68719476735 : 0 | |
19: 68719476736 -> 137438953471 : 0 | |
19: 137438953472 -> 274877906943 : 0 | |
19: 274877906944 -> 549755813887 : 0 | |
19: 549755813888 -> 1099511627775 : 1 | |
19:
19: Bucket ptr = 'kworker/u4:2'
19: value : count distribution
19: 0 -> 1 : 1 |************* |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 0 | |
19: 67108864 -> 134217727 : 3 |****************************************|
19:
19: Bucket ptr = 'rcu_sched'
19: value : count distribution
19: 0 -> 1 : 2 |****************************************|
19:
19: Bucket ptr = 'kworker/0:0'
19: value : count distribution
19: 0 -> 1 : 0 | |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 0 | |
19: 67108864 -> 134217727 : 0 | |
19: 134217728 -> 268435455 : 0 | |
19: 268435456 -> 536870911 : 0 | |
19: 536870912 -> 1073741823 : 1 |****************************************|
19:
19: Bucket ptr = 'kworker/1:9'
19: value : count distribution
19: 0 -> 1 : 0 | |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 0 | |
19: 67108864 -> 134217727 : 0 | |
19: 134217728 -> 268435455 : 0 | |
19: 268435456 -> 536870911 : 0 | |
19: 536870912 -> 1073741823 : 0 | |
19: 1073741824 -> 2147483647 : 0 | |
19: 2147483648 -> 4294967295 : 0 | |
19: 4294967296 -> 8589934591 : 0 | |
19: 8589934592 -> 17179869183 : 0 | |
19: 17179869184 -> 34359738367 : 0 | |
19: 34359738368 -> 68719476735 : 0 | |
19: 68719476736 -> 137438953471 : 0 | |
19: 137438953472 -> 274877906943 : 0 | |
19: 274877906944 -> 549755813887 : 0 | |
19: 549755813888 -> 1099511627775 : 1 |********************|
19:
19: Bucket ptr = 'swapper/0'
19: value : count distribution
19: 0 -> 1 : 0 | |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 2 |* |
19: 67108864 -> 134217727 : 0 | |
19: 134217728 -> 268435455 : 0 | |
19: 268435456 -> 536870911 : 0 | |
19: 536870912 -> 1073741823 : 0 | |
19: 1073741824 -> 2147483647 : 0 | |
19: 2147483648 -> 4294967295 : 0 | |
19: 4294967296 -> 8589934591 : 0 | |
19: 8589934592 -> 17179869183 : 0 | |
19: 17179869184 -> 34359738367 : 0 | |
19: 34359738368 -> 68719476735 : 2 |* |
19: 68719476736 -> 137438953471 : 26 |********************|
19: 137438953472 -> 274877906943 : 0 | |
19: 274877906944 -> 549755813887 : 0 | |
19: 549755813888 -> 1099511627775 : 13 |********** |
19:
19: Bucket ptr = 'swapper/1'
19: value : count distribution
19: 0 -> 1 : 0 | |
19: 2 -> 3 : 0 | |
19: 4 -> 7 : 0 | |
19: 8 -> 15 : 0 | |
19: 16 -> 31 : 0 | |
19: 32 -> 63 : 0 | |
19: 64 -> 127 : 0 | |
19: 128 -> 255 : 0 | |
19: 256 -> 511 : 0 | |
19: 512 -> 1023 : 0 | |
19: 1024 -> 2047 : 0 | |
19: 2048 -> 4095 : 0 | |
19: 4096 -> 8191 : 0 | |
19: 8192 -> 16383 : 0 | |
19: 16384 -> 32767 : 0 | |
19: 32768 -> 65535 : 0 | |
19: 65536 -> 131071 : 0 | |
19: 131072 -> 262143 : 0 | |
19: 262144 -> 524287 : 0 | |
19: 524288 -> 1048575 : 0 ....
19: ----------------------------------------------------------------------
19: Ran 4 tests in 3.793s
19:
19: OK
19: | |
19: 1048576 -> 2097151 : 0 | |
19: 2097152 -> 4194303 : 0 | |
19: 4194304 -> 8388607 : 0 | |
19: 8388608 -> 16777215 : 0 | |
19: 16777216 -> 33554431 : 0 | |
19: 33554432 -> 67108863 : 0 | |
19: 67108864 -> 134217727 : 0 | |
19: 134217728 -> 268435455 : 0 | |
19: 268435456 -> 536870911 : 0 | |
19: 536870912 -> 1073741823 : 0 | |
19: 1073741824 -> 2147483647 : 0 | |
19: 2147483648 -> 4294967295 : 0 | |
19: 4294967296 -> 8589934591 : 0 | |
19: 8589934592 -> 17179869183 : 0 | |
19: 17179869184 -> 34359738367 : 0 | |
19: 34359738368 -> 68719476735 : 0 | |
19: 68719476736 -> 137438953471 : 0 | |
19: 137438953472 -> 274877906943 : 0 | |
19: 274877906944 -> 549755813887 : 0 | |
19: 549755813888 -> 1099511627775 : 103 |********************|
19:
19: Bucket ptr = 'iscsid'
19: value : count distribution
19: 0 -> 1 : 1 |****************************************|
19:
19: Bucket ptr = 'gmain'
19: value : count distribution
19: 0 -> 1 : 1 |****************************************|
19:
19: Bucket ptr = 'ctest'
19: value : count distribution
19: 0 -> 1 : 11 |****************************************|
19:
19: Bucket ptr = 'kworker/0:1H'
19: value : count distribution
19: 0 -> 1 : 1 |****************************************|
19/42 Test #19: py_test_histogram ................ Passed 3.86 sec
test 20
Start 20: py_array
20: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_array" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_array.py"
20: Test timeout computed to be: 9.99988e+06
20: ....
20: ----------------------------------------------------------------------
20: Ran 4 tests in 1.500s
20:
20: OK
20/42 Test #20: py_array ......................... Passed 1.56 sec
test 21
Start 21: py_uprobes
21: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_uprobes" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_uprobes.py"
21: Test timeout computed to be: 9.99988e+06
21: .Python 2.7.15rc1
21: .Arena 0:
21: system bytes = 28905472
21: in use bytes = 2915120
21: Total (incl. mmap):
21: system bytes = 29696000
21: in use bytes = 3705648
21: max mmap regions = 7
21: max mmap bytes = 9203712
21: .
21: ----------------------------------------------------------------------
21: Ran 3 tests in 6.699s
21:
21: OK
21/42 Test #21: py_uprobes ....................... Passed 6.76 sec
test 22
Start 22: py_uprobes_2
22: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_uprobes2" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_uprobes2.py"
22: Test timeout computed to be: 9.99988e+06
22: .
22: ----------------------------------------------------------------------
22: Ran 1 test in 0.277s
22:
22: OK
22/42 Test #22: py_uprobes_2 ..................... Passed 0.36 sec
test 23
Start 23: py_test_stackid
23: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_stackid" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_stackid.py"
23: Test timeout computed to be: 9.99988e+06
23: s.
23: ----------------------------------------------------------------------
23: Ran 2 tests in 0.378s
23:
23: OK (skipped=1)
23/42 Test #23: py_test_stackid .................. Passed 0.55 sec
test 24
Start 24: py_test_tracepoint
24: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_tracepoint" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_tracepoint.py"
24: Test timeout computed to be: 9.99988e+06
24: ..
24: ----------------------------------------------------------------------
24: Ran 2 tests in 2.466s
24:
24: OK
24/42 Test #24: py_test_tracepoint ............... Passed 2.55 sec
test 25
Start 25: py_test_perf_event
25: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_perf_event" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_perf_event.py"
25: Test timeout computed to be: 9.99988e+06
25: perf_event_open: No such file or directory
25: s
25: ----------------------------------------------------------------------
25: Ran 1 test in 0.348s
25:
25: OK (skipped=1)
25/42 Test #25: py_test_perf_event ............... Passed 0.49 sec
test 26
Start 26: py_test_utils
26: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_utils" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_utils.py"
26: Test timeout computed to be: 9.99988e+06
26: ..
26: ----------------------------------------------------------------------
26: Ran 2 tests in 0.000s
26:
26: OK
26/42 Test #26: py_test_utils .................... Passed 0.05 sec
test 27
Start 27: py_test_percpu
27: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_percpu" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_percpu.py"
27: Test timeout computed to be: 9.99988e+06
27: ....
27: ----------------------------------------------------------------------
27: Ran 4 tests in 2.128s
27:
27: OK
27/42 Test #27: py_test_percpu ................... Passed 2.18 sec
test 28
Start 28: py_test_dump_func
28: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_dump_func" "simple" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_dump_func.py"
28: Test timeout computed to be: 9.99988e+06
28: .
28: ----------------------------------------------------------------------
28: Ran 1 test in 0.115s
28:
28: OK
28/42 Test #28: py_test_dump_func ................ Passed 0.16 sec
test 29
Start 29: py_test_disassembler
29: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_disassembler" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_disassembler.py"
29: Test timeout computed to be: 9.99988e+06
29: ..
29: ----------------------------------------------------------------------
29: Ran 2 tests in 0.245s
29:
29: OK
29/42 Test #29: py_test_disassembler ............. Passed 0.31 sec
test 30
Start 30: py_test_tools_smoke
30: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_tools_smoke" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_tools_smoke.py"
30: Test timeout computed to be: 9.99988e+06
30: Traceback (most recent call last):
30: File "../../tools/argdist.py", line 707, in run
30: self._main_loop()
30: File "../../tools/argdist.py", line 697, in _main_loop
30: exit()
30: File "/usr/lib/python2.7/site.py", line 366, in __call__
30: raise SystemExit(code)
30: SystemExit: None
30: .....'unknown': I need something more specific.
30: .'unknown': I need something more specific.
30: 'unknown': I need something more specific.
30: 'unknown': I need something more specific.
30: 'unknown': I need something more specific.
30: .......s.............'unknown': I need something more specific.
30: ......Killed
30: .s..........libbpf: failed to find valid kernel BTF
30: libbpf: vmlinux BTF is not found
30: ......'unknown': I need something more specific.
30: ...............'unknown': I need something more specific.
30: ...'unknown': I need something more specific.
30: .....'unknown': I need something more specific.
30: ...libbpf: failed to find valid kernel BTF
30: libbpf: vmlinux BTF is not found
30: ......
30: ----------------------------------------------------------------------
30: Ran 83 tests in 277.522s
30:
30: OK (skipped=2)
30/42 Test #30: py_test_tools_smoke .............. Passed 277.63 sec
test 31
Start 31: py_test_tools_memleak
31: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_tools_memleak" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_tools_memleak.py"
31: Test timeout computed to be: 9.99988e+06
31: cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .cannot attach uprobe, Device or resource busy
31: .
31: ----------------------------------------------------------------------
31: Ran 8 tests in 24.026s
31:
31: OK
31/42 Test #31: py_test_tools_memleak ............ Passed 24.08 sec
test 32
Start 32: py_test_usdt
32: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_usdt" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_usdt.py"
32: Test timeout computed to be: 9.99988e+06
32: <stdin>: In function ‘main’:
32: <stdin>:23:17: warning: null character(s) preserved in literal
32: <stdin>:25:42: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
32: <stdin>:28:17: warning: null character(s) preserved in literal
32: <stdin>:30:42: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘uint64_t {aka long unsigned int}’ [-Wformat=]
32: clang -cc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -coverage-notes-file /usr/src/linux-headers-4.15.0-1009-gcp/main.gcno -nostdsysteminc -nobuiltininc -resource-dir lib/clang/6.0.0 -isystem /virtual/lib/clang/include -include ./include/linux/kconfig.h -include /virtual/include/bcc/bpf.h -include /virtual/include/bcc/helpers.h -isystem /virtual/include -I /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python -D __BPF_TRACING__ -I ./arch/x86/include -I arch/x86/include/generated/uapi -I arch/x86/include/generated -I include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi -I ./include/uapi -I include/generated/uapi -D __KERNEL__ -D __HAVE_BUILTIN_BSWAP16__ -D __HAVE_BUILTIN_BSWAP32__ -D __HAVE_BUILTIN_BSWAP64__ -O2 -Wno-deprecated-declarations -Wno-gnu-variable-sized-type-not-at-end -Wno-pragma-once-outside-header -Wno-address-of-packed-member -Wno-unknown-warning-option -Wno-unused-value -Wno-pointer-sign -fdebug-compilation-dir /usr/src/linux-headers-4.15.0-1009-gcp -ferror-limit 19 -fmessage-length 0 -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o main.bc -x c /virtual/main.c
32: #if defined(BPF_LICENSE)
32: #error BPF_LICENSE cannot be specified through cflags
32: #endif
32: #if !defined(CONFIG_CC_STACKPROTECTOR)
32: #if defined(CONFIG_CC_STACKPROTECTOR_AUTO) \
32: || defined(CONFIG_CC_STACKPROTECTOR_REGULAR) \
32: || defined(CONFIG_CC_STACKPROTECTOR_STRONG)
32: #define CONFIG_CC_STACKPROTECTOR
32: #endif
32: #endif
32: #define bpf_probe_read_kernel bpf_probe_read
32: #define bpf_probe_read_kernel_str bpf_probe_read_str
32: #define bpf_probe_read_user bpf_probe_read
32: #define bpf_probe_read_user_str bpf_probe_read_str
32: #include <uapi/linux/ptrace.h>
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace1_1(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int8_t)) return -1;
32: switch(PT_REGS_IP(ctx)) {
32: case 0x55655d00180bULL: *((int8_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory"); return 0;
32: case 0x55655d001811ULL: *((int8_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory"); return 0;
32: }
32: return -1;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace1_2(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int32_t)) return -1;
32: switch(PT_REGS_IP(ctx)) {
32: case 0x55655d00180bULL: { u64 __addr = ctx->bp + -204; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32: case 0x55655d001811ULL: { u64 __addr = ctx->bp + -208; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32: }
32: return -1;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace3_1(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int32_t)) return -1;
32: switch(PT_REGS_IP(ctx)) {
32: case 0x55655d00180cULL: { u64 __addr = ctx->bp + -208; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32: case 0x55655d00181fULL: *((int32_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory"); return 0;
32: }
32: return -1;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace3_2(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int32_t)) return -1;
32: switch(PT_REGS_IP(ctx)) {
32: case 0x55655d00180cULL: { u64 __addr = ctx->bp + -204; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32: case 0x55655d00181fULL: *((int32_t *)dest) = ctx->dx; __asm__ __volatile__("": : :"memory"); return 0;
32: }
32: return -1;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace2_1(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int32_t)) return -1;
32: *((int32_t *)dest) = 5;
32: return 0;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace2_2(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int8_t)) return -1;
32: *((int8_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory");
32: return 0;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace4_1(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int64_t)) return -1;
32: *((int64_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory");
32: return 0;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace4_2(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int64_t)) return -1;
32: *((int64_t *)dest) = ctx->dx; __asm__ __volatile__("": : :"memory");
32: return 0;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace5_1(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int64_t)) return -1;
32: *((int64_t *)dest) = ctx->dx; __asm__ __volatile__("": : :"memory");
32: return 0;
32: }
32: __attribute__((always_inline))
32: static __always_inline int _bpf_readarg_do_trace5_2(struct pt_regs *ctx, void *dest, size_t len) {
32: if (len != sizeof(int64_t)) return -1;
32: *((int64_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory");
32: return 0;
32: }
32:
32: #include <linux/blkdev.h>
32: #include <uapi/linux/ptrace.h>
32:
32: struct probe_result_t1 {
32: char v1;
32: int v2;
32: };
32:
32: struct probe_result_t2 {
32: int v1;
32: char v2;
32: };
32:
32: struct probe_result_t3 {
32: int v1;
32: int v2;
32: };
32:
32: struct probe_result_t4 {
32: u64 v1;
32: char v2[8];
32: };
32:
32: struct probe_result_t5 {
32: char v1[8];
32: u64 v2;
32: };
32:
32: BPF_PERF_OUTPUT(event1);
32: BPF_PERF_OUTPUT(event2);
32: BPF_PERF_OUTPUT(event3);
32: BPF_PERF_OUTPUT(event4);
32: BPF_PERF_OUTPUT(event5);
32:
32: __attribute__((section(".bpf.fn.do_trace1")))
32: int do_trace1(struct pt_regs *ctx) {
32:
32: struct probe_result_t1 result = {};
32: _bpf_readarg_do_trace1_1(ctx, &result.v1, sizeof(*(&result.v1)));
32: _bpf_readarg_do_trace1_2(ctx, &result.v2, sizeof(*(&result.v2)));
32: bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -1), CUR_CPU_IDENTIFIER, &result, sizeof(result));
32: return 0;
32: };
32: __attribute__((section(".bpf.fn.do_trace2")))
32: int do_trace2(struct pt_regs *ctx) {
32:
32: struct probe_result_t2 result = {};
32: _bpf_readarg_do_trace2_1(ctx, &result.v1, sizeof(*(&result.v1)));
32: _bpf_readarg_do_trace2_2(ctx, &result.v2, sizeof(*(&result.v2)));
32: bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -2), CUR_CPU_IDENTIFIER, &result, sizeof(result));
32: return 0;
32: }
32: __attribute__((section(".bpf.fn.do_trace3")))
32: int do_trace3(struct pt_regs *ctx) {
32:
32: struct probe_result_t3 result = {};
32: _bpf_readarg_do_trace3_1(ctx, &result.v1, sizeof(*(&result.v1)));
32: _bpf_readarg_do_trace3_2(ctx, &result.v2, sizeof(*(&result.v2)));
32: bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -3), CUR_CPU_IDENTIFIER, &result, sizeof(result));
32: return 0;
32: }
32: __attribute__((section(".bpf.fn.do_trace4")))
32: int do_trace4(struct pt_regs *ctx) {
32:
32: struct probe_result_t4 result = {};
32: _bpf_readarg_do_trace4_1(ctx, &result.v1, sizeof(*(&result.v1)));
32: ({ u64 __addr = 0x0; _bpf_readarg_do_trace4_2(ctx, &__addr, sizeof(__addr));bpf_probe_read(&result.v2, sizeof(result.v2), (void *)__addr);});
32: bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -4), CUR_CPU_IDENTIFIER, &result, sizeof(result));
32: return 0;
32: }
32: __attribute__((section(".bpf.fn.do_trace5")))
32: int do_trace5(struct pt_regs *ctx) {
32:
32: struct probe_result_t5 result = {};
32: ({ u64 __addr = 0x0; _bpf_readarg_do_trace5_1(ctx, &__addr, sizeof(__addr));bpf_probe_read(&result.v1, sizeof(result.v1), (void *)__addr);});
32: _bpf_readarg_do_trace5_2(ctx, &result.v2, sizeof(*(&result.v2)));
32: bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -5), CUR_CPU_IDENTIFIER, &result, sizeof(result));
32: return 0;
32: }
32:
32: #include <bcc/footer.h>
32: .
32: ----------------------------------------------------------------------
32: Ran 1 test in 4.057s
32:
32: OK
32: Running from kernel directory at: /lib/modules/4.15.0-1009-gcp/build
32: str5
32: str4
32: str7
32: str6
32: str9
32: str8
32/42 Test #32: py_test_usdt ..................... Passed 4.36 sec
test 33
Start 33: py_test_usdt2
33: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_usdt2" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_usdt2.py"
33: Test timeout computed to be: 9.99988e+06
33: .
33: ----------------------------------------------------------------------
33: Ran 1 test in 2.053s
33:
33: OK
33/42 Test #33: py_test_usdt2 .................... Passed 2.28 sec
test 34
Start 34: py_test_usdt3
34: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_usdt3" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_usdt3.py"
34: Test timeout computed to be: 9.99988e+06
34: test:probe [sema 0x0]
34: location #1 /proc/8391/root/tmp/tmpzERC6W/liba.so 0x581
34: argument #1 4 signed bytes @ *(bp - 4)
34: location #2 /proc/8391/root/tmp/tmpzERC6W/libb.so 0x581
34: argument #1 4 signed bytes @ *(bp - 4)
34: location #3 /proc/8391/root/tmp/tmpzERC6W/a.out 0x7b1
34: argument #1 4 signed bytes @ *(bp - 4)
34: test_dup_name:probe [sema 0x0]
34: location #1 /proc/8391/root/tmp/tmpzERC6W/liba.so 0x582
34: argument #1 4 signed bytes @ *(bp - 4)
34: location #2 /proc/8391/root/tmp/tmpzERC6W/libb.so 0x582
34: argument #1 4 signed bytes @ *(bp - 4)
34: location #3 /proc/8391/root/tmp/tmpzERC6W/a.out 0x7b2
34: argument #1 4 signed bytes @ *(bp - 4)
34: libc:setjmp [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x3ebb1
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ si
34: argument #3 8 unsigned bytes @ ax
34: libc:longjmp [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x3ec93
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ si
34: argument #3 8 unsigned bytes @ dx
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x134bc3
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ si
34: argument #3 8 unsigned bytes @ dx
34: libc:longjmp_target [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x3ecaf
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ ax
34: argument #3 8 unsigned bytes @ dx
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x134bdf
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ ax
34: argument #3 8 unsigned bytes @ dx
34: libc:memory_mallopt_arena_max [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x906e3
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 32)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9ac79
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ *(&mp_ + 32)
34: libc:memory_mallopt_arena_test [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x906f3
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 24)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9ac91
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ *(&mp_ + 24)
34: libc:memory_tunable_tcache_max_bytes [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9070b
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 88)
34: libc:memory_tunable_tcache_count [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x90743
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 96)
34: libc:memory_tunable_tcache_unsorted_limit [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x90753
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 104)
34: libc:memory_mallopt_trim_threshold [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x90863
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 0)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9ac10
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ *(&mp_ + 0)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: libc:memory_mallopt_top_pad [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x90883
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 8)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9ad40
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ *(&mp_ + 8)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: libc:memory_mallopt_mmap_threshold [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x908ab
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ *(&mp_ + 16)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9ad1f
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ *(&mp_ + 16)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: libc:memory_mallopt_mmap_max [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x908c3
34: argument #1 4 signed bytes @ ax
34: argument #2 4 signed bytes @ *(&mp_ + 44)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9acf0
34: argument #1 4 signed bytes @ bx
34: argument #2 4 signed bytes @ *(&mp_ + 44)
34: argument #3 4 signed bytes @ *(&mp_ + 52)
34: libc:memory_mallopt_perturb [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x908e3
34: argument #1 4 signed bytes @ ax
34: argument #2 4 signed bytes @ *(&perturb_byte + 0)
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9aca0
34: argument #1 4 signed bytes @ bx
34: argument #2 4 signed bytes @ *(&perturb_byte + 0)
34: libc:memory_heap_new [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x90c4e
34: argument #1 8 unsigned bytes @ bx
34: argument #2 8 unsigned bytes @ bp
34: libc:memory_sbrk_less [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9138d
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 signed bytes @ bp
34: libc:memory_arena_reuse [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x91865
34: argument #1 8 unsigned bytes @ dx
34: argument #2 8 unsigned bytes @ bx
34: libc:memory_arena_reuse_wait [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x91975
34: argument #1 8 unsigned bytes @ dx
34: argument #2 8 unsigned bytes @ dx
34: argument #3 8 unsigned bytes @ bx
34: libc:memory_arena_new [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x91bd0
34: argument #1 8 unsigned bytes @ dx
34: argument #2 8 unsigned bytes @ bp
34: libc:memory_arena_reuse_free_list [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x91e8c
34: argument #1 8 unsigned bytes @ dx
34: libc:memory_arena_retry [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x91fc9
34: argument #1 8 unsigned bytes @ si
34: argument #2 8 unsigned bytes @ di
34: libc:memory_heap_free [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x933e6
34: argument #1 8 unsigned bytes @ r10
34: argument #2 8 unsigned bytes @ ax
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x98214
34: argument #1 8 unsigned bytes @ r14
34: argument #2 8 unsigned bytes @ ax
34: location #3 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x19bfd0
34: argument #1 8 unsigned bytes @ r11
34: argument #2 8 unsigned bytes @ ax
34: libc:memory_heap_less [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x93803
34: argument #1 8 unsigned bytes @ r10
34: argument #2 8 unsigned bytes @ r15
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9863c
34: argument #1 8 unsigned bytes @ r14
34: argument #2 8 unsigned bytes @ r15
34: location #3 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x19c44e
34: argument #1 8 unsigned bytes @ r11
34: argument #2 8 unsigned bytes @ r15
34: libc:memory_heap_more [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x93b3a
34: argument #1 8 unsigned bytes @ r9
34: argument #2 8 unsigned bytes @ r8
34: libc:memory_sbrk_more [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x93daf
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 signed bytes @ r12
34: libc:memory_mallopt_free_dyn_thresholds [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x97b16
34: argument #1 8 unsigned bytes @ si
34: argument #2 8 unsigned bytes @ ax
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x19baa8
34: argument #1 8 unsigned bytes @ si
34: argument #2 8 unsigned bytes @ ax
34: location #3 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x19c24c
34: argument #1 8 unsigned bytes @ ax
34: argument #2 8 unsigned bytes @ dx
34: libc:memory_malloc_retry [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x96df0
34: argument #1 8 unsigned bytes @ bx
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x973e0
34: argument #1 8 unsigned bytes @ bx
34: libc:memory_memalign_retry [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x978e8
34: argument #1 8 unsigned bytes @ r13
34: argument #2 8 unsigned bytes @ bx
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x99528
34: argument #1 8 unsigned bytes @ r12
34: argument #2 8 unsigned bytes @ bx
34: location #3 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x99a48
34: argument #1 8 unsigned bytes @ r13
34: argument #2 8 unsigned bytes @ bx
34: location #4 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x99ff8
34: argument #1 8 unsigned bytes @ bp
34: argument #2 8 unsigned bytes @ bx
34: location #5 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9b103
34: argument #1 8 unsigned bytes @ bp
34: argument #2 8 unsigned bytes @ bx
34: libc:memory_realloc_retry [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x98bf5
34: argument #1 8 unsigned bytes @ bp
34: argument #2 8 unsigned bytes @ bx
34: location #2 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x99045
34: argument #1 8 unsigned bytes @ bp
34: argument #2 8 unsigned bytes @ bx
34: libc:memory_calloc_retry [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9a3b0
34: argument #1 8 unsigned bytes @ bp
34: libc:memory_mallopt [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9abd4
34: argument #1 4 signed bytes @ bp
34: argument #2 4 signed bytes @ bx
34: libc:memory_mallopt_mxfast [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x9acc6
34: argument #1 4 signed bytes @ bx
34: argument #2 8 unsigned bytes @ *(&global_max_fast + 0)
34: libc:lll_lock_wait_private [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/libc-2.27.so 0x1306a4
34: argument #1 8 unsigned bytes @ di
34: rtld:init_start [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x3df2
34: argument #1 4 signed bytes @ 0
34: argument #2 8 unsigned bytes @ bx
34: rtld:init_complete [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x44d1
34: argument #1 4 signed bytes @ 0
34: argument #2 8 unsigned bytes @ bx
34: rtld:map_failed [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x5ba6
34: argument #1 8 signed bytes @ *(sp + 72)
34: argument #2 8 unsigned bytes @ bp
34: rtld:map_start [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x6b2a
34: argument #1 8 signed bytes @ *(bp + 40)
34: argument #2 8 unsigned bytes @ bx
34: rtld:map_complete [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x14faa
34: argument #1 8 signed bytes @ *(r14 + 40)
34: argument #2 8 unsigned bytes @ bx
34: argument #3 8 unsigned bytes @ r12
34: rtld:reloc_start [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x1507b
34: argument #1 8 signed bytes @ *(r14 + 40)
34: argument #2 8 unsigned bytes @ *(bp - 72)
34: rtld:reloc_complete [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x1541c
34: argument #1 8 signed bytes @ *(r14 + 40)
34: argument #2 8 unsigned bytes @ *(bp - 72)
34: argument #3 8 unsigned bytes @ r12
34: rtld:unmap_start [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x160b7
34: argument #1 8 signed bytes @ r14
34: argument #2 8 unsigned bytes @ bx
34: rtld:unmap_complete [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x16354
34: argument #1 8 signed bytes @ *(bp - 120)
34: argument #2 8 unsigned bytes @ bx
34: rtld:setjmp [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x1d0cd
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ si
34: argument #3 8 unsigned bytes @ ax
34: rtld:longjmp [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x1d10d
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ si
34: argument #3 8 unsigned bytes @ dx
34: rtld:longjmp_target [sema 0x0]
34: location #1 /proc/8391/root/lib/x86_64-linux-gnu/ld-2.27.so 0x1d129
34: argument #1 8 unsigned bytes @ di
34: argument #2 4 signed bytes @ ax
34: argument #3 8 unsigned bytes @ dx
34: .
34: ----------------------------------------------------------------------
34: Ran 1 test in 1.130s
34:
34: OK
34: temp directory: /tmp/tmpzERC6W
34/42 Test #34: py_test_usdt3 .................... Passed 1.30 sec
test 35
Start 35: py_test_license
35: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_license" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_license.py"
35: Test timeout computed to be: 9.99988e+06
35: /virtual/main.c:2:2: error: BPF_LICENSE cannot be specified through cflags
35: #error BPF_LICENSE cannot be specified through cflags
35: ^
35: 1 error generated.
35: x/virtual/main.c:2:2: error: BPF_LICENSE cannot be specified through cflags
35: #error BPF_LICENSE cannot be specified through cflags
35: ^
35: 1 error generated.
35: x.bpf: Failed to load program: Invalid argument
35: 0: (bf) r6 = r1
35: 1: (85) call bpf_ktime_get_ns#5
35: cannot call GPL only function from proprietary program
35:
35: x../virtual/main.c:2:2: error: BPF_LICENSE cannot be specified through cflags
35: #error BPF_LICENSE cannot be specified through cflags
35: ^
35: 1 error generated.
35: xbpf: Failed to load program: Invalid argument
35: 0: (bf) r6 = r1
35: 1: (85) call bpf_ktime_get_ns#5
35: cannot call GPL only function from proprietary program
35:
35: x..
35: ----------------------------------------------------------------------
35: Ran 10 tests in 2.945s
35:
35: OK (expected failures=5)
35/42 Test #35: py_test_license .................. Passed 3.00 sec
test 36
Start 36: py_test_free_bcc_memory
36: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_free_bcc_memory" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_free_bcc_memory.py"
36: Test timeout computed to be: 9.99988e+06
36: .
36: ----------------------------------------------------------------------
36: Ran 1 test in 0.269s
36:
36: OK
36: Before freeing llvm memory: RssFile: 43388 kB
36: After freeing llvm memory: RssFile: 11940 kB
36/42 Test #36: py_test_free_bcc_memory .......... Passed 0.32 sec
test 37
Start 37: py_test_rlimit
37: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_rlimit" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_rlimit.py"
37: Test timeout computed to be: 9.99988e+06
37: could not open bpf map: unused, error: Operation not permitted
37: .
37: ----------------------------------------------------------------------
37: Ran 1 test in 0.459s
37:
37: OK
37/42 Test #37: py_test_rlimit ................... Passed 0.51 sec
test 38
Start 38: py_test_lpm_trie
38: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "py_test_lpm_trie" "sudo" "/home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/python/test_lpm_trie.py"
38: Test timeout computed to be: 9.99988e+06
38: ..
38: ----------------------------------------------------------------------
38: Ran 2 tests in 0.448s
38:
38: OK
38/42 Test #38: py_test_lpm_trie ................. Passed 0.52 sec
test 39
Start 39: lua_test_clang
39: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "lua_test_clang" "sudo" "/usr/bin/luajit" "test_clang.lua"
39: Test timeout computed to be: 9.99988e+06
39: /virtual/main.c:1:30: error: expected expression
39: int failure(void *ctx) { if (); return 0; }
39: ^
39: 1 error generated.
39: ....................
39: Ran 20 tests in 13.158 seconds, 20 successes, 0 failures
39: OK
39/42 Test #39: lua_test_clang ................... Passed 13.19 sec
test 40
Start 40: lua_test_uprobes
40: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "lua_test_uprobes" "sudo" "/usr/bin/luajit" "test_uprobes.lua"
40: Test timeout computed to be: 9.99988e+06
40: Python 2.7.15rc1
40: Arena 0:
40: system bytes = 26423296
40: in use bytes = 1097040
40: Total (incl. mmap):
40: system bytes = 26423296
40: in use bytes = 1097040
40: max mmap regions = 7
40: max mmap bytes = 8556544
40: ..
40: Ran 2 tests in 0.526 seconds, 2 successes, 0 failures
40: OK
40/42 Test #40: lua_test_uprobes ................. Passed 0.67 sec
test 41
Start 41: lua_test_dump
41: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/build/tests/wrapper.sh "lua_test_dump" "sudo" "/usr/bin/luajit" "test_dump.lua"
41: Test timeout computed to be: 9.99988e+06
41: .
41: Ran 1 tests in 0.235 seconds, 1 successes, 0 failures
41: OK
41/42 Test #41: lua_test_dump .................... Passed 0.26 sec
test 42
Start 42: lua_test_standalone
42: Test command: /home/iovisor/jenkins/workspace/bcc-pr/label/ubuntu1804/tests/lua/test_standalone.sh
42: Test timeout computed to be: 9.99988e+06
42: + cd src/lua
42: + [[ ! -x bcc-lua ]]
42: + echo 'bcc-lua not built --- skipping'
42: bcc-lua not built --- skipping
42: + exit 0
42/42 Test #42: lua_test_standalone .............. Passed 0.00 sec
100% tests passed, 0 tests failed out of 42
Total Test time (real) = 492.87 sec
+ head -n 1 Testing/TAG
+ cp Testing/20200602-0057/Test.xml ./CTestResults.xml
Taking single-use slave ubuntu1804-slave-ebc offline.
Finished: SUCCESS