<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hello,</div><div><br></div><div>I was using clang-tidy on a whole git repository (<a href="https://github.com/facebook/bpfilter" target="_blank">https://github.com/facebook/bpfilter</a>). here's the first time i encountered the crash:<br>```<br>┌──(user㉿ThisHost)-[~/Clones/bpfilter]<br>└─$ find . -name "*.c" | xargs clang-tidy | tee tidy.c <br>LLVM ERROR: Cannot chdir into "/home/user/Clones/bpfilter/build/src/libbpfilter"!<br>PLEASE submit a bug report to <a href="https://github.com/llvm/llvm-project/issues/" target="_blank">https://github.com/llvm/llvm-project/issues/</a> and include the crash backtrace.<br>Stack dump:<br>0. Program arguments: clang-tidy ./src/libbpfilter/logger.c ./src/libbpfilter/version.c ./src/libbpfilter/list.c ./src/libbpfilter/request.c ./src/libbpfilter/pack.c ./src/libbpfilter/flavor.c ./src/libbpfilter/if.c ./src/libbpfilter/hook.c ./src/libbpfilter/bpf.c ./src/libbpfilter/matcher.c ./src/libbpfilter/ns.c ./src/libbpfilter/nft.c ./src/libbpfilter/rule.c ./src/libbpfilter/front.c ./src/libbpfilter/set.c ./src/libbpfilter/verdict.c ./src/libbpfilter/response.c ./src/libbpfilter/cli.c ./src/libbpfilter/btf.c ./src/libbpfilter/helper.c ./src/libbpfilter/io.c ./src/libbpfilter/counter.c ./src/libbpfilter/dynbuf.c ./src/libbpfilter/chain.c ./src/libbpfilter/generic.c ./src/libbpfilter/dump.c ./src/libbpfilter/ipt.c ./src/bpfilter/cgen/prog/link.c ./src/bpfilter/cgen/prog/map.c ./src/bpfilter/cgen/jmp.c ./src/bpfilter/cgen/program.c ./src/bpfilter/cgen/swich.c ./src/bpfilter/cgen/cgroup.c ./src/bpfilter/cgen/cgen.c ./src/bpfilter/cgen/tc.c ./src/bpfilter/cgen/printer.c ./src/bpfilter/cgen/nf.c ./src/bpfilter/cgen/matcher/ip4.c ./src/bpfilter/cgen/matcher/ip6.c ./src/bpfilter/cgen/matcher/meta.c ./src/bpfilter/cgen/matcher/icmp.c ./src/bpfilter/cgen/matcher/set.c ./src/bpfilter/cgen/matcher/udp.c ./src/bpfilter/cgen/matcher/tcp.c ./src/bpfilter/cgen/fixup.c ./src/bpfilter/cgen/elfstub.c ./src/bpfilter/cgen/xdp.c ./src/bpfilter/cgen/stub.c ./src/bpfilter/cgen/dump.c ./src/bpfilter/opts.c ./src/bpfilter/ctx.c ./src/bpfilter/main.c ./src/bpfilter/xlate/ipt/dump.c ./src/bpfilter/xlate/ipt/ipt.c ./src/bpfilter/xlate/front.c ./src/bpfilter/xlate/nft/nfmsg.c ./src/bpfilter/xlate/nft/nft.c ./src/bpfilter/xlate/nft/nfgroup.c ./src/bpfilter/xlate/cli.c ./src/bpfilter/bpf/update_counters.bpf.c ./src/bpfilter/bpf/parse_ipv6_nh.bpf.c ./src/bpfilter/bpf/log.bpf.c ./src/bpfilter/bpf/parse_ipv6_eh.bpf.c ./src/bfcli/opts.c ./src/bfcli/print.c ./src/bfcli/ruleset.c ./src/bfcli/main.c ./src/bfcli/helper.c ./src/bfcli/chain.c ./src/external/mpack.c ./src/external/disasm.c ./tests/unit/mock.c ./tests/unit/libbpfilter/list.c ./tests/unit/libbpfilter/flavor.c ./tests/unit/libbpfilter/hook.c ./tests/unit/libbpfilter/matcher.c ./tests/unit/libbpfilter/rule.c ./tests/unit/libbpfilter/front.c ./tests/unit/libbpfilter/set.c ./tests/unit/libbpfilter/verdict.c ./tests/unit/libbpfilter/btf.c ./tests/unit/libbpfilter/helper.c ./tests/unit/libbpfilter/chain.c ./tests/unit/fake.c ./tests/unit/main.c ./tests/unit/bpfilter/cgen/prog/map.c ./tests/unit/bpfilter/cgen/jmp.c ./tests/unit/bpfilter/cgen/program.c ./tests/unit/bpfilter/cgen/swich.c ./tests/unit/bpfilter/cgen/cgen.c ./tests/unit/bpfilter/cgen/printer.c ./tests/unit/bpfilter/opts.c ./tests/unit/bpfilter/ctx.c ./tests/unit/bpfilter/xlate/nft/nfmsg.c ./tests/unit/bpfilter/xlate/nft/nft.c ./tests/unit/bpfilter/xlate/nft/nfgroup.c ./tests/harness/process.c ./tests/harness/mock.c ./tests/harness/prog.c ./tests/harness/daemon.c ./tests/harness/filters.c ./tests/harness/test.c ./tests/e2e/opts.c ./tests/e2e/setuserns.c ./tests/e2e/main.c ./tests/e2e/e2e.c ./tests/pedantic/pedantic.c<br> #0 0x00007f31df0b06ba llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb06ba)<br> #1 0x00007f31df0ae264 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeae264)<br> #2 0x00007f31df0b0d7b (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb0d7b)<br> #3 0x00007f31ddc49df0 (/lib/x86_64-linux-gnu/libc.so.6+0x3fdf0)<br> #4 0x00007f31ddc9e95c (/lib/x86_64-linux-gnu/libc.so.6+0x9495c)<br> #5 0x00007f31ddc49cc2 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3fcc2)<br> #6 0x00007f31ddc324ac abort (/lib/x86_64-linux-gnu/libc.so.6+0x284ac)<br> #7 0x00007f31df002e78 llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e78)<br> #8 0x00007f31e8f4c969 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2f4c969)<br> #9 0x000055698c34c94e clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) (/usr/lib/llvm-19/bin/clang-tidy+0x8e694e)<br>#10 0x000055698bcb9740 clang::tidy::clangTidyMain(int, char const**) (/usr/lib/llvm-19/bin/clang-tidy+0x253740)<br>#11 0x00007f31ddc33ca8 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca8)<br>#12 0x00007f31ddc33d65 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29d65)<br>#13 0x000055698bcb4ad1 _start (/usr/lib/llvm-19/bin/clang-tidy+0x24ead1)<br>xargs: clang-tidy: terminated by signal 6<br>```<br>note that clang-tidy is trying to chdir into /home/user/Clones/bpfilter/build/src/libbpfilter while i removed the /home/user/Clones/bpfilter/build/ directory some minutes before this event. clang-tidy was probably given the file path /home/user/Clones/bpfilter/src/libbpfilter which exists. <br><br>I confirmed my guess when clang-tidy crashed on a similar file that also exists.</div><div>```<br>┌──(user㉿ThisHost)-[~/Clones/bpfilter]<br>└─$ clang-tidy /home/user/Clones/bpfilter/src/bpfilter/ctx.c<br>LLVM ERROR: Cannot chdir into "/home/user/Clones/bpfilter/build/src/bpfilter"! # this directory doesn't exist (removed some minutes ago)<br>PLEASE submit a bug report to <a href="https://github.com/llvm/llvm-project/issues/" target="_blank">https://github.com/llvm/llvm-project/issues/</a> and include the crash backtrace.<br>Stack dump:<br>0. Program arguments: clang-tidy /home/user/Clones/bpfilter/src/bpfilter/ctx.c<br> #0 0x00007f58684b06ba llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb06ba)<br> #1 0x00007f58684ae264 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeae264)<br> #2 0x00007f58684b0d7b (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb0d7b)<br> #3 0x00007f5867049df0 (/lib/x86_64-linux-gnu/libc.so.6+0x3fdf0)<br> #4 0x00007f586709e95c (/lib/x86_64-linux-gnu/libc.so.6+0x9495c)<br> #5 0x00007f5867049cc2 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3fcc2)<br> #6 0x00007f58670324ac abort (/lib/x86_64-linux-gnu/libc.so.6+0x284ac)<br> #7 0x00007f5868402e78 llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e78)<br> #8 0x00007f587234c969 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2f4c969)<br> #9 0x000055a69fade94e clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) (/usr/lib/llvm-19/bin/clang-tidy+0x8e694e)<br>#10 0x000055a69f44b740 clang::tidy::clangTidyMain(int, char const**) (/usr/lib/llvm-19/bin/clang-tidy+0x253740)<br>#11 0x00007f5867033ca8 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca8)<br>#12 0x00007f5867033d65 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29d65)<br>#13 0x000055a69f446ad1 _start (/usr/lib/llvm-19/bin/clang-tidy+0x24ead1)<br>zsh: IOT instruction clang-tidy /home/user/Clones/bpfilter/src/bpfilter/ctx.c<br>```<br><br></div><div>Thanks,</div><div>Ali</div></div>
</div>
</div>