clang-tidy 19.1.7 crash while trying to chdir to non existing directory
Ali Ghaffarian
alighaffarian9 at gmail.com
Mon Sep 15 05:30:00 BST 2025
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-llvm-team/attachments/20250915/eaad4d79/attachment.htm>
More information about the Pkg-llvm-team
mailing list