{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":146842101,"defaultBranch":"master","name":"bpftrace","ownerLogin":"bpftrace","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-08-31T04:34:44.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/157605399?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716275700.0","currentOid":""},"activityList":{"items":[{"before":"ccc6a9bae04deb62b35e450c93afb77de6bf156a","after":"d44a6bfbc357b63d630ec2c185efb0afb1a88256","ref":"refs/heads/master","pushedAt":"2024-05-26T15:11:18.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"danobi","name":"Daniel Xu","path":"/danobi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/824615?s=80&v=4"},"commit":{"message":"Codegen: Don't emit lifetime.end for variables used as map keys\n\nPreviously a lifetime.end was always inserted for expressions used as\nmap keys. This is not correct if the expression is a variable which is\nused again later in the program.\n\n$blah should not be marked as dead after line 4, it should persist at\nleast until after line 5:\n 1 BEGIN\n 2 {\n 3 $blah = \"abc\";\n 4 @x[$blah] = 1;\n 5 @y[$blah] = 1;\n 6 }","shortMessageHtmlLink":"Codegen: Don't emit lifetime.end for variables used as map keys"}},{"before":"fc21380cc7f276138d475de78a8ac6737ab8cf91","after":"ccc6a9bae04deb62b35e450c93afb77de6bf156a","ref":"refs/heads/master","pushedAt":"2024-05-26T15:06:19.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"danobi","name":"Daniel Xu","path":"/danobi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/824615?s=80&v=4"},"commit":{"message":"aot: Allow running aot binaries directly without calling runtime shim\n\nCurrently, even though we make a copy of the runtime shim and then\nembed the necessary metadata + bytecode into the binary, you still need\nto pass that binary as an argument to the runtime shim in order to run\nit (i.e. you need to do 'bpftrace-aotrt '). Since the binary\ncan fully function on its own, we don't need to do this anymore.\n\nThis commit makes the executable just look inside itself for the\nmetadata and bytecode, skipping the need to call bpftrace-aotrt. (i.e.\nyou can now run the binary with just ./.)","shortMessageHtmlLink":"aot: Allow running aot binaries directly without calling runtime shim"}},{"before":"c3169049b6cf96f6994a5e437cb14bafdb05e4bf","after":"fc21380cc7f276138d475de78a8ac6737ab8cf91","ref":"refs/heads/master","pushedAt":"2024-05-24T08:02:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"CMake: Re-generate codegen_includes.cpp when test files are added or removed\n\n- CONFIGURE_DEPENDS triggers re-generation of the list of source files\n as necessary\n- Pass list of source files through to the sub command so we only have a\n single glob to deal with\n- Correctly set up the custom command's OUTPUT parameter so that\n codegen_includes.cpp is re-generated before it is compiled into\n bpftrace_test","shortMessageHtmlLink":"CMake: Re-generate codegen_includes.cpp when test files are added or …"}},{"before":"faff4d87aa01acb5b6fc250181447948abd348c5","after":"c3169049b6cf96f6994a5e437cb14bafdb05e4bf","ref":"refs/heads/master","pushedAt":"2024-05-23T14:01:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jordalgo","name":"Jordan Rome","path":"/jordalgo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1537292?s=80&v=4"},"commit":{"message":"Remove LOG(FATAL) (#3164)\n\nReplace these with either LOG(BUG),\r\nLOG(ERROR) and exit(1) in main.cpp, or\r\n`throw FatalUserException`.\r\n\r\nThis is to avoid calling `abort` for user\r\nerrors and removes the confusion between\r\n`LOG(ERROR)` and `LOG(FATAL)`.\r\n\r\nIssue: https://github.com/bpftrace/bpftrace/issues/3163\r\n\r\nCo-authored-by: Jordan Rome ","shortMessageHtmlLink":"Remove LOG(FATAL) (#3164)"}},{"before":"4c8b262aed6399a04126d2f5199d0d588924e6d2","after":"faff4d87aa01acb5b6fc250181447948abd348c5","ref":"refs/heads/master","pushedAt":"2024-05-23T07:13:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"Refactor BPF load retry loop: Add logging and add: no BTF, no func_infos\n\nAlso handle the case where EM_BPF may not be defined on older systems.\n\nCo-authored-by: Viktor Malik \nSigned-off-by: Bernhard Kaindl ","shortMessageHtmlLink":"Refactor BPF load retry loop: Add logging and add: no BTF, no func_infos"}},{"before":"7041eaa912b0bf417f5a31ec4107eced31f58178","after":"093855092c5fe2c4099759da2ce85afb3187c049","ref":"refs/heads/release/0.20.x","pushedAt":"2024-05-21T07:06:56.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"v0.20.4 release\n\nFix CVE-2024-2313 by removing unpacking kernel headers or looking in tmp","shortMessageHtmlLink":"v0.20.4 release"}},{"before":"67629c1927f411758fe4da546eb57840d972b6e9","after":"4c8b262aed6399a04126d2f5199d0d588924e6d2","ref":"refs/heads/master","pushedAt":"2024-05-21T07:05:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"ClangParser: fix builtin includes\n\nCommit 14cb69defa added the \"/bpftrace/include\" prefix to headers\ngenerated by bpftrace (__btf_generated_header.h, clang_workarounds.h),\nhowever, commit bc73244963 (\"Don't unpack kernel headers or look in tmp\n(#3156)\") broke the latter when moving code around in main.cpp.\n\nReintroduce the prefix.","shortMessageHtmlLink":"ClangParser: fix builtin includes"}},{"before":"6d260edbec86a6ef58a118fdf0c936f90d79a84c","after":"67629c1927f411758fe4da546eb57840d972b6e9","ref":"refs/heads/master","pushedAt":"2024-05-20T11:16:09.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"Fix error in dereferencing kernel double pointers\n\nBPF verifier can detect safety of pointer accesses for BTF-based probes\n(k(ret)func, iter) and therefore it is not necessary to use\nbpf_probe_read_kernel inside such probes. This feature was enabled in\nbpftrace by commit c2c3ab96 (\"Support identifying btf type\").\n\nUnfortunately, the verifier is not able to track BTF information for\ndereferences and array accesses on double pointers so, e.g. the\nfollowing script fails to load:\n\n # bpftrace -e 'kfunc:__module_get { print(args.module->trace_events[0]->flags);' } -v\n INFO: node count: 13\n Attaching 1 probe...\n\n Error log:\n reg type unsupported for arg#0 function kfunc_vmlinux___module_get#22\n 0: R1=ctx(off=0,imm=0) R10=fp0\n 0: (79) r1 = *(u64 *)(r1 +0)\n func '__module_get' arg0 has btf_id 250 type STRUCT 'module'\n 1: R1_w=ptr_module(off=0,imm=0)\n 1: (79) r1 = *(u64 *)(r1 +1128) ; R1_w=scalar()\n 2: (79) r1 = *(u64 *)(r1 +0)\n R1 invalid mem access 'scalar'\n processed 3 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0\n\n ERROR: Error loading program: kfunc:vmlinux:__module_get\n\nA similar error happens when dereferencing the double pointer with `*`\n\n # bpftrace -e 'kfunc:__module_get { print((*args.module->trace_events)->flags);' } -v\n\nAn analogous program fails to load even when written using libbpf.\n\nWe need to use bpf_probe_read_kernel for such cases so do not propagate\nthe SizedType::is_btftype flag when observing a dereference or array\naccess of a double pointer in semantic analyser.","shortMessageHtmlLink":"Fix error in dereferencing kernel double pointers"}},{"before":"668174cc0ca0b68285b433b9b0f0e4523bcc933c","after":"6d260edbec86a6ef58a118fdf0c936f90d79a84c","ref":"refs/heads/master","pushedAt":"2024-05-18T19:02:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danobi","name":"Daniel Xu","path":"/danobi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/824615?s=80&v=4"},"commit":{"message":"man: Clarify ++/-- operators can lose updates\n\nWe already call this out in count() docs. Let's do it for ++/-- as well.","shortMessageHtmlLink":"man: Clarify ++/-- operators can lose updates"}},{"before":"0d06553e98833fa014b514bd620701623ea65607","after":"668174cc0ca0b68285b433b9b0f0e4523bcc933c","ref":"refs/heads/master","pushedAt":"2024-05-18T17:53:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jordalgo","name":"Jordan Rome","path":"/jordalgo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1537292?s=80&v=4"},"commit":{"message":"Fix build on aarch64 (#3184)\n\nThis fixes this error: \"impossible constraint in ‘asm’\"\r\nby removing the raw asm assembly call in inline_function.c.\r\n\r\nCo-authored-by: Jordan Rome ","shortMessageHtmlLink":"Fix build on aarch64 (#3184)"}},{"before":"e1e20b1dd5f62399ac85f16e5b4f0ba8afec5bc0","after":"0d06553e98833fa014b514bd620701623ea65607","ref":"refs/heads/master","pushedAt":"2024-05-18T13:45:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jordalgo","name":"Jordan Rome","path":"/jordalgo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1537292?s=80&v=4"},"commit":{"message":"config: Specify the type of str_trunc_trailer explicitly (#3183)\n\nBuilt bpftrace with LLVM/clang 16 and ran some random scripts,\r\nI got the following error:\r\n\r\n $ sudo bpftrace -e '...'\r\n Attaching 1 probe...\r\n terminate called after throwing an instance of 'std::runtime_error'\r\n what(): Type mismatch for config key\r\n [1] 1297304 abort sudo ./bpftrace -e\r\n\r\nThe coredump reveals a failed type deduction:\r\n\r\n (gdb) p config_map_\r\n ...\r\n [std::variant [index 2] = {bpftrace::ConfigKeyString::str_trunc_trailer}] = {source = bpftrace::ConfigSource::default_,\r\n value = std::variant [index 0] = {true}},\r\n ...\r\n\r\nLet's specify the type of str_trunc_trailer to avoid such error.\r\n\r\nSigned-off-by: Hengqi Chen ","shortMessageHtmlLink":"config: Specify the type of str_trunc_trailer explicitly (#3183)"}},{"before":"deee77a8804fee18374acf301dab096a75751fb1","after":"e1e20b1dd5f62399ac85f16e5b4f0ba8afec5bc0","ref":"refs/heads/master","pushedAt":"2024-05-17T16:17:03.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"viktormalik","name":"Viktor Malík","path":"/viktormalik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7603704?s=80&v=4"},"commit":{"message":"Runtime tests: fix DWARF ustack test\n\nThe \"dwarf.uprobe inlined function - ustack\" runtime test seems to\nexpect ustacks of the following form:\n\n main+21\n 0x7fdff76fb14a\n\nHowever, on my local setup, I'm getting:\n\n main+21\n 0x7fdff76fb14a\n 0x7fdff76fb20b\n _start+37\n\nIMHO, the most important part is to check that the \"main+21\" call occurs\nat the top of the stack and everything below is not that important.\n\nUpdate the test accordingly.","shortMessageHtmlLink":"Runtime tests: fix DWARF ustack test"}},{"before":"47a5a30ca2bc490d291fef9c0d7711b757171c43","after":"deee77a8804fee18374acf301dab096a75751fb1","ref":"refs/heads/master","pushedAt":"2024-05-17T12:13:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ajor","name":"Alastair Robertson","path":"/ajor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007446?s=80&v=4"},"commit":{"message":"CollectNodes: Recurse into children of the target type\n\nThe test case `CollectNodes.nested` would have failed before this patch,\nwith `visitor.nodes()` returning an empty list.","shortMessageHtmlLink":"CollectNodes: Recurse into children of the target type"}},{"before":"d592be8fe65d7b49aa183eb1a05625df1743ed0c","after":"47a5a30ca2bc490d291fef9c0d7711b757171c43","ref":"refs/heads/master","pushedAt":"2024-05-17T09:01:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ajor","name":"Alastair Robertson","path":"/ajor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007446?s=80&v=4"},"commit":{"message":"Codegen: Memset(0) memory of variables if the data to be written is not full-size\n\n BEGIN\n {\n $x = \"xxxxx\";\n $x = \"a\";\n }\n\nThe value stored in $x at the end of the above script should be\n\"a\\0\\0\\0\\0\\0\". Previously $x would have held \"a\\0xxx\" as the second\nassignment did not overwrite all the data from the first.","shortMessageHtmlLink":"Codegen: Memset(0) memory of variables if the data to be written is n…"}},{"before":"d45aa54634731579efb514020be54c98fe5ce14d","after":"d592be8fe65d7b49aa183eb1a05625df1743ed0c","ref":"refs/heads/master","pushedAt":"2024-05-16T13:40:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ajor","name":"Alastair Robertson","path":"/ajor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007446?s=80&v=4"},"commit":{"message":"Fix intptrcast runtime tests\n\nExplicitly put numbers into an array on the stack instead of relying on\narchitecture-specific calling conventions for stack-passed parameters.\n\nThis removes the dependency on the stack pointer's value (which changed\nas of #3095) and makes the tests architecture independent.","shortMessageHtmlLink":"Fix intptrcast runtime tests"}},{"before":"bc73244963f206814ae45ec78ebe52cd389f6381","after":"d45aa54634731579efb514020be54c98fe5ce14d","ref":"refs/heads/master","pushedAt":"2024-05-15T18:27:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jordalgo","name":"Jordan Rome","path":"/jordalgo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1537292?s=80&v=4"},"commit":{"message":"Align detect_helper with log message change (#3114)\n\n\"unknown func \" log message may change in future to \"program of this\r\ntype cannot use helper \". Corresponding kernel change:\r\n https://lore.kernel.org/all/20240325152210.377548-1-yatsenko@meta.com/","shortMessageHtmlLink":"Align detect_helper with log message change (#3114)"}},{"before":"742f0cf180904db85b111cea5b01fbe14e6a4c09","after":"bc73244963f206814ae45ec78ebe52cd389f6381","ref":"refs/heads/master","pushedAt":"2024-05-15T16:21:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jordalgo","name":"Jordan Rome","path":"/jordalgo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1537292?s=80&v=4"},"commit":{"message":"Don't unpack kernel headers or look in tmp (#3156)\n\nLooking in shared writeable locations for kernel\r\nheaders is inherently risky even bpftrace does\r\nthe unpacking. Remove this functionality and let\r\nthe user specify the path to these headers if\r\nwe can't find them in known locations.\r\n\r\nReferences:\r\nhttps://github.com/bpftrace/bpftrace/pull/3033\r\nhttps://github.com/bpftrace/bpftrace/pull/3154\r\n\r\nCo-authored-by: Jordan Rome ","shortMessageHtmlLink":"Don't unpack kernel headers or look in tmp (#3156)"}},{"before":"6a1f3f0444cb17f5bb50fbc3623a1026d7d4bf37","after":"742f0cf180904db85b111cea5b01fbe14e6a4c09","ref":"refs/heads/master","pushedAt":"2024-05-14T13:49:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ajor","name":"Alastair Robertson","path":"/ajor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007446?s=80&v=4"},"commit":{"message":"Probe inlined function call\n\nUse the DebugInfo (DWARF) to locate every inlined instances of a\nuprobe function and attach to all of them.\nThis behaviour is controled by the `probe_inline` config key.\nNote that using this config disables access to the arguments, because we\ncannot guarantee inlined function instances follow the System V ABI.\n\nAlso attach to uprobe functions after their prologue, once the stack\nframe has been set, which makes collecting stack traces more reliable.\nThis behaviour is the new default for all binaries with DWARF.","shortMessageHtmlLink":"Probe inlined function call"}},{"before":"5d861ee046c62d5e73906c8f13caa7ad06d521a9","after":"6a1f3f0444cb17f5bb50fbc3623a1026d7d4bf37","ref":"refs/heads/master","pushedAt":"2024-05-13T16:41:26.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"danobi","name":"Daniel Xu","path":"/danobi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/824615?s=80&v=4"},"commit":{"message":"Runtime tests: fix creating tests in CMake build\n\nDuring CMake, all runtime test files are copied into the CMake build\ndirectory using add_custom_command which issues 'cmake -E copy ...'.\nFor some reason, the last file in the tests/runtime directory\n(tests/runtime/watchpoint) is never copied which causes two issues:\n- the watchpoint tests are never run in CI,\n- even if the local setup already has tests/runtime/watchpoint in the\n build directory (it seems to have been working in the past), it is\n never updated.\n\nI'm not sure if this is caused by our change or a CMake update, however,\nour approach is IMHO not correct as it makes the runtime_tests target\ndepend on the runtime tests files from the source directory. Changing it\nto depend on the (newly copied) files from the build directory\neliminates the above issue.","shortMessageHtmlLink":"Runtime tests: fix creating tests in CMake build"}},{"before":"14cb69defaaf047f63c9c5fa21be27cd446f9315","after":"5d861ee046c62d5e73906c8f13caa7ad06d521a9","ref":"refs/heads/master","pushedAt":"2024-05-13T11:22:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ajor","name":"Alastair Robertson","path":"/ajor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1007446?s=80&v=4"},"commit":{"message":"Add optional support for sending systemd readiness notifications (#3158)\n\nWhen ENABLE_SYSTEMD is enabled, we'll link against libsystemd and\r\nsend readiness notifications using sd_notify() as documented in\r\nhttps://www.freedesktop.org/software/systemd/man/latest/sd_notify.html.\r\n\r\nThese will only be sent if the NOTIFY_$SOCKET environment variable\r\nis set to a unix socket where systemd expects to receive readiness\r\nnotifications.\r\n\r\nThis allows running bpftrace in a systemd service which will only\r\nbe considered started once bpftrace has finished allocation its probes.\r\nThis allows starting bpftrace from scripts and ensuring that its probes\r\nare registered before continuing.\r\n\r\nFor example, currently one has to do something like this:\r\n\r\n\"\"\"\r\nbpftrace