Console Output

Skipping 112 KB.. Full Log
[ 66%] Building CXX object src/cc/CMakeFiles/bcc-shared.dir/bcc_syms.cc.o
[ 66%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/usdt/usdt.cc.o
[ 69%] Building C object src/cc/CMakeFiles/bcc-shared.dir/bcc_elf.c.o
[ 69%] Building C object src/cc/CMakeFiles/bcc-shared.dir/bcc_perf_map.c.o
[ 69%] Building C object src/cc/CMakeFiles/bcc-shared.dir/bcc_proc.c.o
[ 72%] Building CXX object src/cc/CMakeFiles/bcc-shared.dir/common.cc.o
[ 75%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/usdt/usdt_args.cc.o
[ 75%] Linking CXX shared library libbcc.so
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[ 75%] Built target bcc-shared
make[2]: Entering directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
Scanning dependencies of target test_libbcc
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
make[2]: Entering directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[ 75%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_libbcc.cc.o
[ 75%] Building CXX object src/cc/CMakeFiles/bcc-static.dir/bcc_syms.cc.o
[ 75%] Building C object src/cc/CMakeFiles/bcc-static.dir/bcc_elf.c.o
[ 77%] Building C object src/cc/CMakeFiles/bcc-static.dir/bcc_perf_map.c.o
[ 77%] Building C object src/cc/CMakeFiles/bcc-static.dir/bcc_proc.c.o
[ 77%] Linking CXX static library libbcc.a
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[ 77%] Built target bcc-static
[ 80%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_c_api.cc.o
[ 80%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_array_table.cc.o
[ 80%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_bpf_table.cc.o
[ 83%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_cg_storage.cc.o
[ 83%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_hash_table.cc.o
[ 86%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_map_in_map.cc.o
[ 86%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_perf_event.cc.o
[ 86%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_pinned_table.cc.o
[ 88%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_prog_table.cc.o
[ 88%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_queuestack_table.cc.o
[ 88%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_shared_table.cc.o
[ 91%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_sk_storage.cc.o
[ 91%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_sock_table.cc.o
[ 91%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_usdt_args.cc.o
[ 94%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_usdt_probes.cc.o
[ 94%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/utils.cc.o
[ 97%] Building CXX object tests/cc/CMakeFiles/test_libbcc.dir/test_parse_tracepoint.cc.o
make[2]: Entering directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
Scanning dependencies of target test_static
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
make[2]: Entering directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[ 97%] Building C object tests/cc/CMakeFiles/test_static.dir/test_static.c.o
[100%] Linking CXX executable test_static
[100%] Linking CXX executable test_libbcc
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[100%] Built target test_libbcc
make[2]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
[100%] Built target test_static
make[1]: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build'
make: Leaving directory '/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/cc'
+ ctest -V -D ExperimentalTest --no-compress-output
UpdateCTestConfiguration  from :/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/DartConfiguration.tcl
Cannot find file: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/DartConfiguration.tcl
   Site: 
   Build name: (empty)
Create new tag: 20200715-1611 - Experimental
UpdateCTestConfiguration  from :/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/DartConfiguration.tcl
Cannot find file: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/DartConfiguration.tcl
Test project /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build
Constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 1
      Start  1: style-check

1: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/scripts/c-style-check.sh
1: Test timeout computed to be: 10000000
1: diff --git a/libbpf-tools/map_helpers.c b/libbpf-tools/map_helpers.c
1: index 5b562a29..bc685f37 100644
1: --- a/libbpf-tools/map_helpers.c
1: +++ b/libbpf-tools/map_helpers.c
1: @@ -1,8 +1,8 @@
1:  // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
1:  // Copyright (c) 2020 Anton Protopopov
1: -#include <stdlib.h>
1: -#include <stdio.h>
1:  #include <errno.h>
1: +#include <stdio.h>
1: +#include <stdlib.h>
1:  
1:  #include "map_helpers.h"
1:  
1: @@ -10,97 +10,86 @@
1:  
1:  static bool batch_map_ops = true; /* hope for the best */
1:  
1: -static int
1: -dump_hash_iter(int map_fd, void *keys, __u32 key_size,
1: -	       void *values, __u32 value_size, __u32 *count,
1: -	       void *invalid_key)
1: -{
1: -	__u8 key[key_size], next_key[key_size];
1: -	__u32 n = 0;
1: -	int err;
1: -
1: -	/* First get keys */
1: -	__builtin_memcpy(key, invalid_key, key_size);
1: -	while (n < *count) {
1: -		err = bpf_map_get_next_key(map_fd, key, next_key);
1: -		if (err && errno != ENOENT) {
1: -			return -1;
1: -		} else if (err) {
1: -			break;
1: -		}
1: -		__builtin_memcpy(key, next_key, key_size);
1: -		__builtin_memcpy(keys + key_size * n, next_key, key_size);
1: -		n++;
1: -	}
1: -
1: -	/* Now read values */
1: -	for (int i = 0; i < n; i++) {
1: -		err = bpf_map_lookup_elem(map_fd, keys + key_size * i,
1: -					  values + value_size * i);
1: -		if (err)
1: -			return -1;
1: -	}
1: -
1: -	*count = n;
1: -	return 0;
1: +static int dump_hash_iter(int map_fd, void *keys, __u32 key_size, void *values,
1: +                          __u32 value_size, __u32 *count, void *invalid_key) {
1: +  __u8 key[key_size], next_key[key_size];
1: +  __u32 n = 0;
1: +  int err;
1: +
1: +  /* First get keys */
1: +  __builtin_memcpy(key, invalid_key, key_size);
1: +  while (n < *count) {
1: +    err = bpf_map_get_next_key(map_fd, key, next_key);
1: +    if (err && errno != ENOENT) {
1: +      return -1;
1: +    } else if (err) {
1: +      break;
1: +    }
1: +    __builtin_memcpy(key, next_key, key_size);
1: +    __builtin_memcpy(keys + key_size * n, next_key, key_size);
1: +    n++;
1: +  }
1: +
1: +  /* Now read values */
1: +  for (int i = 0; i < n; i++) {
1: +    err = bpf_map_lookup_elem(map_fd, keys + key_size * i,
1: +                              values + value_size * i);
1: +    if (err)
1: +      return -1;
1: +  }
1: +
1: +  *count = n;
1: +  return 0;
1:  }
1:  
1: -static int
1: -dump_hash_batch(int map_fd, void *keys, __u32 key_size,
1: -		void *values, __u32 value_size, __u32 *count)
1: -{
1: -	void *in = NULL, *out;
1: -	__u32 n, n_read = 0;
1: -	int err = 0;
1: -
1: -	while (n_read < *count && !err) {
1: -		n = *count - n_read;
1: -		err = bpf_map_lookup_batch(map_fd, &in, &out,
1: -					   keys + n_read * key_size,
1: -					   values + n_read * value_size,
1: -					   &n, NULL);
1: -		if (err && errno != ENOENT) {
1: -			return -1;
1: -		}
1: -		n_read += n;
1: -		in = out;
1: -	}
1: -
1: -	*count = n_read;
1: -	return 0;
1: +static int dump_hash_batch(int map_fd, void *keys, __u32 key_size, void *values,
1: +                           __u32 value_size, __u32 *count) {
1: +  void *in = NULL, *out;
1: +  __u32 n, n_read = 0;
1: +  int err = 0;
1: +
1: +  while (n_read < *count && !err) {
1: +    n = *count - n_read;
1: +    err = bpf_map_lookup_batch(map_fd, &in, &out, keys + n_read * key_size,
1: +                               values + n_read * value_size, &n, NULL);
1: +    if (err && errno != ENOENT) {
1: +      return -1;
1: +    }
1: +    n_read += n;
1: +    in = out;
1: +  }
1: +
1: +  *count = n_read;
1: +  return 0;
1:  }
1:  
1: -int dump_hash(int map_fd,
1: -	      void *keys, __u32 key_size,
1: -	      void *values, __u32 value_size,
1: -	      __u32 *count, void *invalid_key)
1: -{
1: -	int err;
1: -
1: -	if (!keys || !values || !count || !key_size || !value_size) {
1: -		errno = EINVAL;
1: -		return -1;
1: -	}
1: -
1: -	if (batch_map_ops) {
1: -		err = dump_hash_batch(map_fd, keys, key_size,
1: -				      values, value_size, count);
1: -		if (err) {
1: -			if (errno != EINVAL) {
1: -				return -1;
1: -
1: -				/* assume that batch operations are not
1: -				 * supported and try non-batch mode */
1: -				batch_map_ops = false;
1: -			}
1: -		}
1: -	}
1: -
1: -	if (!invalid_key) {
1: -		errno = EINVAL;
1: -		return -1;
1: -	}
1: -
1: -	return dump_hash_iter(map_fd, keys, key_size,
1: -			      values, value_size, count, invalid_key);
1: +int dump_hash(int map_fd, void *keys, __u32 key_size, void *values,
1: +              __u32 value_size, __u32 *count, void *invalid_key) {
1: +  int err;
1: +
1: +  if (!keys || !values || !count || !key_size || !value_size) {
1: +    errno = EINVAL;
1: +    return -1;
1: +  }
1: +
1: +  if (batch_map_ops) {
1: +    err = dump_hash_batch(map_fd, keys, key_size, values, value_size, count);
1: +    if (err) {
1: +      if (errno != EINVAL) {
1: +        return -1;
1: +
1: +        /* assume that batch operations are not
1: +         * supported and try non-batch mode */
1: +        batch_map_ops = false;
1: +      }
1: +    }
1: +  }
1: +
1: +  if (!invalid_key) {
1: +    errno = EINVAL;
1: +    return -1;
1: +  }
1: +
1: +  return dump_hash_iter(map_fd, keys, key_size, values, value_size, count,
1: +                        invalid_key);
1:  }
1: diff --git a/libbpf-tools/map_helpers.h b/libbpf-tools/map_helpers.h
1: index 2d5cb022..1cb31ac2 100644
1: --- a/libbpf-tools/map_helpers.h
1: +++ b/libbpf-tools/map_helpers.h
1: @@ -5,7 +5,7 @@
1:  
1:  #include <bpf/bpf.h>
1:  
1: -int dump_hash(int map_fd, void *keys, __u32 key_size,
1: -	      void *values, __u32 value_size, __u32 *count, void *invalid_key);
1: +int dump_hash(int map_fd, void *keys, __u32 key_size, void *values,
1: +              __u32 value_size, __u32 *count, void *invalid_key);
1:  
1:  #endif /* __MAP_HELPERS_H */
1: diff --git a/libbpf-tools/maps.bpf.h b/libbpf-tools/maps.bpf.h
1: index 5e43d27a..dbe2daa9 100644
1: --- a/libbpf-tools/maps.bpf.h
1: +++ b/libbpf-tools/maps.bpf.h
1: @@ -6,21 +6,21 @@
1:  #include <bpf/bpf_helpers.h>
1:  #include <errno.h>
1:  
1: -static __always_inline void *
1: -bpf_map_lookup_or_try_init(void *map, const void *key, const void *init)
1: -{
1: -	void *val;
1: -	long err;
1: +static __always_inline void *bpf_map_lookup_or_try_init(void *map,
1: +                                                        const void *key,
1: +                                                        const void *init) {
1: +  void *val;
1: +  long 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, BPF_NOEXIST);
1: -	if (err && err != -EEXIST)
1: -		return 0;
1: +  err = bpf_map_update_elem(map, key, init, BPF_NOEXIST);
1: +  if (err && err != -EEXIST)
1: +    return 0;
1:  
1: -	return bpf_map_lookup_elem(map, key);
1: +  return bpf_map_lookup_elem(map, key);
1:  }
1:  
1:  #endif /* __MAPS_BPF_H */
1: diff --git a/libbpf-tools/syscount.bpf.c b/libbpf-tools/syscount.bpf.c
1: index 98b77efa..85295e8b 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 "syscount.h"
1:  #include "maps.bpf.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: diff --git a/libbpf-tools/syscount.c b/libbpf-tools/syscount.c
1: index 3ccf7ab4..59bf5eb8 100644
1: --- a/libbpf-tools/syscount.c
1: +++ b/libbpf-tools/syscount.c
1: @@ -434,8 +434,8 @@ int main(int argc, char **argv)
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: +          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: diff --git a/libbpf-tools/tcpconnect.bpf.c b/libbpf-tools/tcpconnect.bpf.c
1: index 734f529f..d5eabaef 100644
1: --- a/libbpf-tools/tcpconnect.bpf.c
1: +++ b/libbpf-tools/tcpconnect.bpf.c
1: @@ -4,8 +4,8 @@
1:  // Based on tcpconnect(8) from BCC by Brendan Gregg
1:  #include "vmlinux.h"
1:  
1: -#include <bpf/bpf_helpers.h>
1:  #include <bpf/bpf_core_read.h>
1: +#include <bpf/bpf_helpers.h>
1:  #include <bpf/bpf_tracing.h>
1:  
1:  #include "maps.bpf.h"
1: @@ -18,201 +18,187 @@ const volatile pid_t filter_pid;
1:  const volatile uid_t filter_uid = -1;
1:  
1:  /* Define here, because there are conflicts with include files */
1: -#define AF_INET		2
1: -#define AF_INET6	10
1: +#define AF_INET 2
1: +#define AF_INET6 10
1:  
1:  struct {
1: -	__uint(type, BPF_MAP_TYPE_HASH);
1: -	__uint(max_entries, MAX_ENTRIES);
1: -	__type(key, u32);
1: -	__type(value, struct sock *);
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 sock *);
1: +  __uint(map_flags, BPF_F_NO_PREALLOC);
1:  } sockets SEC(".maps");
1:  
1:  struct {
1: -	__uint(type, BPF_MAP_TYPE_HASH);
1: -	__uint(max_entries, MAX_ENTRIES);
1: -	__type(key, struct ipv4_flow_key);
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, struct ipv4_flow_key);
1: +  __type(value, u64);
1: +  __uint(map_flags, BPF_F_NO_PREALLOC);
1:  } ipv4_count SEC(".maps");
1:  
1:  struct {
1: -	__uint(type, BPF_MAP_TYPE_HASH);
1: -	__uint(max_entries, MAX_ENTRIES);
1: -	__type(key, struct ipv6_flow_key);
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, struct ipv6_flow_key);
1: +  __type(value, u64);
1: +  __uint(map_flags, BPF_F_NO_PREALLOC);
1:  } ipv6_count SEC(".maps");
1:  
1:  struct {
1: -	__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
1: -	__uint(key_size, sizeof(u32));
1: -	__uint(value_size, sizeof(u32));
1: +  __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
1: +  __uint(key_size, sizeof(u32));
1: +  __uint(value_size, sizeof(u32));
1:  } events SEC(".maps");
1:  
1: -static __always_inline bool filter_port(__u16 port)
1: -{
1: -	if (filter_ports_len == 0)
1: -		return false;
1: +static __always_inline bool filter_port(__u16 port) {
1: +  if (filter_ports_len == 0)
1: +    return false;
1:  
1: -	for (int i = 0; i < filter_ports_len; i++) {
1: -		if (port == filter_ports[i])
1: -			return false;
1: -	}
1: -	return true;
1: +  for (int i = 0; i < filter_ports_len; i++) {
1: +    if (port == filter_ports[i])
1: +      return false;
1: +  }
1: +  return true;
1:  }
1:  
1: -static __always_inline int
1: -enter_tcp_connect(struct pt_regs *ctx, struct sock *sk)
1: -{
1: -	__u64 pid_tgid = bpf_get_current_pid_tgid();
1: -	__u32 pid = pid_tgid >> 32;
1: -	__u32 tid = pid_tgid;
1: -	__u32 uid;
1: +static __always_inline int enter_tcp_connect(struct pt_regs *ctx,
1: +                                             struct sock *sk) {
1: +  __u64 pid_tgid = bpf_get_current_pid_tgid();
1: +  __u32 pid = pid_tgid >> 32;
1: +  __u32 tid = pid_tgid;
1: +  __u32 uid;
1:  
1: -	if (filter_pid && pid != filter_pid)
1: -		return 0;
1: +  if (filter_pid && pid != filter_pid)
1: +    return 0;
1:  
1: -	uid = bpf_get_current_uid_gid();
1: -	if (filter_uid != (uid_t) -1 && uid != filter_uid)
1: -		return 0;
1: +  uid = bpf_get_current_uid_gid();
1: +  if (filter_uid != (uid_t)-1 && uid != filter_uid)
1: +    return 0;
1:  
1: -	bpf_map_update_elem(&sockets, &tid, &sk, 0);
1: -	return 0;
1: +  bpf_map_update_elem(&sockets, &tid, &sk, 0);
1: +  return 0;
1:  }
1:  
1: -static  __always_inline void count_v4(struct sock *sk, __u16 dport)
1: -{
1: -	struct ipv4_flow_key key = {};
1: -	static __u64 zero;
1: -	__u64 *val;
1: -
1: -	BPF_CORE_READ_INTO(&key.saddr, sk, __sk_common.skc_rcv_saddr);
1: -	BPF_CORE_READ_INTO(&key.daddr, sk, __sk_common.skc_daddr);
1: -	key.dport = dport;
1: -	val = bpf_map_lookup_or_try_init(&ipv4_count, &key, &zero);
1: -	if (val)
1: -		__atomic_add_fetch(val, 1, __ATOMIC_RELAXED);
1: +static __always_inline void count_v4(struct sock *sk, __u16 dport) {
1: +  struct ipv4_flow_key key = {};
1: +  static __u64 zero;
1: +  __u64 *val;
1: +
1: +  BPF_CORE_READ_INTO(&key.saddr, sk, __sk_common.skc_rcv_saddr);
1: +  BPF_CORE_READ_INTO(&key.daddr, sk, __sk_common.skc_daddr);
1: +  key.dport = dport;
1: +  val = bpf_map_lookup_or_try_init(&ipv4_count, &key, &zero);
1: +  if (val)
1: +    __atomic_add_fetch(val, 1, __ATOMIC_RELAXED);
1:  }
1:  
1: -static __always_inline void count_v6(struct sock *sk, __u16 dport)
1: -{
1: -	struct ipv6_flow_key key = {};
1: -	static const __u64 zero;
1: -	__u64 *val;
1: -
1: -	BPF_CORE_READ_INTO(&key.saddr, sk,
1: -			   __sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32);
1: -	BPF_CORE_READ_INTO(&key.daddr, sk,
1: -			   __sk_common.skc_v6_daddr.in6_u.u6_addr32);
1: -	key.dport = dport;
1: -
1: -	val = bpf_map_lookup_or_try_init(&ipv6_count, &key, &zero);
1: -	if (val)
1: -		__atomic_add_fetch(val, 1, __ATOMIC_RELAXED);
1: +static __always_inline void count_v6(struct sock *sk, __u16 dport) {
1: +  struct ipv6_flow_key key = {};
1: +  static const __u64 zero;
1: +  __u64 *val;
1: +
1: +  BPF_CORE_READ_INTO(&key.saddr, sk,
1: +                     __sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32);
1: +  BPF_CORE_READ_INTO(&key.daddr, sk, __sk_common.skc_v6_daddr.in6_u.u6_addr32);
1: +  key.dport = dport;
1: +
1: +  val = bpf_map_lookup_or_try_init(&ipv6_count, &key, &zero);
1: +  if (val)
1: +    __atomic_add_fetch(val, 1, __ATOMIC_RELAXED);
1:  }
1:  
1: -static __always_inline void
1: -trace_v4(struct pt_regs *ctx, pid_t pid, struct sock *sk, __u16 dport)
1: -{
1: -	struct event event = {};
1: -
1: -	event.af = AF_INET;
1: -	event.pid = pid;
1: -	event.uid = bpf_get_current_uid_gid();
1: -	event.ts_us = bpf_ktime_get_ns() / 1000;
1: -	BPF_CORE_READ_INTO(&event.saddr_v4, sk, __sk_common.skc_rcv_saddr);
1: -	BPF_CORE_READ_INTO(&event.daddr_v4, sk, __sk_common.skc_daddr);
1: -	event.dport = dport;
1: -	bpf_get_current_comm(event.task, sizeof(event.task));
1: -
1: -	bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU,
1: -			      &event, sizeof(event));
1: +static __always_inline void trace_v4(struct pt_regs *ctx, pid_t pid,
1: +                                     struct sock *sk, __u16 dport) {
1: +  struct event event = {};
1: +
1: +  event.af = AF_INET;
1: +  event.pid = pid;
1: +  event.uid = bpf_get_current_uid_gid();
1: +  event.ts_us = bpf_ktime_get_ns() / 1000;
1: +  BPF_CORE_READ_INTO(&event.saddr_v4, sk, __sk_common.skc_rcv_saddr);
1: +  BPF_CORE_READ_INTO(&event.daddr_v4, sk, __sk_common.skc_daddr);
1: +  event.dport = dport;
1: +  bpf_get_current_comm(event.task, sizeof(event.task));
1: +
1: +  bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, &event, sizeof(event));
1:  }
1:  
1: -static __always_inline void
1: -trace_v6(struct pt_regs *ctx, pid_t pid, struct sock *sk, __u16 dport)
1: -{
1: -	struct event event = {};
1: -
1: -	event.af = AF_INET6;
1: -	event.pid = pid;
1: -	event.uid = bpf_get_current_uid_gid();
1: -	event.ts_us = bpf_ktime_get_ns() / 1000;
1: -	BPF_CORE_READ_INTO(&event.saddr_v6, sk,
1: -			   __sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32);
1: -	BPF_CORE_READ_INTO(&event.daddr_v6, sk,
1: -			   __sk_common.skc_v6_daddr.in6_u.u6_addr32);
1: -	event.dport = dport;
1: -	bpf_get_current_comm(event.task, sizeof(event.task));
1: -
1: -	bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU,
1: -			      &event, sizeof(event));
1: +static __always_inline void trace_v6(struct pt_regs *ctx, pid_t pid,
1: +                                     struct sock *sk, __u16 dport) {
1: +  struct event event = {};
1: +
1: +  event.af = AF_INET6;
1: +  event.pid = pid;
1: +  event.uid = bpf_get_current_uid_gid();
1: +  event.ts_us = bpf_ktime_get_ns() / 1000;
1: +  BPF_CORE_READ_INTO(&event.saddr_v6, sk,
1: +                     __sk_common.skc_v6_rcv_saddr.in6_u.u6_addr32);
1: +  BPF_CORE_READ_INTO(&event.daddr_v6, sk,
1: +                     __sk_common.skc_v6_daddr.in6_u.u6_addr32);
1: +  event.dport = dport;
1: +  bpf_get_current_comm(event.task, sizeof(event.task));
1: +
1: +  bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, &event, sizeof(event));
1:  }
1:  
1: -static __always_inline int
1: -exit_tcp_connect(struct pt_regs *ctx, int ret, int ip_ver)
1: -{
1: -	__u64 pid_tgid = bpf_get_current_pid_tgid();
1: -	__u32 pid = pid_tgid >> 32;
1: -	__u32 tid = pid_tgid;
1: -	struct sock **skpp;
1: -	struct sock *sk;
1: -	__u16 dport;
1: -
1: -	skpp = bpf_map_lookup_elem(&sockets, &tid);
1: -	if (!skpp)
1: -		return 0;
1: -
1: -	if (ret)
1: -		goto end;
1: -
1: -	sk = *skpp;
1: -
1: -	BPF_CORE_READ_INTO(&dport, sk, __sk_common.skc_dport);
1: -	if (filter_port(dport))
1: -		goto end;
1: -
1: -	if (do_count) {
1: -		if (ip_ver == 4)
1: -			count_v4(sk, dport);
1: -		else
1: -			count_v6(sk, dport);
1: -	} else {
1: -		if (ip_ver == 4)
1: -			trace_v4(ctx, pid, sk, dport);
1: -		else
1: -			trace_v6(ctx, pid, sk, dport);
1: -	}
1: +static __always_inline int exit_tcp_connect(struct pt_regs *ctx, int ret,
1: +                                            int ip_ver) {
1: +  __u64 pid_tgid = bpf_get_current_pid_tgid();
1: +  __u32 pid = pid_tgid >> 32;
1: +  __u32 tid = pid_tgid;
1: +  struct sock **skpp;
1: +  struct sock *sk;
1: +  __u16 dport;
1: +
1: +  skpp = bpf_map_lookup_elem(&sockets, &tid);
1: +  if (!skpp)
1: +    return 0;
1: +
1: +  if (ret)
1: +    goto end;
1: +
1: +  sk = *skpp;
1: +
1: +  BPF_CORE_READ_INTO(&dport, sk, __sk_common.skc_dport);
1: +  if (filter_port(dport))
1: +    goto end;
1: +
1: +  if (do_count) {
1: +    if (ip_ver == 4)
1: +      count_v4(sk, dport);
1: +    else
1: +      count_v6(sk, dport);
1: +  } else {
1: +    if (ip_ver == 4)
1: +      trace_v4(ctx, pid, sk, dport);
1: +    else
1: +      trace_v6(ctx, pid, sk, dport);
1: +  }
1:  
1:  end:
1: -	bpf_map_delete_elem(&sockets, &tid);
1: -	return 0;
1: +  bpf_map_delete_elem(&sockets, &tid);
1: +  return 0;
1:  }
1:  
1:  SEC("kprobe/tcp_v4_connect")
1: -int BPF_KPROBE(kprobe__tcp_v4_connect, struct sock *sk)
1: -{
1: -	return enter_tcp_connect(ctx, sk);
1: +int BPF_KPROBE(kprobe__tcp_v4_connect, struct sock *sk) {
1: +  return enter_tcp_connect(ctx, sk);
1:  }
1:  
1:  SEC("kretprobe/tcp_v4_connect")
1: -int BPF_KRETPROBE(kretprobe__tcp_v4_connect, int ret)
1: -{
1: -	return exit_tcp_connect(ctx, ret, 4);
1: +int BPF_KRETPROBE(kretprobe__tcp_v4_connect, int ret) {
1: +  return exit_tcp_connect(ctx, ret, 4);
1:  }
1:  
1:  SEC("kprobe/tcp_v6_connect")
1: -int BPF_KPROBE(kprobe__tcp_v6_connect, struct sock *sk)
1: -{
1: -	return enter_tcp_connect(ctx, sk);
1: +int BPF_KPROBE(kprobe__tcp_v6_connect, struct sock *sk) {
1: +  return enter_tcp_connect(ctx, sk);
1:  }
1:  
1:  SEC("kretprobe/tcp_v6_connect")
1: -int BPF_KRETPROBE(kretprobe__tcp_v6_connect, int ret)
1: -{
1: -	return exit_tcp_connect(ctx, ret, 6);
1: +int BPF_KRETPROBE(kretprobe__tcp_v6_connect, int ret) {
1: +  return exit_tcp_connect(ctx, ret, 6);
1:  }
1:  
1:  char LICENSE[] SEC("license") = "GPL";
1: diff --git a/libbpf-tools/tcpconnect.c b/libbpf-tools/tcpconnect.c
1: index fde6440d..9d9d05d0 100644
1: --- a/libbpf-tools/tcpconnect.c
1: +++ b/libbpf-tools/tcpconnect.c
1: @@ -2,420 +2,401 @@
1:  // Copyright (c) 2020 Anton Protopopov
1:  //
1:  // Based on tcpconnect(8) from BCC by Brendan Gregg
1: -#include <sys/resource.h>
1: -#include <arpa/inet.h>
1: +#include "tcpconnect.h"
1:  #include <argp.h>
1: -#include <signal.h>
1: +#include <arpa/inet.h>
1: +#include <bpf/bpf.h>
1:  #include <limits.h>
1: -#include <unistd.h>
1: +#include <signal.h>
1: +#include <sys/resource.h>
1:  #include <time.h>
1: -#include <bpf/bpf.h>
1: -#include "tcpconnect.h"
1: +#include <unistd.h>
1: +#include "map_helpers.h"
1:  #include "tcpconnect.skel.h"
1:  #include "trace_helpers.h"
1: -#include "map_helpers.h"
1:  
1:  #define warn(...) fprintf(stderr, __VA_ARGS__)
1:  
1:  const char *argp_program_version = "tcpconnect 0.1";
1:  const char *argp_program_bug_address = "<bpf@vger.kernel.org>";
1:  static const char argp_program_doc[] =
1: -	"\ntcpconnect: Count/Trace active tcp connections\n"
1: -	"\n"
1: -	"EXAMPLES:\n"
1: -	"    tcpconnect             # trace all TCP connect()s\n"
1: -	"    tcpconnect -t          # include timestamps\n"
1: -	"    tcpconnect -p 181      # only trace PID 181\n"
1: -	"    tcpconnect -P 80       # only trace port 80\n"
1: -	"    tcpconnect -P 80,81    # only trace port 80 and 81\n"
1: -	"    tcpconnect -U          # include UID\n"
1: -	"    tcpconnect -u 1000     # only trace UID 1000\n"
1: -	"    tcpconnect -c          # count connects per src, dest, port\n"
1: -	"    tcpconnect --C mappath # only trace cgroups in the map\n"
1: -	"    tcpconnect --M mappath # only trace mount namespaces in the map\n"
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: +    "\ntcpconnect: Count/Trace active tcp connections\n"
1: +    "\n"
1: +    "EXAMPLES:\n"
1: +    "    tcpconnect             # trace all TCP connect()s\n"
1: +    "    tcpconnect -t          # include timestamps\n"
1: +    "    tcpconnect -p 181      # only trace PID 181\n"
1: +    "    tcpconnect -P 80       # only trace port 80\n"
1: +    "    tcpconnect -P 80,81    # only trace port 80 and 81\n"
1: +    "    tcpconnect -U          # include UID\n"
1: +    "    tcpconnect -u 1000     # only trace UID 1000\n"
1: +    "    tcpconnect -c          # count connects per src, dest, port\n"
1: +    "    tcpconnect --C mappath # only trace cgroups in the map\n"
1: +    "    tcpconnect --M mappath # only trace mount namespaces in the map\n";
1: +
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 get_ints(const char *arg, int *size, int *ret, int min, int max)
1: -{
1: -	const char *argp = arg;
1: -	int max_size = *size;
1: -	int sz = 0;
1: -	char *end;
1: -	long val;
1: -
1: -	while (sz < max_size) {
1: -		errno = 0;
1: -		val = strtol(argp, &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: -		ret[sz++] = val;
1: -		if (*end == 0)
1: -			break;
1: -		argp = end + 1;
1: -	}
1: -
1: -	*size = sz;
1: -	return 0;
1: +static int get_ints(const char *arg, int *size, int *ret, int min, int max) {
1: +  const char *argp = arg;
1: +  int max_size = *size;
1: +  int sz = 0;
1: +  char *end;
1: +  long val;
1: +
1: +  while (sz < max_size) {
1: +    errno = 0;
1: +    val = strtol(argp, &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: +    ret[sz++] = val;
1: +    if (*end == 0)
1: +      break;
1: +    argp = end + 1;
1: +  }
1: +
1: +  *size = sz;
1: +  return 0;
1:  }
1:  
1: -static int get_uint(const char *arg, unsigned int *ret,
1: -		    unsigned int min, unsigned int max)
1: -{
1: -	char *end;
1: -	long val;
1: -
1: -	errno = 0;
1: -	val = strtoul(arg, &end, 10);
1: -	if (errno) {
1: -		warn("strtoul: %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_uint(const char *arg, unsigned int *ret, unsigned int min,
1: +                    unsigned int max) {
1: +  char *end;
1: +  long val;
1: +
1: +  errno = 0;
1: +  val = strtoul(arg, &end, 10);
1: +  if (errno) {
1: +    warn("strtoul: %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 const struct argp_option opts[] = {
1: -	{ "verbose", 'v', NULL, 0, "Verbose debug output" },
1: -	{ "timestamp", 't', NULL, 0, "Include timestamp on output" },
1: -	{ "count", 'c', NULL, 0, "Count connects per src ip and dst ip/port" },
1: -	{ "print-uid", 'U', NULL, 0, "Include UID on output" },
1: -	{ "pid", 'p', "PID", 0, "Process PID to trace" },
1: -	{ "uid", 'u', "UID", 0, "Process UID to trace" },
1: -	{ "port", 'P', "PORTS", 0,
1: -	  "Comma-separated list of destination ports to trace" },
1: -	{ "cgroupmap", 'C', "PATH", 0, "trace cgroups in this map" },
1: -	{ "mntnsmap", 'M', "PATH", 0, "trace mount namespaces in this map" },
1: -	{},
1: +    {"verbose", 'v', NULL, 0, "Verbose debug output"},
1: +    {"timestamp", 't', NULL, 0, "Include timestamp on output"},
1: +    {"count", 'c', NULL, 0, "Count connects per src ip and dst ip/port"},
1: +    {"print-uid", 'U', NULL, 0, "Include UID on output"},
1: +    {"pid", 'p', "PID", 0, "Process PID to trace"},
1: +    {"uid", 'u', "UID", 0, "Process UID to trace"},
1: +    {"port", 'P', "PORTS", 0,
1: +     "Comma-separated list of destination ports to trace"},
1: +    {"cgroupmap", 'C', "PATH", 0, "trace cgroups in this map"},
1: +    {"mntnsmap", 'M', "PATH", 0, "trace mount namespaces in this map"},
1: +    {},
1:  };
1:  
1:  static struct env {
1: -	bool verbose;
1: -	bool count;
1: -	bool print_timestamp;
1: -	bool print_uid;
1: -	pid_t pid;
1: -	uid_t uid;
1: -	int nports;
1: -	int ports[MAX_PORTS];
1: +  bool verbose;
1: +  bool count;
1: +  bool print_timestamp;
1: +  bool print_uid;
1: +  pid_t pid;
1: +  uid_t uid;
1: +  int nports;
1: +  int ports[MAX_PORTS];
1:  } env = {
1: -	.uid = (uid_t) -1,
1: +    .uid = (uid_t)-1,
1:  };
1:  
1: -static error_t parse_arg(int key, char *arg, struct argp_state *state)
1: -{
1: -	int err;
1: -	int nports;
1: -
1: -	switch (key) {
1: -	case 'v':
1: -		env.verbose = true;
1: -		break;
1: -	case 'c':
1: -		env.count = true;
1: -		break;
1: -	case 't':
1: -		env.print_timestamp = true;
1: -		break;
1: -	case 'U':
1: -		env.print_uid = 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 'u':
1: -		err = get_uint(arg, &env.uid, 0, (uid_t) -2);
1: -		if (err) {
1: -			warn("invalid UID: %s\n", arg);
1: -			argp_usage(state);
1: -		}
1: -		break;
1: -	case 'P':
1: -		nports = MAX_PORTS;
1: -		err = get_ints(arg, &nports, env.ports, 1, 65535);
1: -		if (err) {
1: -			warn("invalid PORT_LIST: %s\n", arg);
1: -			argp_usage(state);
1: -		}
1: -		env.nports = nports;
1: -		break;
1: -	case 'C':
1: -		warn("not implemented: --cgroupmap");
1: -		break;
1: -	case 'M':
1: -		warn("not implemented: --mntnsmap");
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 err;
1: +  int nports;
1: +
1: +  switch (key) {
1: +  case 'v':
1: +    env.verbose = true;
1: +    break;
1: +  case 'c':
1: +    env.count = true;
1: +    break;
1: +  case 't':
1: +    env.print_timestamp = true;
1: +    break;
1: +  case 'U':
1: +    env.print_uid = 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 'u':
1: +    err = get_uint(arg, &env.uid, 0, (uid_t)-2);
1: +    if (err) {
1: +      warn("invalid UID: %s\n", arg);
1: +      argp_usage(state);
1: +    }
1: +    break;
1: +  case 'P':
1: +    nports = MAX_PORTS;
1: +    err = get_ints(arg, &nports, env.ports, 1, 65535);
1: +    if (err) {
1: +      warn("invalid PORT_LIST: %s\n", arg);
1: +      argp_usage(state);
1: +    }
1: +    env.nports = nports;
1: +    break;
1: +  case 'C':
1: +    warn("not implemented: --cgroupmap");
1: +    break;
1: +  case 'M':
1: +    warn("not implemented: --mntnsmap");
1: +    break;
1: +  default:
1: +    return ARGP_ERR_UNKNOWN;
1: +  }
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: -	return vfprintf(stderr, format, args);
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: +  return vfprintf(stderr, format, args);
1:  }
1:  
1:  static volatile sig_atomic_t hang_on = 1;
1:  
1: -static void sig_int(int signo)
1: -{
1: -	hang_on = 0;
1: -}
1: -
1: -static void print_count_ipv4(int map_fd)
1: -{
1: -	static struct ipv4_flow_key keys[MAX_ENTRIES];
1: -	__u32 value_size = sizeof(__u64);
1: -	__u32 key_size = sizeof(keys[0]);
1: -	static struct ipv4_flow_key zero;
1: -	static __u64 counts[MAX_ENTRIES];
1: -	char s[INET_ADDRSTRLEN];
1: -	char d[INET_ADDRSTRLEN];
1: -	__u32 n = MAX_ENTRIES;
1: -	struct in_addr src;
1: -	struct in_addr dst;
1: -
1: -	if (dump_hash(map_fd, keys, key_size, counts, value_size, &n, &zero)) {
1: -		warn("dump_hash: %s", strerror(errno));
1: -		return;
1: -	}
1: -
1: -	for (__u32 i = 0; i < n; i++) {
1: -		src.s_addr = keys[i].saddr;
1: -		dst.s_addr = keys[i].daddr;
1: -
1: -		printf("%-25s %-25s %-20d %-10llu\n",
1: -		       inet_ntop(AF_INET, &src, s, sizeof(s)),
1: -		       inet_ntop(AF_INET, &dst, d, sizeof(d)),
1: -		       ntohs(keys[i].dport), counts[i]);
1: -	}
1: +static void sig_int(int signo) { hang_on = 0; }
1: +
1: +static void print_count_ipv4(int map_fd) {
1: +  static struct ipv4_flow_key keys[MAX_ENTRIES];
1: +  __u32 value_size = sizeof(__u64);
1: +  __u32 key_size = sizeof(keys[0]);
1: +  static struct ipv4_flow_key zero;
1: +  static __u64 counts[MAX_ENTRIES];
1: +  char s[INET_ADDRSTRLEN];
1: +  char d[INET_ADDRSTRLEN];
1: +  __u32 n = MAX_ENTRIES;
1: +  struct in_addr src;
1: +  struct in_addr dst;
1: +
1: +  if (dump_hash(map_fd, keys, key_size, counts, value_size, &n, &zero)) {
1: +    warn("dump_hash: %s", strerror(errno));
1: +    return;
1: +  }
1: +
1: +  for (__u32 i = 0; i < n; i++) {
1: +    src.s_addr = keys[i].saddr;
1: +    dst.s_addr = keys[i].daddr;
1: +
1: +    printf("%-25s %-25s %-20d %-10llu\n",
1: +           inet_ntop(AF_INET, &src, s, sizeof(s)),
1: +           inet_ntop(AF_INET, &dst, d, sizeof(d)), ntohs(keys[i].dport),
1: +           counts[i]);
1: +  }
1:  }
1:  
1: -static void print_count_ipv6(int map_fd)
1: -{
1: -	static struct ipv6_flow_key keys[MAX_ENTRIES];
1: -	__u32 value_size = sizeof(__u64);
1: -	__u32 key_size = sizeof(keys[0]);
1: -	static struct ipv6_flow_key zero;
1: -	static __u64 counts[MAX_ENTRIES];
1: -	char s[INET6_ADDRSTRLEN];
1: -	char d[INET6_ADDRSTRLEN];
1: -	__u32 n = MAX_ENTRIES;
1: -	struct in6_addr src;
1: -	struct in6_addr dst;
1: -
1: -	if (dump_hash(map_fd, keys, key_size, counts, value_size, &n, &zero)) {
1: -		warn("dump_hash: %s", strerror(errno));
1: -		return;
1: -	}
1: -
1: -	for (__u32 i = 0; i < n; i++) {
1: -		memcpy(src.s6_addr, &keys[i].saddr, sizeof(src.s6_addr));
1: -		memcpy(dst.s6_addr, &keys[i].daddr, sizeof(src.s6_addr));
1: -
1: -		printf("%-25s %-25s %-20d %-10llu\n",
1: -		       inet_ntop(AF_INET6, &src, s, sizeof(s)),
1: -		       inet_ntop(AF_INET6, &dst, d, sizeof(d)),
1: -		       ntohs(keys[i].dport), counts[i]);
1: -	}
1: +static void print_count_ipv6(int map_fd) {
1: +  static struct ipv6_flow_key keys[MAX_ENTRIES];
1: +  __u32 value_size = sizeof(__u64);
1: +  __u32 key_size = sizeof(keys[0]);
1: +  static struct ipv6_flow_key zero;
1: +  static __u64 counts[MAX_ENTRIES];
1: +  char s[INET6_ADDRSTRLEN];
1: +  char d[INET6_ADDRSTRLEN];
1: +  __u32 n = MAX_ENTRIES;
1: +  struct in6_addr src;
1: +  struct in6_addr dst;
1: +
1: +  if (dump_hash(map_fd, keys, key_size, counts, value_size, &n, &zero)) {
1: +    warn("dump_hash: %s", strerror(errno));
1: +    return;
1: +  }
1: +
1: +  for (__u32 i = 0; i < n; i++) {
1: +    memcpy(src.s6_addr, &keys[i].saddr, sizeof(src.s6_addr));
1: +    memcpy(dst.s6_addr, &keys[i].daddr, sizeof(src.s6_addr));
1: +
1: +    printf("%-25s %-25s %-20d %-10llu\n",
1: +           inet_ntop(AF_INET6, &src, s, sizeof(s)),
1: +           inet_ntop(AF_INET6, &dst, d, sizeof(d)), ntohs(keys[i].dport),
1: +           counts[i]);
1: +  }
1:  }
1:  
1: -static void print_count(int map_fd_ipv4, int map_fd_ipv6)
1: -{
1: -	static const char *header_fmt = "\n%-25s %-25s %-20s %-10s\n";
1: +static void print_count(int map_fd_ipv4, int map_fd_ipv6) {
1: +  static const char *header_fmt = "\n%-25s %-25s %-20s %-10s\n";
1:  
1: -	while (hang_on)
1: -		pause();
1: +  while (hang_on)
1: +    pause();
1:  
1: -	printf(header_fmt, "LADDR", "RADDR", "RPORT", "CONNECTS");
1: -	print_count_ipv4(map_fd_ipv4);
1: -	print_count_ipv6(map_fd_ipv6);
1: +  printf(header_fmt, "LADDR", "RADDR", "RPORT", "CONNECTS");
1: +  print_count_ipv4(map_fd_ipv4);
1: +  print_count_ipv6(map_fd_ipv6);
1:  }
1:  
1: -static void print_events_header()
1: -{
1: -	if (env.print_timestamp)
1: -		printf("%-9s", "TIME(s)");
1: -	if (env.print_uid)
1: -		printf("%-6s", "UID");
1: -	printf("%-6s %-12s %-2s %-16s %-16s %-4s\n",
1: -	       "PID", "COMM", "IP", "SADDR", "DADDR", "DPORT");
1: +static void print_events_header() {
1: +  if (env.print_timestamp)
1: +    printf("%-9s", "TIME(s)");
1: +  if (env.print_uid)
1: +    printf("%-6s", "UID");
1: +  printf("%-6s %-12s %-2s %-16s %-16s %-4s\n", "PID", "COMM", "IP", "SADDR",
1: +         "DADDR", "DPORT");
1:  }
1:  
1: -static void handle_event(void *ctx, int cpu, void *data, __u32 data_sz)
1: -{
1: -	const struct event *event = data;
1: -	char src[INET6_ADDRSTRLEN];
1: -	char dst[INET6_ADDRSTRLEN];
1: -	union {
1: -		struct in_addr  x4;
1: -		struct in6_addr x6;
1: -	} s, d;
1: -	static __u64 start_ts;
1: -
1: -	if (event->af == AF_INET) {
1: -		s.x4.s_addr = event->saddr_v4;
1: -		d.x4.s_addr = event->daddr_v4;
1: -	} else if (event->af == AF_INET6) {
1: -		memcpy(&s.x6.s6_addr, &event->saddr_v6, sizeof(s.x6.s6_addr));
1: -		memcpy(&d.x6.s6_addr, &event->daddr_v6, sizeof(d.x6.s6_addr));
1: -	} else {
1: -		warn("broken event: event->af=%d", event->af);
1: -		return;
1: -	}
1: -
1: -	if (env.print_timestamp) {
1: -		if (start_ts == 0)
1: -			start_ts = event->ts_us;
1: -		printf("%-9.3f", (event->ts_us - start_ts) / 1000000.0);
1: -	}
1: -
1: -	if (env.print_uid)
1: -		printf("%-6d", event->uid);
1: -
1: -	printf("%-6d %-12.12s %-2d %-16s %-16s %-4d\n",
1: -	       event->pid, event->task,
1: -	       event->af == AF_INET ? 4 : 6,
1: -	       inet_ntop(event->af, &s, src, sizeof(src)),
1: -	       inet_ntop(event->af, &d, dst, sizeof(dst)),
1: -	       ntohs(event->dport));
1: +static void handle_event(void *ctx, int cpu, void *data, __u32 data_sz) {
1: +  const struct event *event = data;
1: +  char src[INET6_ADDRSTRLEN];
1: +  char dst[INET6_ADDRSTRLEN];
1: +  union {
1: +    struct in_addr x4;
1: +    struct in6_addr x6;
1: +  } s, d;
1: +  static __u64 start_ts;
1: +
1: +  if (event->af == AF_INET) {
1: +    s.x4.s_addr = event->saddr_v4;
1: +    d.x4.s_addr = event->daddr_v4;
1: +  } else if (event->af == AF_INET6) {
1: +    memcpy(&s.x6.s6_addr, &event->saddr_v6, sizeof(s.x6.s6_addr));
1: +    memcpy(&d.x6.s6_addr, &event->daddr_v6, sizeof(d.x6.s6_addr));
1: +  } else {
1: +    warn("broken event: event->af=%d", event->af);
1: +    return;
1: +  }
1: +
1: +  if (env.print_timestamp) {
1: +    if (start_ts == 0)
1: +      start_ts = event->ts_us;
1: +    printf("%-9.3f", (event->ts_us - start_ts) / 1000000.0);
1: +  }
1: +
1: +  if (env.print_uid)
1: +    printf("%-6d", event->uid);
1: +
1: +  printf("%-6d %-12.12s %-2d %-16s %-16s %-4d\n", event->pid, event->task,
1: +         event->af == AF_INET ? 4 : 6,
1: +         inet_ntop(event->af, &s, src, sizeof(src)),
1: +         inet_ntop(event->af, &d, dst, sizeof(dst)), ntohs(event->dport));
1:  }
1:  
1: -static void handle_lost_events(void *ctx, int cpu, __u64 lost_cnt)
1: -{
1: -	warn("Lost %llu events on CPU #%d!\n", lost_cnt, cpu);
1: +static void handle_lost_events(void *ctx, int cpu, __u64 lost_cnt) {
1: +  warn("Lost %llu events on CPU #%d!\n", lost_cnt, cpu);
1:  }
1:  
1: -static void print_events(int perf_map_fd)
1: -{
1: -	struct perf_buffer_opts pb_opts = {
1: -		.sample_cb = handle_event,
1: -		.lost_cb = handle_lost_events,
1: -	};
1: -	struct perf_buffer *pb = NULL;
1: -	int err;
1: -
1: -	pb = perf_buffer__new(perf_map_fd, 128, &pb_opts);
1: -	err = libbpf_get_error(pb);
1: -	if (err) {
1: -		pb = NULL;
1: -		warn("failed to open perf buffer: %d\n", err);
1: -		goto cleanup;
1: -	}
1: -
1: -	print_events_header();
1: -	while (hang_on) {
1: -		err = perf_buffer__poll(pb, 100);
1: -		if (err < 0) {
1: -			warn("Error polling perf buffer: %d\n", err);
1: -			goto cleanup;
1: -		}
1: -	}
1: +static void print_events(int perf_map_fd) {
1: +  struct perf_buffer_opts pb_opts = {
1: +      .sample_cb = handle_event,
1: +      .lost_cb = handle_lost_events,
1: +  };
1: +  struct perf_buffer *pb = NULL;
1: +  int err;
1: +
1: +  pb = perf_buffer__new(perf_map_fd, 128, &pb_opts);
1: +  err = libbpf_get_error(pb);
1: +  if (err) {
1: +    pb = NULL;
1: +    warn("failed to open perf buffer: %d\n", err);
1: +    goto cleanup;
1: +  }
1: +
1: +  print_events_header();
1: +  while (hang_on) {
1: +    err = perf_buffer__poll(pb, 100);
1: +    if (err < 0) {
1: +      warn("Error polling perf buffer: %d\n", err);
1: +      goto cleanup;
1: +    }
1: +  }
1:  
1:  cleanup:
1: -	perf_buffer__free(pb);
1: +  perf_buffer__free(pb);
1:  }
1:  
1: -int main(int argc, char **argv)
1: -{
1: -	static const struct argp argp = {
1: -		.options = opts,
1: -		.parser = parse_arg,
1: -		.doc = argp_program_doc,
1: -		.args_doc = NULL,
1: -	};
1: -	struct tcpconnect_bpf *obj;
1: -	int err;
1: -
1: -	err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
1: -	if (err)
1: -		return err;
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: -		return 1;
1: -	}
1: -
1: -	obj = tcpconnect_bpf__open();
1: -	if (!obj) {
1: -		warn("failed to open BPF object\n");
1: -		return 1;
1: -	}
1: -
1: -	if (env.count)
1: -		obj->rodata->do_count = true;
1: -	if (env.pid)
1: -		obj->rodata->filter_pid = env.pid;
1: -	if (env.uid != (uid_t) -1)
1: -		obj->rodata->filter_uid = env.uid;
1: -	if (env.nports > 0) {
1: -		obj->rodata->filter_ports_len = env.nports;
1: -		for (int i = 0; i < env.nports; i++) {
1: -			obj->rodata->filter_ports[i] = htons(env.ports[i]);
1: -		}
1: -	}
1: -
1: -	err = tcpconnect_bpf__load(obj);
1: -	if (err) {
1: -		warn("failed to load BPF object: %d\n", err);
1: -		goto cleanup;
1: -	}
1: -
1: -	err = tcpconnect_bpf__attach(obj);
1: -	if (err) {
1: -		warn("failed to attach BPF programs: %s\n", strerror(-err));
1: -		goto cleanup;
1: -	}
1: -
1: -	if (signal(SIGINT, sig_int) == SIG_ERR) {
1: -		warn("can't set signal handler: %s\n", strerror(-errno));
1: -		goto cleanup;
1: -	}
1: -
1: -	if (env.count) {
1: -		print_count(bpf_map__fd(obj->maps.ipv4_count),
1: -			    bpf_map__fd(obj->maps.ipv6_count));
1: -	} else {
1: -		print_events(bpf_map__fd(obj->maps.events));
1: -	}
1: +int main(int argc, char **argv) {
1: +  static const struct argp argp = {
1: +      .options = opts,
1: +      .parser = parse_arg,
1: +      .doc = argp_program_doc,
1: +      .args_doc = NULL,
1: +  };
1: +  struct tcpconnect_bpf *obj;
1: +  int err;
1: +
1: +  err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
1: +  if (err)
1: +    return err;
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: +    return 1;
1: +  }
1: +
1: +  obj = tcpconnect_bpf__open();
1: +  if (!obj) {
1: +    warn("failed to open BPF object\n");
1: +    return 1;
1: +  }
1: +
1: +  if (env.count)
1: +    obj->rodata->do_count = true;
1: +  if (env.pid)
1: +    obj->rodata->filter_pid = env.pid;
1: +  if (env.uid != (uid_t)-1)
1: +    obj->rodata->filter_uid = env.uid;
1: +  if (env.nports > 0) {
1: +    obj->rodata->filter_ports_len = env.nports;
1: +    for (int i = 0; i < env.nports; i++) {
1: +      obj->rodata->filter_ports[i] = htons(env.ports[i]);
1: +    }
1: +  }
1: +
1: +  err = tcpconnect_bpf__load(obj);
1: +  if (err) {
1: +    warn("failed to load BPF object: %d\n", err);
1: +    goto cleanup;
1: +  }
1: +
1: +  err = tcpconnect_bpf__attach(obj);
1: +  if (err) {
1: +    warn("failed to attach BPF programs: %s\n", strerror(-err));
1: +    goto cleanup;
1: +  }
1: +
1: +  if (signal(SIGINT, sig_int) == SIG_ERR) {
1: +    warn("can't set signal handler: %s\n", strerror(-errno));
1: +    goto cleanup;
1: +  }
1: +
1: +  if (env.count) {
1: +    print_count(bpf_map__fd(obj->maps.ipv4_count),
1: +                bpf_map__fd(obj->maps.ipv6_count));
1: +  } else {
1: +    print_events(bpf_map__fd(obj->maps.events));
1: +  }
1:  
1:  cleanup:
1: -	tcpconnect_bpf__destroy(obj);
1: +  tcpconnect_bpf__destroy(obj);
1:  
1: -	return err != 0;
1: +  return err != 0;
1:  }
1: diff --git a/libbpf-tools/tcpconnect.h b/libbpf-tools/tcpconnect.h
1: index 86cc194f..9884d1b0 100644
1: --- a/libbpf-tools/tcpconnect.h
1: +++ b/libbpf-tools/tcpconnect.h
1: @@ -12,32 +12,32 @@
1:  #define TASK_COMM_LEN 16
1:  
1:  struct ipv4_flow_key {
1: -	__u32 saddr;
1: -	__u32 daddr;
1: -	__u16 dport;
1: +  __u32 saddr;
1: +  __u32 daddr;
1: +  __u16 dport;
1:  };
1:  
1:  struct ipv6_flow_key {
1: -	unsigned __int128 saddr;
1: -	unsigned __int128 daddr;
1: -	__u16 dport;
1: +  unsigned __int128 saddr;
1: +  unsigned __int128 daddr;
1: +  __u16 dport;
1:  };
1:  
1:  struct event {
1: -	union {
1: -		__u32 saddr_v4;
1: -		unsigned __int128 saddr_v6;
1: -	};
1: -	union {
1: -		__u32 daddr_v4;
1: -		unsigned __int128 daddr_v6;
1: -	};
1: -	char task[TASK_COMM_LEN];
1: -	__u64 ts_us;
1: -	int af; // AF_INET or AF_INET6
1: -	__u32 pid;
1: -	__u32 uid;
1: -	__u16 dport;
1: +  union {
1: +    __u32 saddr_v4;
1: +    unsigned __int128 saddr_v6;
1: +  };
1: +  union {
1: +    __u32 daddr_v4;
1: +    unsigned __int128 daddr_v6;
1: +  };
1: +  char task[TASK_COMM_LEN];
1: +  __u64 ts_us;
1: +  int af;  // AF_INET or AF_INET6
1: +  __u32 pid;
1: +  __u32 uid;
1: +  __u16 dport;
1:  };
1:  
1:  #endif /* __TCPCONNECT_H */
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/tcpconnect.h
1:     libbpf-tools/syscount.bpf.c
1:     libbpf-tools/maps.bpf.h
1:     libbpf-tools/map_helpers.c
1:     libbpf-tools/tcpconnect.bpf.c
1:     libbpf-tools/map_helpers.h
1:     libbpf-tools/tcpconnect.c
1:     libbpf-tools/syscount.c
1: old tree: bb656e9e427a890b84368474a8c847c3f9a85d74
1: new tree: 42058b50fe1ff41267c6631891f6edd4196b6e6d
 1/44 Test  #1: style-check ......................   Passed    2.22 sec
test 2
      Start  2: c_test_static

2: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "c_test_static" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/cc/test_static"
2: Test timeout computed to be: 10000000
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 -fno-jump-tables -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu x86-64 -momit-leaf-frame-pointer -dwarf-column-info -debugger-tuning=gdb -coverage-notes-file /usr/src/kernels/4.15.15-300.fc27.x86_64/main.gcno -nostdsysteminc -nobuiltininc -resource-dir lib64/clang/5.0.1 -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/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/cc -D __BPF_TRACING__ -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated -I /lib/modules/4.15.15-300.fc27.x86_64/build/include -I /lib/modules/4.15.15-300.fc27.x86_64/build/./arch/x86/include/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/generated -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/generated/uapi -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__ -D KBUILD_MODNAME="bcc" -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/kernels/4.15.15-300.fc27.x86_64 -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.15-300.fc27.x86_64/source
 2/44 Test  #2: c_test_static ....................   Passed    1.60 sec
test 3
      Start  3: test_libbcc

3: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "c_test_all" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/cc/test_libbcc"
3: Test timeout computed to be: 10000000
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:160: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:157: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:107: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/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/cc/test_usdt_probes.cc:340
3: ...............................................................................
3: 
3: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/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 5704 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/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/cc/test_usdt_probes.cc:340
3: ...............................................................................
3: 
3: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/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: 644 | 642 passed | 2 failed as expected
3: 
 3/44 Test  #3: test_libbcc ......................   Passed   14.36 sec
test 4
      Start  4: py_test_stat1_b

4: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_stat1_b" "namespace" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_stat1.py" "test_stat1.b" "proto.b"
4: Test timeout computed to be: 10000000
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 2ms
4: rtt min/avg/max/mdev = 0.005/0.008/0.126/0.013 ms, ipg/ewma 0.022/0.008 ms
4: .
4: ----------------------------------------------------------------------
4: Ran 2 tests in 0.513s
4: 
4: OK
 4/44 Test  #4: py_test_stat1_b ..................   Passed    1.37 sec
test 5
      Start  5: py_test_bpf_log

5: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_bpf_prog" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_bpf_log.py"
5: Test timeout computed to be: 10000000
 5/44 Test  #5: py_test_bpf_log ..................   Passed    0.99 sec
test 6
      Start  6: py_test_stat1_c

6: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_stat1_c" "namespace" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_stat1.py" "test_stat1.c"
6: Test timeout computed to be: 10000000
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.005/0.007/0.073/0.008 ms, ipg/ewma 0.022/0.009 ms
6: .
6: ----------------------------------------------------------------------
6: Ran 2 tests in 0.464s
6: 
6: OK
 6/44 Test  #6: py_test_stat1_c ..................   Passed    0.89 sec
test 7
      Start  7: py_test_xlate1_c

7: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_xlate1_c" "namespace" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_xlate1.py" "test_xlate1.c"
7: Test timeout computed to be: 10000000
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.083 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.083/0.083/0.083/0.000 ms
7: .
7: ----------------------------------------------------------------------
7: Ran 1 test in 0.507s
7: 
7: OK
 7/44 Test  #7: py_test_xlate1_c .................   Passed    1.17 sec
test 8
      Start  8: py_test_call1

8: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_call1_c" "namespace" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_call1.py" "test_call1.c"
8: Test timeout computed to be: 10000000
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.268s
8: 
8: OK
 8/44 Test  #8: py_test_call1 ....................   Passed    0.91 sec
test 9
      Start  9: py_test_trace1

9: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_trace1" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_trace1.py" "test_trace1.b" "kprobe.b"
9: Test timeout computed to be: 10000000
9: .
9: ----------------------------------------------------------------------
9: Ran 1 test in 0.414s
9: 
9: OK
9: ('fd 8:', 'stat1 0', 'stat2 1')
9: ('fd ffff975bd1e5c600:', 'stat1 2', 'stat2 0')
9: ('fd a:', 'stat1 200', 'stat2 100')
9: ('fd 9:', 'stat1 1', 'stat2 1')
 9/44 Test  #9: py_test_trace1 ...................   Passed    0.56 sec
test 10
      Start 10: py_test_trace2

10: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_trace2" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_trace2.py"
10: Test timeout computed to be: 10000000
10: .
10: ----------------------------------------------------------------------
10: Ran 1 test in 3.075s
10: 
10: OK
10: ('ptr ffff975bd4edddc0:', 'stat1 (0 1)')
10: ('ptr ffff975bd385be80:', 'stat1 (0 6)')
10: ('ptr ffff975bd3c59f40:', 'stat1 (0 1)')
10: ('ptr ffff975bd3d8be80:', 'stat1 (0 20)')
10: ('ptr ffff975bd6a0be80:', 'stat1 (0 119)')
10: ('ptr ffffffff8c212480:', 'stat1 (0 12)')
10: ('ptr ffff975bd3858000:', 'stat1 (0 1)')
10: ('ptr ffff975bd36e1f40:', 'stat1 (0 1)')
10: ('ptr ffff975bd5ff8000:', 'stat1 (0 101)')
10: ('ptr ffff975bd69e1f40:', 'stat1 (0 2)')
10: ('ptr ffff975bd1ea0000:', 'stat1 (0 1)')
10: ('ptr ffff975bd4ed9f40:', 'stat1 (0 1)')
10/44 Test #10: py_test_trace2 ...................   Passed    3.17 sec
test 11
      Start 11: py_test_trace3_c

11: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_trace3_c" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_trace3.py" "test_trace3.c"
11: Test timeout computed to be: 10000000
11: 1024+0 records in
11: 1024+0 records out
11: 4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.00383281 s, 1.1 GB/s
11: 1024+0 records in
11: 1024+0 records out
11: 4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.00423276 s, 991 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 1')
11: ('latency 46:', 'count 3')
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 6')
11: ('latency 57:', 'count 47')
11: ('latency 58:', 'count 16')
11: ('latency 59:', 'count 1')
11: ('latency 60:', 'count 4')
11: ('latency 61:', 'count 2')
11: ('latency 62:', 'count 9')
11: ('latency 63:', 'count 7')
11: ('latency 64:', 'count 3')
11: ('latency 65:', 'count 6')
11: ('latency 66:', 'count 2')
11: ('latency 67:', 'count 7')
11: ('latency 68:', 'count 5')
11: ('latency 69:', 'count 6')
11: ('latency 70:', 'count 1')
11: ('latency 71:', 'count 44')
11: ('latency 72:', 'count 59')
11: ('latency 73:', 'count 8')
11: ('latency 74:', 'count 8')
11: ('latency 75:', 'count 16')
11: ('latency 76:', 'count 38')
11: ('latency 77:', 'count 10')
11: ('latency 78:', 'count 52')
11: ('latency 79:', 'count 32')
11: ('latency 80:', 'count 39')
11: ('latency 81:', 'count 49')
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 1.896s
11: 
11: OK
11/44 Test #11: py_test_trace3_c .................   Passed    2.03 sec
test 12
      Start 12: py_test_trace4

12: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_trace4" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_trace4.py"
12: Test timeout computed to be: 10000000
12: ..
12: ----------------------------------------------------------------------
12: Ran 2 tests in 1.328s
12: 
12: OK
12/44 Test #12: py_test_trace4 ...................   Passed    1.46 sec
test 13
      Start 13: py_test_trace_maxactive

13: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_trace_maxactive" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_trace_maxactive.py"
13: Test timeout computed to be: 10000000
13: .
13: ----------------------------------------------------------------------
13: Ran 1 test in 0.838s
13: 
13: OK
13/44 Test #13: py_test_trace_maxactive ..........   Passed    0.96 sec
test 14
      Start 14: py_test_probe_count

14: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_probe_count" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_probe_count.py"
14: Test timeout computed to be: 10000000
14: ...cannot attach kprobe, probe entry may not exist
14: ...
14: ----------------------------------------------------------------------
14: Ran 6 tests in 3.636s
14: 
14: OK
14/44 Test #14: py_test_probe_count ..............   Passed    3.71 sec
test 15
      Start 15: py_test_debuginfo

15: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_debuginfo" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_debuginfo.py"
15: Test timeout computed to be: 10000000
15: ......
15: ----------------------------------------------------------------------
15: Ran 6 tests in 0.629s
15: 
15: OK
15/44 Test #15: py_test_debuginfo ................   Passed    0.72 sec
test 16
      Start 16: py_test_brb

16: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_brb_c" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_brb.py" "test_brb.c"
16: Test timeout computed to be: 10000000
16: net.ipv4.ip_forward = 1
16: ARPING 100.1.1.254 from 100.1.1.1 eth0
16: Unicast reply from 100.1.1.254 [16:A6:F9:17:46:AC]  0.660ms
16: Sent 1 probes (1 broadcast(s))
16: Received 1 response(s)
16: ARPING 200.1.1.254 from 200.1.1.1 eth0
16: Unicast reply from 200.1.1.254 [F6:91:E7:B6:85:6F]  1.255ms
16: Sent 1 probes (1 broadcast(s))
16: Received 1 response(s)
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.106 ms
16: 64 bytes from 200.1.1.1: icmp_seq=2 ttl=63 time=0.065 ms
16: 
16: --- 200.1.1.1 ping statistics ---
16: 2 packets transmitted, 2 received, 0% packet loss, time 1038ms
16: rtt min/avg/max/mdev = 0.065/0.085/0.106/0.022 ms
16: [ ID] Interval       Transfer     Bandwidth
16: [  7]  0.0- 1.0 sec  3.08 GBytes  26.4 Gbits/sec
16: [ ID] Interval       Transfer     Bandwidth
16: [ 10]  0.0- 1.0 sec  3.08 GBytes  26.2 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
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     26040.73   
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 : 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     22576.39   
16: 16384  87380 
16: .
16: ----------------------------------------------------------------------
16: Ran 1 test in 7.359s
16: 
16: OK
16/44 Test #16: py_test_brb ......................   Passed    7.52 sec
test 17
      Start 17: py_test_brb2

17: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_brb2_c" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_brb2.py" "test_brb2.c"
17: Test timeout computed to be: 10000000
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.136 ms
17: 64 bytes from 200.1.1.1: icmp_seq=2 ttl=63 time=0.068 ms
17: 
17: --- 200.1.1.1 ping statistics ---
17: 2 packets transmitted, 2 received, 0% packet loss, time 1023ms
17: rtt min/avg/max/mdev = 0.068/0.102/0.136/0.034 ms
17: [ ID] Interval       Transfer     Bandwidth
17: [  7]  0.0- 1.0 sec  3.28 GBytes  28.1 Gbits/sec
17: [ ID] Interval       Transfer     Bandwidth
17: [ 10]  0.0- 1.0 sec  3.28 GBytes  27.9 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
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     28584.45   
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 : 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     20931.61   
17: 16384  87380 
17: .
17: ----------------------------------------------------------------------
17: Ran 1 test in 7.721s
17: 
17: OK
17/44 Test #17: py_test_brb2 .....................   Passed    7.86 sec
test 18
      Start 18: py_test_clang

18: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_clang" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_clang.py"
18: Test timeout computed to be: 10000000
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:256: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:256: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 83 tests in 85.006s
18: 
18: OK (skipped=1)
18: 0
18/44 Test #18: py_test_clang ....................   Passed   85.28 sec
test 19
      Start 19: py_test_histogram

19: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_histogram" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_histogram.py"
19: Test timeout computed to be: 10000000
19: 
19: Bucket ptr = 'java'
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             : 26       |********************|
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         : 1        |                    |
19: 
19: Bucket ptr = 'python'
19:                value                         : count     distribution
19:                    0 -> 1                    : 99       |********************|
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 = 'rcu_sched'
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   : 3        |****************************************|
19: 
19: Bucket ptr = 'watchdog/0'
19:      value               : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: Bucket ptr = 'kworker/0:12'
19:      value               : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: Bucket ptr = 'watchdog/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:    1048576 -> 2097151    : 0        |                                        |
19:    2097152 -> 4194303    : 0        |                                        |
19:    4194304 -> 8388607    : 0        |                                        |
19:    8388608 -> 16777215   : 0        |                                        |
19:   16777216 -> 33554431   : 0        |                                        |
19:   33554432 -> 67108863   : 1        |****************************************|
19: 
19: Bucket ptr = 'kworker/1: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:              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          : 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             : 1        |                    |
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        : 100      |********************|
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:              1048576 -> 2097151              : 0        |                    |
19:              2097152 -> 4194303              : 0        |                    |
19:              4194304 -> 8388607              : 0        |                    |
19:              8388608 -> 16777215             : 0        |                    |
19:             16777216 -> 33554431             : 0        |                    |
19:             33554432 -> 67108863             : 4        |***                 |
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          : 26       |********************|
19: 
19: k_1 & k_2 =   0 0
19:      size                : count     distribution
19:          0 -> 1          : 7        |*********************                   |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 0        |                                        |
19:          8 -> 15         : 2        |******                                  |
19:         16 -> 31         : 0        |                                        |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 1        |***                                     |
19:        128 -> 255        : 2        |******                                  |
19:        256 -> 511        : 6        |******************                      |
19:        512 -> 1023       : 12       |************************************    |
19:       1024 -> 2047       : 4        |************                            |
19:       2048 -> 4095       : 5        |***************                         |
19:       4096 -> 8191       : 13       |****************************************|
19:       8192 -> 16383      : 13       |****************************************|
19:      16384 -> 32767      : 6        |******************                      |
19:      32768 -> 65535      : 2        |******                                  |
19:      65536 -> 131071     : 1        |***                                     |
19: 
19: k_1 & k_2 =   0 2
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =   0 3
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 2        |**************************              |
19: 
19: k_1 & k_2 =   0 4
19:      size                : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: k_1 & k_2 =   0 5
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =   0 6
19:      size                : count     distribution
19:          0 -> 1          : 8        |****************************************|
19: 
19: k_1 & k_2 =   0 7
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  16 0
19:      size                : count     distribution
19:          0 -> 1          : 5        |*****                                   |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 1        |*                                       |
19:          8 -> 15         : 0        |                                        |
19:         16 -> 31         : 0        |                                        |
19:         32 -> 63         : 2        |**                                      |
19:         64 -> 127        : 1        |*                                       |
19:        128 -> 255        : 1        |*                                       |
19:        256 -> 511        : 2        |**                                      |
19:        512 -> 1023       : 12       |************                            |
19:       1024 -> 2047       : 5        |*****                                   |
19:       2048 -> 4095       : 7        |*******                                 |
19:       4096 -> 8191       : 37       |****************************************|
19:       8192 -> 16383      : 8        |********                                |
19:      16384 -> 32767      : 3        |***                                     |
19:      32768 -> 65535      : 1        |*                                       |
19:      65536 -> 131071     : 1        |*                                       |
19: 
19: k_1 & k_2 =  16 1
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  16 2
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  16 3
19:      size                : count     distribution
19:          0 -> 1          : 3        |************************                |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 5        |****************************************|
19: 
19: k_1 & k_2 =  16 4
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =  16 5
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  16 6
19:      size                : count     distribution
19:          0 -> 1          : 7        |****************************************|
19: 
19: k_1 & k_2 =  16 7
19:      size                : count     distribution
19:          0 -> 1          : 5        |****************************************|
19: 
19: k_1 & k_2 =  32 0
19:      size                : count     distribution
19:          0 -> 1          : 3        |**                                      |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 1        |                                        |
19:          8 -> 15         : 2        |*                                       |
19:         16 -> 31         : 0        |                                        |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 0        |                                        |
19:        128 -> 255        : 0        |                                        |
19:        256 -> 511        : 0        |                                        |
19:        512 -> 1023       : 19       |***************                         |
19:       1024 -> 2047       : 3        |**                                      |
19:       2048 -> 4095       : 4        |***                                     |
19:       4096 -> 8191       : 50       |****************************************|
19:       8192 -> 16383      : 10       |********                                |
19:      16384 -> 32767      : 7        |*****                                   |
19:      32768 -> 65535      : 2        |*                                       |
19: 
19: k_1 & k_2 =  32 1
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  32 2
19:      size                : count     distribution
19:          0 -> 1          : 8        |****************************************|
19: 
19: k_1 & k_2 =  32 3
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  32 4
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  32 5
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
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       : 2        |********************                    |
19: 
19: k_1 & k_2 =  32 6
19:      size                : count     distribution
19:          0 -> 1          : 5        |****************************************|
19: 
19: k_1 & k_2 =  32 7
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =  48 0
19:      size                : count     distribution
19:          0 -> 1          : 7        |***********                             |
19:          2 -> 3          : 1        |*                                       |
19:          4 -> 7          : 0        |                                        |
19:          8 -> 15         : 0        |                                        |
19:         16 -> 31         : 1        |*                                       |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 1        |*                                       |
19:        128 -> 255        : 1        |*                                       |
19:        256 -> 511        : 1        |*                                       |
19:        512 -> 1023       : 18       |******************************          |
19:       1024 -> 2047       : 24       |****************************************|
19:       2048 -> 4095       : 8        |*************                           |
19:       4096 -> 8191       : 12       |********************                    |
19:       8192 -> 16383      : 6        |**********                              |
19:      16384 -> 32767      : 4        |******                                  |
19:      32768 -> 65535      : 4        |******                                  |
19:      65536 -> 131071     : 0        |                                        |
19:     131072 -> 262143     : 1        |*                                       |
19: 
19: k_1 & k_2 =  48 1
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  48 2
19:      size                : count     distribution
19:          0 -> 1          : 10       |****************************************|
19: 
19: k_1 & k_2 =  48 3
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  48 4
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =  48 5
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  48 6
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  48 7
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =  64 0
19:      size                : count     distribution
19:          0 -> 1          : 4        |**                                      |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 0        |                                        |
19:          8 -> 15         : 1        |                                        |
19:         16 -> 31         : 1        |                                        |
19:         32 -> 63         : 1        |                                        |
19:         64 -> 127        : 1        |                                        |
19:        128 -> 255        : 1        |                                        |
19:        256 -> 511        : 2        |*                                       |
19:        512 -> 1023       : 20       |*************                           |
19:       1024 -> 2047       : 5        |***                                     |
19:       2048 -> 4095       : 12       |********                                |
19:       4096 -> 8191       : 59       |****************************************|
19:       8192 -> 16383      : 7        |****                                    |
19:      16384 -> 32767      : 3        |**                                      |
19: 
19: k_1 & k_2 =  64 1
19:      size                : count     distribution
19:          0 -> 1          : 7        |****************************************|
19: 
19: k_1 & k_2 =  64 2
19:      size                : count     distribution
19:          0 -> 1          : 7        |****************************************|
19: 
19: k_1 & k_2 =  64 3
19:      size                : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: k_1 & k_2 =  64 4
19:      size                : count     distribution
19:          0 -> 1          : 7        |****************************************|
19: 
19: k_1 & k_2 =  64 5
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  64 6
19:      size                : count     distribution
19:          0 -> 1          : 6        |****************************************|
19: 
19: k_1 & k_2 =  64 7
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 =  80 0
19:      size                : count     distribution
19:          0 -> 1          : 3        |*                                       |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 0        |                                        |
19:          8 -> 15         : 1        |                                        |
19:         16 -> 31         : 1        |                                        |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 1        |                                        |
19:        128 -> 255        : 1        |                                        |
19:        256 -> 511        : 9        |***                                     |
19:        512 -> 1023       : 16       |******                                  |
19:       1024 -> 2047       : 4        |*                                       |
19:       2048 -> 4095       : 7        |***                                     |
19:       4096 -> 8191       : 92       |****************************************|
19:       8192 -> 16383      : 6        |**                                      |
19:      16384 -> 32767      : 2        |                                        |
19:      32768 -> 65535      : 1        |                                        |
19: 
19: k_1 & k_2 =  80 1
19:      size                : count     distribution
19:          0 -> 1          : 6        |****************************************|
19: 
19: k_1 & k_2 =  80 2
19:      size                : count     distribution
19:          0 -> 1          : 6        |****************************************|
19: 
19: k_1 & k_2 =  80 3
19:      size                : count     distribution
19:          0 -> 1          : 6        |****************************************|
19: 
19: k_1 & k_2 =  80 4
19:      size                : count     distribution
19:          0 -> 1          : 5        |****************************************|
19: 
19: k_1 & k_2 =  80 5
19:      size                : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: k_1 & k_2 =  80 6
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 =  80 7
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  96 0
19:      size                : count     distribution
19:         16 -> 31         : 2        |***                                     |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 1        |*                                       |
19:        128 -> 255        : 0        |                                        |
19:        256 -> 511        : 9        |*****************                       |
19:        512 -> 1023       : 17       |********************************        |
19:       1024 -> 2047       : 1        |*                                       |
19:       2048 -> 4095       : 8        |***************                         |
19:       4096 -> 8191       : 21       |****************************************|
19:       8192 -> 16383      : 12       |**********************                  |
19:      16384 -> 32767      : 3        |*****                                   |
19:      32768 -> 65535      : 5        |*********                               |
19:      65536 -> 131071     : 1        |*                                       |
19: 
19: k_1 & k_2 =  96 1
19:      size                : count     distribution
19:          0 -> 1          : 4        |************************************...
19: ----------------------------------------------------------------------
19: Ran 4 tests in 3.647s
19: 
19: OK
19: ****|
19: 
19: k_1 & k_2 =  96 2
19:      size                : count     distribution
19:          0 -> 1          : 12       |****************************************|
19: 
19: k_1 & k_2 =  96 3
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 3        |******************************          |
19: 
19: k_1 & k_2 =  96 4
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  96 5
19:      size                : count     distribution
19:          0 -> 1          : 5        |****************************************|
19: 
19: k_1 & k_2 =  96 6
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 =  96 7
19:      size                : count     distribution
19:          0 -> 1          : 2        |****************************************|
19: 
19: k_1 & k_2 = 112 0
19:      size                : count     distribution
19:          0 -> 1          : 3        |******                                  |
19:          2 -> 3          : 0        |                                        |
19:          4 -> 7          : 0        |                                        |
19:          8 -> 15         : 0        |                                        |
19:         16 -> 31         : 1        |**                                      |
19:         32 -> 63         : 0        |                                        |
19:         64 -> 127        : 1        |**                                      |
19:        128 -> 255        : 1        |**                                      |
19:        256 -> 511        : 1        |**                                      |
19:        512 -> 1023       : 19       |****************************************|
19:       1024 -> 2047       : 4        |********                                |
19:       2048 -> 4095       : 4        |********                                |
19:       4096 -> 8191       : 9        |******************                      |
19:       8192 -> 16383      : 6        |************                            |
19:      16384 -> 32767      : 3        |******                                  |
19:      32768 -> 65535      : 2        |****                                    |
19: 
19: k_1 & k_2 = 112 1
19:      size                : count     distribution
19:          0 -> 1          : 3        |****************************************|
19: 
19: k_1 & k_2 = 112 2
19:      size                : count     distribution
19:          0 -> 1          : 6        |****************************************|
19: 
19: k_1 & k_2 = 112 3
19:      size                : count     distribution
19:          0 -> 1          : 1        |****************************************|
19: 
19: k_1 & k_2 = 112 4
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 = 112 5
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19: 
19: k_1 & k_2 = 112 6
19:      size                : count     distribution
19:          0 -> 1          : 5        |****************************************|
19: 
19: k_1 & k_2 = 112 7
19:      size                : count     distribution
19:          0 -> 1          : 4        |****************************************|
19/44 Test #19: py_test_histogram ................   Passed    3.73 sec
test 20
      Start 20: py_array

20: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_array" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_array.py"
20: Test timeout computed to be: 10000000
20: ....
20: ----------------------------------------------------------------------
20: Ran 4 tests in 1.742s
20: 
20: OK
20/44 Test #20: py_array .........................   Passed    1.85 sec
test 21
      Start 21: py_uprobes

21: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_uprobes" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_uprobes.py"
21: Test timeout computed to be: 10000000
21: .Python 2.7.14
21: .Arena 0:
21: system bytes     =   28033024
21: in use bytes     =    3095088
21: Total (incl. mmap):
21: system bytes     =   28823552
21: in use bytes     =    3885616
21: max mmap regions =          7
21: max mmap bytes   =    9203712
21: .
21: ----------------------------------------------------------------------
21: Ran 3 tests in 6.655s
21: 
21: OK
21/44 Test #21: py_uprobes .......................   Passed    6.77 sec
test 22
      Start 22: py_uprobes_2

22: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_uprobes2" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_uprobes2.py"
22: Test timeout computed to be: 10000000
22: .
22: ----------------------------------------------------------------------
22: Ran 1 test in 0.263s
22: 
22: OK
22/44 Test #22: py_uprobes_2 .....................   Passed    0.35 sec
test 23
      Start 23: py_test_stackid

23: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_stackid" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_stackid.py"
23: Test timeout computed to be: 10000000
23: s.
23: ----------------------------------------------------------------------
23: Ran 2 tests in 0.358s
23: 
23: OK (skipped=1)
23/44 Test #23: py_test_stackid ..................   Passed    0.47 sec
test 24
      Start 24: py_test_tracepoint

24: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_tracepoint" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_tracepoint.py"
24: Test timeout computed to be: 10000000
24: ..
24: ----------------------------------------------------------------------
24: Ran 2 tests in 2.623s
24: 
24: OK
24/44 Test #24: py_test_tracepoint ...............   Passed    2.73 sec
test 25
      Start 25: py_test_perf_event

25: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_perf_event" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_perf_event.py"
25: Test timeout computed to be: 10000000
25: perf_event_open: No such file or directory
25: s
25: ----------------------------------------------------------------------
25: Ran 1 test in 0.528s
25: 
25: OK (skipped=1)
25/44 Test #25: py_test_perf_event ...............   Passed    0.66 sec
test 26
      Start 26: py_test_utils

26: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_utils" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_utils.py"
26: Test timeout computed to be: 10000000
26: ..
26: ----------------------------------------------------------------------
26: Ran 2 tests in 0.001s
26: 
26: OK
26/44 Test #26: py_test_utils ....................   Passed    0.11 sec
test 27
      Start 27: py_test_percpu

27: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_percpu" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_percpu.py"
27: Test timeout computed to be: 10000000
27: ....
27: ----------------------------------------------------------------------
27: Ran 4 tests in 3.059s
27: 
27: OK
27/44 Test #27: py_test_percpu ...................   Passed    3.17 sec
test 28
      Start 28: py_test_dump_func

28: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_dump_func" "simple" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_dump_func.py"
28: Test timeout computed to be: 10000000
28: .
28: ----------------------------------------------------------------------
28: Ran 1 test in 0.204s
28: 
28: OK
28/44 Test #28: py_test_dump_func ................   Passed    0.29 sec
test 29
      Start 29: py_test_disassembler

29: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_disassembler" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_disassembler.py"
29: Test timeout computed to be: 10000000
29: ..
29: ----------------------------------------------------------------------
29: Ran 2 tests in 0.362s
29: 
29: OK
29/44 Test #29: py_test_disassembler .............   Passed    0.48 sec
test 30
      Start 30: py_test_tools_smoke

30: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_tools_smoke" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_tools_smoke.py"
30: Test timeout computed to be: 10000000
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/lib64/python2.7/site.py", line 355, in __call__
30:     raise SystemExit(code)
30: SystemExit: None
30: .....clear: terminal attributes: No such device or address
30: 
30: .clear: terminal attributes: No such device or address
30: 
30: clear: terminal attributes: No such device or address
30: 
30: clear: terminal attributes: No such device or address
30: 
30: clear: terminal attributes: No such device or address
30: 
30: .......s.............clear: terminal attributes: No such device or address
30: 
30: ....../bin/sh: line 1:  6420 Killed                  timeout -s KILL -k 5s 5s ../../tools/killsnoop.py > /dev/null
30: .s..........libbpf: failed to find valid kernel BTF
30: libbpf: vmlinux BTF is not found
30: ......clear: terminal attributes: No such device or address
30: 
30: ...............clear: terminal attributes: No such device or address
30: 
30: ...clear: terminal attributes: No such device or address
30: 
30: .....clear: terminal attributes: No such device or address
30: 
30: ...libbpf: failed to find valid kernel BTF
30: libbpf: vmlinux BTF is not found
30: ......
30: ----------------------------------------------------------------------
30: Ran 83 tests in 267.219s
30: 
30: OK (skipped=2)
30/44 Test #30: py_test_tools_smoke ..............   Passed  267.31 sec
test 31
      Start 31: py_test_tools_memleak

31: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_tools_memleak" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_tools_memleak.py"
31: Test timeout computed to be: 10000000
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 21.786s
31: 
31: OK
31/44 Test #31: py_test_tools_memleak ............   Passed   21.84 sec
test 32
      Start 32: py_test_usdt

32: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_usdt" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_usdt.py"
32: Test timeout computed to be: 10000000
32: <stdin>: In function ‘main’:
32: <stdin>:23:17: warning: null character(s) preserved in literal
32: <stdin>:28:17: warning: null character(s) preserved in literal
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 -fno-jump-tables -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu x86-64 -momit-leaf-frame-pointer -dwarf-column-info -debugger-tuning=gdb -coverage-notes-file /usr/src/kernels/4.15.15-300.fc27.x86_64/main.gcno -nostdsysteminc -nobuiltininc -resource-dir lib64/clang/5.0.1 -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/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python -D __BPF_TRACING__ -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated -I /lib/modules/4.15.15-300.fc27.x86_64/build/include -I /lib/modules/4.15.15-300.fc27.x86_64/build/./arch/x86/include/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/arch/x86/include/generated/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/uapi -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/generated -I /lib/modules/4.15.15-300.fc27.x86_64/build/include/generated/uapi -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__ -D KBUILD_MODNAME="bcc" -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/kernels/4.15.15-300.fc27.x86_64 -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 0x400678ULL: *((int8_t *)dest) = ctx->ax; __asm__ __volatile__("": : :"memory"); return 0;
32:   case 0x400681ULL: *((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 0x400678ULL: { u64 __addr = ctx->bp + -24; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32:   case 0x400681ULL: { u64 __addr = ctx->bp + -20; __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 0x400679ULL: { u64 __addr = ctx->bp + -20; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32:   case 0x400698ULL: *((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 0x400679ULL: { u64 __addr = ctx->bp + -24; __asm__ __volatile__("": : :"memory"); int32_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((int32_t *)dest) = __res; } return 0;
32:   case 0x400698ULL: *((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.054s
32: 
32: OK
32: Running from kernel directory at: /lib/modules/4.15.15-300.fc27.x86_64/source
32: str4
32: str5
32: str6
32: str7
32: str8
32: str9
32/44 Test #32: py_test_usdt .....................   Passed    4.39 sec
test 33
      Start 33: py_test_usdt2

33: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_usdt2" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_usdt2.py"
33: Test timeout computed to be: 10000000
33: .
33: ----------------------------------------------------------------------
33: Ran 1 test in 2.051s
33: 
33: OK
33/44 Test #33: py_test_usdt2 ....................   Passed    2.20 sec
test 34
      Start 34: py_test_usdt3

34: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_usdt3" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_usdt3.py"
34: Test timeout computed to be: 10000000
34: test:probe [sema 0x0]
34:   location #1 /proc/6649/root/tmp/tmpP5fqyv/liba.so 0x5d1
34:     argument #1 4 signed   bytes @ *(bp - 4)
34:   location #2 /proc/6649/root/tmp/tmpP5fqyv/libb.so 0x5d1
34:     argument #1 4 signed   bytes @ *(bp - 4)
34:   location #3 /proc/6649/root/tmp/tmpP5fqyv/a.out 0x40064e
34:     argument #1 4 signed   bytes @ *(bp - 4)
34: test_dup_name:probe [sema 0x0]
34:   location #1 /proc/6649/root/tmp/tmpP5fqyv/liba.so 0x5d2
34:     argument #1 4 signed   bytes @ *(bp - 4)
34:   location #2 /proc/6649/root/tmp/tmpP5fqyv/libb.so 0x5d2
34:     argument #1 4 signed   bytes @ *(bp - 4)
34:   location #3 /proc/6649/root/tmp/tmpP5fqyv/a.out 0x40064f
34:     argument #1 4 signed   bytes @ *(bp - 4)
34: libc:setjmp [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x34321
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/6649/root/usr/lib64/libc-2.26.so 0x34403
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/6649/root/usr/lib64/libc-2.26.so 0x106453
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/6649/root/usr/lib64/libc-2.26.so 0x3441f
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/6649/root/usr/lib64/libc-2.26.so 0x10646f
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/6649/root/usr/lib64/libc-2.26.so 0x7ce73
34:     argument #1 8 unsigned bytes @ ax
34:     argument #2 8 unsigned bytes @ *(&mp_ + 32)
34:   location #2 /proc/6649/root/usr/lib64/libc-2.26.so 0x83679
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/6649/root/usr/lib64/libc-2.26.so 0x7ce83
34:     argument #1 8 unsigned bytes @ ax
34:     argument #2 8 unsigned bytes @ *(&mp_ + 24)
34:   location #2 /proc/6649/root/usr/lib64/libc-2.26.so 0x83691
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/6649/root/usr/lib64/libc-2.26.so 0x7ce9b
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/6649/root/usr/lib64/libc-2.26.so 0x7ced3
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/6649/root/usr/lib64/libc-2.26.so 0x7cee3
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/6649/root/usr/lib64/libc-2.26.so 0x7d283
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/6649/root/usr/lib64/libc-2.26.so 0x83610
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/6649/root/usr/lib64/libc-2.26.so 0x7d2a3
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/6649/root/usr/lib64/libc-2.26.so 0x83740
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/6649/root/usr/lib64/libc-2.26.so 0x7d2cb
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/6649/root/usr/lib64/libc-2.26.so 0x8371f
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/6649/root/usr/lib64/libc-2.26.so 0x7d2e3
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/6649/root/usr/lib64/libc-2.26.so 0x836f0
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/6649/root/usr/lib64/libc-2.26.so 0x7d303
34:     argument #1 4 signed   bytes @ ax
34:     argument #2 4 signed   bytes @ *(&perturb_byte + 0)
34:   location #2 /proc/6649/root/usr/lib64/libc-2.26.so 0x836a0
34:     argument #1 4 signed   bytes @ bx
34:     argument #2 4 signed   bytes @ *(&perturb_byte + 0)
34: libc:memory_arena_reuse_free_list [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7d497
34:     argument #1 8 unsigned bytes @ bx
34: libc:memory_heap_new [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7d59e
34:     argument #1 8 unsigned bytes @ bx
34:     argument #2 8 unsigned bytes @ bp
34: libc:memory_arena_reuse [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7e00e
34:     argument #1 8 unsigned bytes @ bx
34:     argument #2 8 unsigned bytes @ bp
34: libc:memory_arena_reuse_wait [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7e08d
34:     argument #1 8 unsigned bytes @ bx
34:     argument #2 8 unsigned bytes @ bx
34:     argument #3 8 unsigned bytes @ bp
34: libc:memory_arena_new [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7e1e4
34:     argument #1 8 unsigned bytes @ bx
34:     argument #2 8 unsigned bytes @ r12
34: libc:memory_arena_retry [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7e389
34:     argument #1 8 unsigned bytes @ si
34:     argument #2 8 unsigned bytes @ di
34: libc:memory_sbrk_less [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7e98d
34:     argument #1 8 unsigned bytes @ ax
34:     argument #2 8 signed   bytes @ bp
34: libc:memory_heap_free [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7f100
34:     argument #1 8 unsigned bytes @ di
34:     argument #2 8 unsigned bytes @ ax
34: libc:memory_heap_less [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7f45b
34:     argument #1 8 unsigned bytes @ r12
34:     argument #2 8 unsigned bytes @ r10
34: libc:memory_heap_more [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x7f725
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/6649/root/usr/lib64/libc-2.26.so 0x7f989
34:     argument #1 8 unsigned bytes @ ax
34:     argument #2 8 signed   bytes @ r12
34: libc:memory_malloc_retry [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x82100
34:     argument #1 8 unsigned bytes @ bx
34: libc:memory_memalign_retry [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x823f0
34:     argument #1 8 unsigned bytes @ bp
34:     argument #2 8 unsigned bytes @ bx
34: libc:memory_mallopt_free_dyn_thresholds [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x82542
34:     argument #1 8 unsigned bytes @ ax
34:     argument #2 8 unsigned bytes @ dx
34: libc:memory_realloc_retry [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x82965
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/6649/root/usr/lib64/libc-2.26.so 0x82e08
34:     argument #1 8 unsigned bytes @ bp
34: libc:memory_mallopt [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/libc-2.26.so 0x835e0
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/6649/root/usr/lib64/libc-2.26.so 0x836c6
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/6649/root/usr/lib64/libc-2.26.so 0x1021d4
34:     argument #1 8 unsigned bytes @ di
34: rtld:init_start [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x3993
34:     argument #1 4 signed   bytes @ 0
34:     argument #2 8 unsigned bytes @ bx
34: rtld:init_complete [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x4071
34:     argument #1 4 signed   bytes @ 0
34:     argument #2 8 unsigned bytes @ bx
34: rtld:map_failed [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x55a6
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/6649/root/usr/lib64/ld-2.26.so 0x5a5a
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/6649/root/usr/lib64/ld-2.26.so 0x1384c
34:     argument #1 8 signed   bytes @ *(r15 + 40)
34:     argument #2 8 unsigned bytes @ bx
34:     argument #3 8 unsigned bytes @ r14
34: rtld:reloc_start [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x1390b
34:     argument #1 8 signed   bytes @ *(ax + 40)
34:     argument #2 8 unsigned bytes @ *(bp - 120)
34: rtld:reloc_complete [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x13dcf
34:     argument #1 8 signed   bytes @ *(ax + 40)
34:     argument #2 8 unsigned bytes @ *(bp - 120)
34:     argument #3 8 unsigned bytes @ r14
34: rtld:unmap_start [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x14a64
34:     argument #1 8 signed   bytes @ r14
34:     argument #2 8 unsigned bytes @ bx
34: rtld:unmap_complete [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x14d04
34:     argument #1 8 signed   bytes @ *(bp - 128)
34:     argument #2 8 unsigned bytes @ bx
34: rtld:setjmp [sema 0x0]
34:   location #1 /proc/6649/root/usr/lib64/ld-2.26.so 0x1a9fd
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/6649/root/usr/lib64/ld-2.26.so 0x1aa3d
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/6649/root/usr/lib64/ld-2.26.so 0x1aa59
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.138s
34: 
34: OK
34: temp directory: /tmp/tmpP5fqyv
34/44 Test #34: py_test_usdt3 ....................   Passed    1.27 sec
test 35
      Start 35: py_test_license

35: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_license" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_license.py"
35: Test timeout computed to be: 10000000
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.515s
35: 
35: OK (expected failures=5)
35/44 Test #35: py_test_license ..................   Passed    2.59 sec
test 36
      Start 36: py_test_free_bcc_memory

36: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_free_bcc_memory" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_free_bcc_memory.py"
36: Test timeout computed to be: 10000000
36: .
36: ----------------------------------------------------------------------
36: Ran 1 test in 0.249s
36: 
36: OK
36: Before freeing llvm memory: RssFile:  65840 kB
36: After  freeing llvm memory: RssFile:  47124 kB
36/44 Test #36: py_test_free_bcc_memory ..........   Passed    0.33 sec
test 37
      Start 37: py_test_rlimit

37: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_rlimit" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_rlimit.py"
37: Test timeout computed to be: 10000000
37: could not open bpf map: unused, error: Operation not permitted
37: .
37: ----------------------------------------------------------------------
37: Ran 1 test in 0.433s
37: 
37: OK
37/44 Test #37: py_test_rlimit ...................   Passed    0.51 sec
test 38
      Start 38: py_test_lpm_trie

38: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_test_lpm_trie" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_lpm_trie.py"
38: Test timeout computed to be: 10000000
38: ..
38: ----------------------------------------------------------------------
38: Ran 2 tests in 0.422s
38: 
38: OK
38/44 Test #38: py_test_lpm_trie .................   Passed    0.51 sec
test 39
      Start 39: py_ringbuf

39: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_ringbuf" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_ringbuf.py"
39: Test timeout computed to be: 10000000
39: ssss
39: ----------------------------------------------------------------------
39: Ran 4 tests in 0.000s
39: 
39: OK (skipped=4)
39/44 Test #39: py_ringbuf .......................   Passed    0.08 sec
test 40
      Start 40: py_queuestack

40: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "py_queuestack" "sudo" "/home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/python/test_queuestack.py"
40: Test timeout computed to be: 10000000
40: ss
40: ----------------------------------------------------------------------
40: Ran 2 tests in 0.000s
40: 
40: OK (skipped=2)
40/44 Test #40: py_queuestack ....................   Passed    0.08 sec
test 41
      Start 41: lua_test_clang

41: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "lua_test_clang" "sudo" "/usr/bin/luajit" "test_clang.lua"
41: Test timeout computed to be: 10000000
41: /virtual/main.c:1:30: error: expected expression
41: int failure(void *ctx) { if (); return 0; }
41:                              ^
41: 1 error generated.
41: ....................
41: Ran 20 tests in 13.734 seconds, 20 successes, 0 failures
41: OK
41/44 Test #41: lua_test_clang ...................   Passed   13.93 sec
test 42
      Start 42: lua_test_uprobes

42: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "lua_test_uprobes" "sudo" "/usr/bin/luajit" "test_uprobes.lua"
42: Test timeout computed to be: 10000000
42: Python 2.7.14
42: Arena 0:
42: system bytes     =   23519232
42: in use bytes     =    1225392
42: Total (incl. mmap):
42: system bytes     =   23519232
42: in use bytes     =    1225392
42: max mmap regions =          6
42: max mmap bytes   =    8413184
42: ..
42: Ran 2 tests in 0.481 seconds, 2 successes, 0 failures
42: OK
42/44 Test #42: lua_test_uprobes .................   Passed    0.57 sec
test 43
      Start 43: lua_test_dump

43: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/build/tests/wrapper.sh "lua_test_dump" "sudo" "/usr/bin/luajit" "test_dump.lua"
43: Test timeout computed to be: 10000000
43: .
43: Ran 1 tests in 0.214 seconds, 1 successes, 0 failures
43: OK
43/44 Test #43: lua_test_dump ....................   Passed    0.26 sec
test 44
      Start 44: lua_test_standalone

44: Test command: /home/fedora/jenkins/workspace/bcc-pr/label/fc27/tests/lua/test_standalone.sh
44: Test timeout computed to be: 10000000
44: + cd src/lua
44: + [[ ! -x bcc-lua ]]
44: + echo 'bcc-lua not built --- skipping'
44: bcc-lua not built --- skipping
44: + exit 0
44/44 Test #44: lua_test_standalone ..............   Passed    0.00 sec

100% tests passed, 0 tests failed out of 44

Total Test time (real) = 473.29 sec
++ head -n 1 Testing/TAG
+ cp Testing/20200715-1611/Test.xml ./CTestResults.xml
Taking single-use slave fedora27-slave-10c offline.
Finished: SUCCESS