clang-tidy 19.1.7 crash while trying to chdir to non existing directory

Sylvestre Ledru sylvestre at debian.org
Mon Sep 15 07:23:15 BST 2025


Hello

Please try with more recent version of clang and report an upstream bug 
if it happens again

Cheers

Sylvestre


Le 15/09/2025 à 06:30, Ali Ghaffarian a écrit :
> Hello,
>
> I was using clang-tidy on a whole git repository 
> (https://github.com/facebook/bpfilter). here's the first time i 
> encountered the crash:
> ```
> ┌──(user㉿ThisHost)-[~/Clones/bpfilter]
> └─$ find . -name "*.c" | xargs clang-tidy | tee tidy.c
> LLVM ERROR: Cannot chdir into 
> "/home/user/Clones/bpfilter/build/src/libbpfilter"!
> PLEASE submit a bug report to 
> https://github.com/llvm/llvm-project/issues/ and include the crash 
> backtrace.
> Stack dump:
> 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
>  #0 0x00007f31df0b06ba llvm::sys::PrintStackTrace(llvm::raw_ostream&, 
> int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb06ba)
>  #1 0x00007f31df0ae264 llvm::sys::RunSignalHandlers() 
> (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeae264)
>  #2 0x00007f31df0b0d7b 
> (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb0d7b)
>  #3 0x00007f31ddc49df0 (/lib/x86_64-linux-gnu/libc.so.6+0x3fdf0)
>  #4 0x00007f31ddc9e95c (/lib/x86_64-linux-gnu/libc.so.6+0x9495c)
>  #5 0x00007f31ddc49cc2 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3fcc2)
>  #6 0x00007f31ddc324ac abort (/lib/x86_64-linux-gnu/libc.so.6+0x284ac)
>  #7 0x00007f31df002e78 llvm::report_fatal_error(llvm::Twine const&, 
> bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e78)
>  #8 0x00007f31e8f4c969 
> clang::tooling::ClangTool::run(clang::tooling::ToolAction*) 
> (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2f4c969)
>  #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)
> #10 0x000055698bcb9740 clang::tidy::clangTidyMain(int, char const**) 
> (/usr/lib/llvm-19/bin/clang-tidy+0x253740)
> #11 0x00007f31ddc33ca8 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca8)
> #12 0x00007f31ddc33d65 __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x29d65)
> #13 0x000055698bcb4ad1 _start (/usr/lib/llvm-19/bin/clang-tidy+0x24ead1)
> xargs: clang-tidy: terminated by signal 6
> ```
> 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.
>
> I confirmed my guess when clang-tidy crashed on a similar file that 
> also exists.
> ```
> ┌──(user㉿ThisHost)-[~/Clones/bpfilter]
> └─$ clang-tidy /home/user/Clones/bpfilter/src/bpfilter/ctx.c
> LLVM ERROR: Cannot chdir into 
> "/home/user/Clones/bpfilter/build/src/bpfilter"!  # this directory 
> doesn't exist (removed some minutes ago)
> PLEASE submit a bug report to 
> https://github.com/llvm/llvm-project/issues/ and include the crash 
> backtrace.
> Stack dump:
> 0. Program arguments: clang-tidy 
> /home/user/Clones/bpfilter/src/bpfilter/ctx.c
>  #0 0x00007f58684b06ba llvm::sys::PrintStackTrace(llvm::raw_ostream&, 
> int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb06ba)
>  #1 0x00007f58684ae264 llvm::sys::RunSignalHandlers() 
> (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeae264)
>  #2 0x00007f58684b0d7b 
> (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb0d7b)
>  #3 0x00007f5867049df0 (/lib/x86_64-linux-gnu/libc.so.6+0x3fdf0)
>  #4 0x00007f586709e95c (/lib/x86_64-linux-gnu/libc.so.6+0x9495c)
>  #5 0x00007f5867049cc2 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3fcc2)
>  #6 0x00007f58670324ac abort (/lib/x86_64-linux-gnu/libc.so.6+0x284ac)
>  #7 0x00007f5868402e78 llvm::report_fatal_error(llvm::Twine const&, 
> bool) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xe02e78)
>  #8 0x00007f587234c969 
> clang::tooling::ClangTool::run(clang::tooling::ToolAction*) 
> (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2f4c969)
>  #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)
> #10 0x000055a69f44b740 clang::tidy::clangTidyMain(int, char const**) 
> (/usr/lib/llvm-19/bin/clang-tidy+0x253740)
> #11 0x00007f5867033ca8 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca8)
> #12 0x00007f5867033d65 __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x29d65)
> #13 0x000055a69f446ad1 _start (/usr/lib/llvm-19/bin/clang-tidy+0x24ead1)
> zsh: IOT instruction  clang-tidy 
> /home/user/Clones/bpfilter/src/bpfilter/ctx.c
> ```
>
> Thanks,
> Ali



More information about the Pkg-llvm-team mailing list