{"push_id":2755648447,"size":17,"distinct_size":17,"ref":"refs/heads/master","head":"3953c7082e69edbc7ccbf026867e3f19c4fcf66b","before":"10f718f427d4523baa4f220023e93471c083ec1a","commits":[{"sha":"020bcd4dcae843bc16aa61d22c536b87c40ea0f8","author":{"name":"David Calavera","email":"b9b0c8e7f90ecf337f6797c4d2e0f1dd0dbc0324@gmail.com"},"message":"Try to get parent PID from current task's real parent.\n\nFallback to read the PPid from /proc if the real parent's TGID is 0.\n\nSigned-off-by: David Calavera <david.calavera@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/020bcd4dcae843bc16aa61d22c536b87c40ea0f8"},{"sha":"dee18fe96e79932e9e86a44871ceaae7f1d2f6bc","author":{"name":"David Calavera","email":"b9b0c8e7f90ecf337f6797c4d2e0f1dd0dbc0324@gmail.com"},"message":"Update get_ppid comment.\n\nSigned-off-by: David Calavera <david.calavera@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/dee18fe96e79932e9e86a44871ceaae7f1d2f6bc"},{"sha":"4fae49757d8b2e5ec4d35748469021e7e2998eae","author":{"name":"David Calavera","email":"b9b0c8e7f90ecf337f6797c4d2e0f1dd0dbc0324@gmail.com"},"message":"Add inline comment about issue in 4.13 kernels.\n\nSigned-off-by: David Calavera <david.calavera@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/4fae49757d8b2e5ec4d35748469021e7e2998eae"},{"sha":"c64f4872cd5a9aacd08434a87d7907d662ce1ac2","author":{"name":"Andreas Gerstmayr","email":"b15c342f1de186996bcca5e1a23cd684d2fadb32@gerstmayr.me"},"message":"tcptop: fix display of received bytes, reduce syscalls (fixes #1871)\n\nthe keys variable was a reference to ipv4_recv_bytes, and after merging\nthe keys of ipv4_send_bytes the original ipv4_recv_bytes BPF table also\ncontained all keys, therefore the `if k in ipv4_recv_bytes` check a few\nlines below always evaluates to true\n\nwith this commit all BPF tables are copied to userspace as dicts once\n(to reduce the number of syscalls) and the keys are merged in a new dict","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/c64f4872cd5a9aacd08434a87d7907d662ce1ac2"},{"sha":"d46f4f4063d74a0d0e664c23250ef9c7348cfea0","author":{"name":"David Calavera","email":"b9b0c8e7f90ecf337f6797c4d2e0f1dd0dbc0324@gmail.com"},"message":"Update preconditions for execsnoop.\n\nbpf_get_current_task is only available in 4.8 and above.\n\nSigned-off-by: David Calavera <david.calavera@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/d46f4f4063d74a0d0e664c23250ef9c7348cfea0"},{"sha":"2f64bf0b6f62dbbb0de85643ab82644db9f47037","author":{"name":"Brendan Gregg","email":"2afad4024f7b407ff800ec8aa0aa40d9b4b4d251@gmail.com"},"message":"Merge pull request #1873 from andihit/tcptop-improvements\n\ntcptop: fix display of received bytes, reduce syscalls (fixes #1871)","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/2f64bf0b6f62dbbb0de85643ab82644db9f47037"},{"sha":"5965fdc248490aefc51d6573f5331db248a0d680","author":{"name":"Brendan Gregg","email":"2afad4024f7b407ff800ec8aa0aa40d9b4b4d251@gmail.com"},"message":"Merge pull request #1885 from calavera/execsnoop_real_parent\n\n[tools/execsnoop] Try to get parent PID from current task's real parent.","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/5965fdc248490aefc51d6573f5331db248a0d680"},{"sha":"e36f9e16ed284c638315d1d332637039b3fa660c","author":{"name":"Nikita V. Shirokov","email":"1e71328f994677a148404968ec30435ab1dda7fb@tehnerd.com"},"message":"[profile.py]: adding support to collect profile only from specified CPU (#1891)\n\n* [profile.py]: adding support to collect profile only from specified CPU\r\n\r\nSummary:\r\nsometime it is usefull to collect stack only from single cpu\r\nfor example you have single core saturated while others dont and you\r\nwant to know whats going on there. in this diff i'm adding this ability\r\n(network related code could be example of when single core is saturated\r\nas usually you have 1 to 1 mappng between rx queue and cpu)\r\n\r\nexample of generated code w/ CPU specified:\r\n\r\n./tools/profile.py -C 14 2 --ebpf\r\nSampling at 49 Hertz of all threads by user + kernel stack for 2 secs.\r\n\r\nstruct key_t {\r\n    u32 pid;\r\n    u64 kernel_ip;\r\n    u64 kernel_ret_ip;\r\n    int user_stack_id;\r\n    int kernel_stack_id;\r\n    char name[TASK_COMM_LEN];\r\n};\r\nBPF_HASH(counts, struct key_t);\r\nBPF_STACK_TRACE(stack_traces, 16384);\r\n\r\n// This code gets a bit complex. Probably not suitable for casual hacking.\r\n\r\nint do_perf_event(struct bpf_perf_event_data *ctx) {\r\n\r\n    if (bpf_get_smp_processor_id() != 14)\r\n        return 0;\r\n\r\n    u32 pid = bpf_get_current_pid_tgid() >> 32;\r\n...\r\n\r\nand w/o\r\n\r\n./tools/profile.py  2 --ebpf\r\nSampling at 49 Hertz of all threads by user + kernel stack for 2 secs.\r\n\r\nstruct key_t {\r\n    u32 pid;\r\n    u64 kernel_ip;\r\n    u64 kernel_ret_ip;\r\n    int user_stack_id;\r\n    int kernel_stack_id;\r\n    char name[TASK_COMM_LEN];\r\n};\r\nBPF_HASH(counts, struct key_t);\r\nBPF_STACK_TRACE(stack_traces, 16384);\r\n\r\n// This code gets a bit complex. Probably not suitable for casual hacking.\r\n\r\nint do_perf_event(struct bpf_perf_event_data *ctx) {\r\n\r\n    u32 pid = bpf_get_current_pid_tgid() >> 32;\r\n    if (!(1))\r\n        return 0;\r\n...\r\n\r\n* addressing comments\r\n\r\n* adding change in man","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/e36f9e16ed284c638315d1d332637039b3fa660c"},{"sha":"4e4c9e01836e65c71c16a521936550911282c636","author":{"name":"jeromemarchand","email":"29d1dec0acea6d253db39b50ac2dfc45ad579faf@users.noreply.github.com"},"message":"ucalls: use replace error handler (#1888)\n\nPrevents the following error when tracing a java program that contains\r\nnon-ascii method name:\r\n\r\nTraceback (most recent call last):\r\n  File \"/usr/share/bcc/tools/lib/ucalls\", line 305, in <module>\r\n    data = get_data()   # [(function, (num calls, latency in ns))]\r\n  File \"/usr/share/bcc/tools/lib/ucalls\", line 266, in get_data\r\n    bpf[\"counts\"].items()))\r\n  File \"/usr/share/bcc/tools/lib/ucalls\", line 264, in <lambda>\r\n    kv[0].method.decode(),\r\nUnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 11: ordinal not in range(128)\r\n\r\nSigned-off-by: Jerome Marchand <jmarchan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/4e4c9e01836e65c71c16a521936550911282c636"},{"sha":"3d9b687dce246a54686bc385e28d190b6d640af0","author":{"name":"ChaosData","email":"54cdeeea94b704cef79816ef63c5fdfcd37cfa05@gmail.com"},"message":"examples/http_filter: Add pointer offset accounting for variable ip header len (#1868)\n\nThis fix adds additional accounting logic to the http_filter examples (\"simple\"\r\nand \"complete\") that make sure to shift the pointer for the IP body/payload to\r\nthe correct offset before accessing TCP header fields. This is done by taking\r\ninto account the IP header length field. Previously, the IP header length field\r\nwas used, but it was done later in processing, after TCP header values were\r\nextracted using the size of the BCC `proto.h` `struct ip_t` a static offset.\r\n\r\nPrior to this, it was possible to evade HTTP detection by injecting IP options\r\ndata into the IP header that would spoof parts of the TCP header and shift the\r\nreal one down, as done in the scapy snippet below:\r\n\r\n```Python\r\nIP(\r\n  dst=target[0],\r\n  options=struct.pack(\">BBHHHB\",130,11,8080,0,0,0),\r\n)/TCP(\r\n  ...\r\n)\r\n```","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/3d9b687dce246a54686bc385e28d190b6d640af0"},{"sha":"5148fcec9eb93d29949b04ccdfe9b6e6edc6362d","author":{"name":"Brendan Gregg","email":"2afad4024f7b407ff800ec8aa0aa40d9b4b4d251@gmail.com"},"message":"add usdt calls to libbcc (#1890)\n\nadd usdt calls to libbcc static library","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/5148fcec9eb93d29949b04ccdfe9b6e6edc6362d"},{"sha":"e8001c394155afff8b9b57666fc4ef3899b90a30","author":{"name":"Brenden Blanco","email":"8e41c261aa8ddb01230a40c21c26a049c1f6d041@gmail.com"},"message":"Fedora 28 support (#1820)\n\n* tools: use printb for more python3 compat\r\n\r\nSwitch to printb in killsnoop and wakeuptime\r\n\r\n* tests: use subproceess sleep to trigger test\r\n\r\nIn some python implementations, time.sleep uses select instead of\r\nnanosleep and hence won't trigger the bpf kprobe.\r\n\r\n* tools: remove explicit python3 shebang\r\n\r\nUse an ambiguous python invocation in the shebang line. Instead, rely on\r\npackaging stage to mangle the line to specify a python version.\r\n\r\n* cmake: add ENABLE_LLVM_SHARED option\r\n\r\nThis adds an option to specify that only the dynamic libraries should be\r\nused to link bcc. This is most likely to be used in systems that don't\r\nbuild/provide the llvm-static and clang-static package options\r\n(fedora-based).\r\n\r\n* rpm: enable llvm_shared and python3 build options\r\n\r\nEnable rpm packaging with two new features:\r\n - shared-only packaging (no static linking)\r\n - python3\r\nTo enable these build features (off by default), run:\r\n RPM_WITH_OPTS=\"--with llvm_shared --with python3\" ./scripts/build-rpm.sh\r\n\r\n* rpm: protect python3-bcc package declaration\r\n\r\nDon't define python3-bcc if --with python3 isn't explicitly specified.\r\n\r\n* specs: only build python3 if requested\r\n\r\n* man: compress man pages\r\n\r\n* specs: enable python3 by default in fc28+/rh8+\r\n\r\n- Enable llvm_shared and python3 --with options by default in new fedora\r\n- Fix string quoting\r\n- Update spec changelog","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/e8001c394155afff8b9b57666fc4ef3899b90a30"},{"sha":"13a877ae6537ce1e1ec8fd27b59319bb585ec6a5","author":{"name":"Brenden Blanco","email":"8e41c261aa8ddb01230a40c21c26a049c1f6d041@gmail.com"},"message":"Prepare debian changelog for v0.6.1 tag","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/13a877ae6537ce1e1ec8fd27b59319bb585ec6a5"},{"sha":"492a2bf35aaf1d7a5a445b85b75b1721a3a6a3cd","author":{"name":"Eyal Birger","email":"795a5dda0defe3b6cf4023da30695907d9e4cdcf@gmail.com"},"message":"table: remove NotImplementedError on LpmTrie __delitem__ calls (#1892)\n\nBPF_MAP_TYPE_LPM_TRIE supports element deletion since kernel commit\r\ne454cf595853 (\"bpf: Implement map_delete_elem for BPF_MAP_TYPE_LPM_TRIE\")\r\nwhich is available in 4.15 kernels onwards.\r\n\r\nSigned-off-by: Eyal Birger <eyal.birger@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/492a2bf35aaf1d7a5a445b85b75b1721a3a6a3cd"},{"sha":"bfecc243fc8e822417836dd76a9b4028a5d8c2c9","author":{"name":"Joel","email":"4d60a67c06f64f7da11cc7e4a924336c2efa9ab5@gmail.com"},"message":"clang: loader: Allow user to override kernel version (#1895)\n\nBCC currently requires exactly matching headers. Sometimes this is quite\r\ninconvenient especially if the kernel version is only very slightly\r\ndifferent such as updates in a stable kernel. This patch gives the user\r\nthe flexibility to override the the LINUX_VERSION_CODE provided in the\r\nlinux kernel headers, so that the eBPF program may load. We also print a\r\nmessage when this is done, so that the user is warned about the override\r\nhappening and that results may be unpredictable.\r\n\r\nAlso updated the docs.\r\n\r\nSigned-off-by: Joel Fernandes <joel@joelfernandes.org>","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/bfecc243fc8e822417836dd76a9b4028a5d8c2c9"},{"sha":"230c9c00cf31aff6a35c56a919d62fc46b1305e9","author":{"name":"Javier Honduvilla Coto","email":"9b8ad47cc1eeabf4bbf09ee980834f422cd08fee@gmail.com"},"message":"Allow arbitrary hashtable increments. Fixes #1742 (#1897)\n\n* Allow arbitrary hashtable increments. Fixes #1742\r\n\r\nRight now incrementing some datastructure's values like maps or histograms can\r\nbe done with some boilerplate[1] or with `increment` which increments a value\r\nby 1.\r\n\r\nThis patch allows a second optional parameter to use as the increment.\r\n\r\n- [1]:\r\n```\r\nu64 zero = 0, *val;\r\nval = map.lookup_or_init(&key, &zero);\r\n(*val) += inc;\r\n```\r\n\r\nNotes:\r\n- Some lines in the documentation where changed because of trailing spaces\r\ndeletion\r\n- The test is quite simple right now\r\n- Will update the tools to use `increment` in another PR\r\n\r\n* CR changes","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/230c9c00cf31aff6a35c56a919d62fc46b1305e9"},{"sha":"3953c7082e69edbc7ccbf026867e3f19c4fcf66b","author":{"name":"Nikita V. Shirokov","email":"1e71328f994677a148404968ec30435ab1dda7fb@tehnerd.com"},"message":"[trace.py]: allow to use STRCMP helper with binary values (#1900)\n\n* [trace.py]: allow to use STRCMP helper with binary values\r\n\r\nSummary:\r\nsometimes in probe you want to compare char* w/ some predefined value\r\nwhich is not a string. e.g. setsockopt syscall has signature like this:\r\nsys_setsockopt(int fd, int level, int optname, char* optval, int optlen)\r\nand if you want to catch where/who is setting up specific value you are\r\nforced to compare optval against some predefined array. it's not\r\npossible today w/ trace.py and in this diff i'm adding such ability\r\n\r\nTest Plan:\r\nas example: we want to catch setsockopt when someone is setting up\r\nIP_TOS equal to 108\r\ntrace.py 'sys_setsockopt(int fd, int level, int optname, char* optval,\r\nint optlen)(level==0 && optname == 1 && STRCMP(\"{0x6C,0x00, 0x00,\r\n0x00}\", optval))' -U -M 1 --bin_cmp -v\r\n\r\nwithout this new modifier:\r\nstatic inline bool streq_0(char const *ignored, uintptr_t str) {\r\n        char needle[] = \"{0x6C,0x00, 0x00, 0x00}\";\r\n        char haystack[sizeof(needle)];\r\n        bpf_probe_read(&haystack, sizeof(haystack), (void *)str);\r\n        for (int i = 0; i < sizeof(needle) - 1; ++i) {\r\n                if (needle[i] != haystack[i]) {\r\n                        return false;\r\n                }\r\n        }\r\n        return true;\r\n}\r\n\r\n// see needle is qouted above\r\n\r\nwith:\r\n\r\ntatic inline bool streq_0(char const *ignored, uintptr_t str) {\r\n        char needle[] = {0x6C,0x00, 0x00, 0x00};\r\n        char haystack[sizeof(needle)];\r\n        bpf_probe_read(&haystack, sizeof(haystack), (void *)str);\r\n        for (int i = 0; i < sizeof(needle) - 1; ++i) {\r\n                if (needle[i] != haystack[i]) {\r\n                        return false;\r\n                }\r\n        }\r\n        return true;\r\n}\r\n\r\n...\r\nPID     TID     COMM            FUNC             -\r\n1855611 1863183 worker          sys_setsockopt   found\r\n\r\n* adding example of --bin_cmp flag usage","distinct":true,"url":"https://api.github.com/repos/tekumara/bcc/commits/3953c7082e69edbc7ccbf026867e3f19c4fcf66b"}]}
{"actor":{"display_login":"tekumara"}}