<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/102121>102121</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash when compiling ebpf program
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
amitschendel
</td>
</tr>
</table>
<pre>
```c
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
SEC("xdp")
int trigger_crash(struct xdp_md *ctx)
{
unsigned int key = 0;
for (int i = 0; i < 100; i++) {
__sync_fetch_and_add(&key, 0);
}
return XDP_PASS;
}
char _license[] SEC("license") = "GPL";
```
```
clang -O2 -target bpf -c -g ntp.bpf.c -o program.o
ntp.bpf.c:96:9: error: unsupported atomic operation, please use 64 bit version
96 | __sync_fetch_and_add(&key, 0);
| ^
fatal error: error in backend: Cannot select: 0x603f94fd5ce0: i64,ch = AtomicLoadOr<(load store seq_cst (s32) on %ir.2)> 0x603f94f21380, FrameIndex:i64<0>, Constant:i64<0>, ntp.bpf.c:96:9
0x603f94fd55e0: i64 = FrameIndex<0>
0x603f94fd5c70: i64 = Constant<0>
In function: trigger_crash
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang -O2 -target bpf -c -g ntp.bpf.c -o program.o
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'ntp.bpf.c'.
4. Running pass 'BPF DAG->DAG Pattern Instruction Selection' on function '@trigger_crash'
#0 0x00007826985a667f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda667f)
#1 0x00007826985a47b9 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda47b9)
#2 0x00007826984f02b3 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xcf02b3)
#3 0x00007826984f0262 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xcf0262)
#4 0x00007826985a0f30 llvm::sys::Process::Exit(int, bool) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xda0f30)
#5 0x0000603f939a5f1b (/usr/lib/llvm-18/bin/clang+0x14f1b)
#6 0x00007826984fe2dc llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xcfe2dc)
#7 0x0000782698e2f453 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x162f453)
#8 0x0000782698e2e8e6 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x162e8e6)
#9 0x000078269ab5d618 (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x335d618)
#10 0x0000782698e25c8f llvm::SelectionDAGISel::DoInstructionSelection() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x1625c8f)
#11 0x0000782698e25300 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x1625300)
#12 0x0000782698e2444e llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x162444e)
#13 0x0000782698e224a4 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x16224a4)
#14 0x0000782698982639 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0x1182639)
#15 0x00007826986f7992 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xef7992)
#16 0x00007826986fd514 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xefd514)
#17 0x00007826986f80bf llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xef80bf)
#18 0x00007826a0a17940 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1c17940)
#19 0x00007826a0da0017 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1fa0017)
#20 0x000078269f997a06 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xb97a06)
#21 0x00007826a1806bec clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2a06bec)
#22 0x00007826a1783674 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2983674)
#23 0x00007826a1882bfd clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2a82bfd)
#24 0x0000603f939a5a2e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x14a2e)
#25 0x0000603f939a2e94 (/usr/lib/llvm-18/bin/clang+0x11e94)
#26 0x00007826a1433f42 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2633f42)
#27 0x00007826984f0237 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xcf0237)
#28 0x00007826a1433807 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2633807)
#29 0x00007826a13fbae8 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x25fbae8)
#30 0x00007826a13fbd4f clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x25fbd4f)
#31 0x00007826a14181f0 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x26181f0)
#32 0x0000603f939a27ec clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0x117ec)
#33 0x0000603f939af973 main (/usr/lib/llvm-18/bin/clang+0x1e973)
#34 0x000078269702a1ca (/lib/x86_64-linux-gnu/libc.so.6+0x2a1ca)
#35 0x000078269702a28b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28b)
#36 0x0000603f9399f855 _start (/usr/lib/llvm-18/bin/clang+0xe855)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 18.1.3 (1)
Target: bpf
Thread model: posix
InstalledDir: /usr/bin
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/ntp-539709.c
clang: note: diagnostic msg: /tmp/ntp-539709.sh
clang: note: diagnostic msg:
********************
```
[artifacts.zip](https://github.com/user-attachments/files/16509326/artifacts.zip)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WltT47jy_zTmRUXKlu8PPJiEMGwxS4qw-_-_pWS5neiMI3slmQnn05-SbCeWgR2Gye5UJti6dP-61eqLFCIl23KAKye8dsLFBWnVrhZXZM-UpDvgBVQXeV28XDmR232o4y4cN3Owzzit2gKQ488rxtuDg5d5U852jn_z1pi8KbsRmx1UDQg5Hmm-1zdzBycOxoeicTB2cNq1M66QEmy7BbGhgsidgxOpREsVOhTNZl8gB2dUHY4TnPi6e0AIoZYbEQukyXyDF-T4C-Q6_mhIWQvk4EQPYMdu8zhHntu9OPjafFJkUdf_Nhv5wummBEV3G8KLDSkKI0j0DV4cPEeuRjZm6MSL04sA1QqO_n-x2qyy9fo48Dio-6Y7ItCmYhS4hG650FFjQ7PRmhHBwfh2da8bjvSGJXzzlVaEb9HlA0aXiogtKJQ3Jbqk6HKLuGpmemkpuqxRI-qtIPtZ3c079jl-lkb6y_EzBELUQj-0XLZNUwsFBSKq3jOK6gYEUazmWjVNBUQCaiWgKEA5U-gZhNSdg37SCDnxHH1e2cjMd8Le1kqiSHUCaB4Q4ygn9BvwQrfNCee1QhIqoEo3uIfI9cs0KIuQgqtbWBQ4eE53RteZEey-JsWDcHy9JFVNCiRVLQBJ-GtDpdIGJn2zPDVHDg6ZmBkT929O5LHnJ64WYinIHu54AQfHzzQvf-7q3YLnaF5zqQhXrzreWIleByP44RG-QT7m0xF6PYXG1pQT_9GEO47KllOzqn422a1mxOr-JlvfINnme6YQQXm7RQK0ZSBVo51SjXT8zMFLBy-3TO3afEbrvYOXVfU8_LlsRP0fvSR4yaRsQTp4iQjXW7tzM2oHyPA0q6kEoWCMTEAjagpSQoFk3YquWc8kUtaUEW2eouVIUsEaNev9kSL0GyrafaORmSZ3hlad_SMitu0euNKw0Wd3jzfTTgbqUptBQ4QEgYhCwAtUl6hkFXTj8Kyz5HldANoCH3aQ6fT7zseWc8a3qCFSIgfHy35F0Eo3fCWcbEE4ONYGuK-LtgI96mQ2OO4FD94heL1aokV2e-n4N4vsFq2IUiA4uuOdN9as1mbPmM1t-AxWoac7gTtx43Fvbg72XeQeXNd14wRHaRKSKIpLZNbezxw_ky-ye1gJxpVZmadueZPTIEG-b2qpBJC9gyO9xIwr4xC1g1i2UmhDYvlgTp5uzRl38HI2O3Wx_P7-z68zWc-8ZOY5-No9FAbPMcBowN4EcBDn6VuAH1u-ZltOqi-EFxUIacCcBZNmaWHCFqagdHHu_zojauhYjPxXjCJ8HkYRthgFEy27pe--bRZmf3cvNwemuniubSCv6-pMCtfcLXhhD884Sz8lYenlH2Bk3IWh6QWll1sko4lqARd0JHHnMzcmim26KDbeAk_fGQdEtY_ut8DZxKcGioU1trACLoPwDPbmRYaQxSmZcIIEopFWjm5nkd3eraEat2qfOa_3e-2TRppaL36vC3BwppV0TBJNltWrz-45lyvxIgPeki4dS0fysIi85Nc5-b4hdEqLse-5Ez2GNCl_qMdFPXLxIw9_Hj_mRQaFBdObwvRd94cw9ULfAs94cbNnapHdnhOh77oWQjxBGAQBfNAgs6q6JpLR66qm36RllMeQfdrB58Gv4Vn4_Ql-HJDgh_hFyx_4V0J3jMMA1cL_qu9sAmh8lgB2ZEgTHPnj-DtBolOgkQxvgj87as-AslCHFuqojNMUj1AvVxrokKr9y3jBoLHgRhO4RegFH4D71WSXtmX0TeeCqpFYUOMJ1MTNx56tgi2hL32ycAJ9t29Otv2PAtZ4LMDjkEZc4sVp4HaFRJ_F7Jm67orSh1Y1rU5pRt0LRra8lopRecO3jEMf70dDvgApQKyBCLp7aLSpSCs1GA3tfecPRj2Z2uYHg-4J3741ZORclGB8-wil3TxoPJsQ7JWQ0eHQ4DTljivRSvYMj1DOuVopXX-fup_LftMvWQXrF6lg3xfLUhVdT8vZXy1smslMXUo03wVTsBkKitGkAkrSVmpTQAUKfjDRv-l5vhZJ19LtXhdl2WeszBC8pE1jux1qTMmytdSytYK4rhf_HZ7OfEzB8iQIl5UpN__gbGKE2fppXnMFh8_GqndEKA3CsQjYylzKNI2JG41FWOnqOVs_2QDXsCdWIvz5hPhtqLkBYiEdJy_ES9woBzpGuhRaZUeD7ksWoK2CT2Ysb0PDxLC2sGELW5z4URzYfmDfsArEnTnkoWChG3Zg8r4w57QCnBp4Fn7f1m2C87KwnGaH9CTGc03Ja9SvxDznBsTEwLJwB9NCkWBAlHqbPWF23MmEIC_aN_pzuxjpnci0QHmuWfFh-OPCk2ArI8TTWhZDGvwcSQ9Se7Uia7UC3y-Dnz8meEfJkaFmsYtfnUr48ShYzAWRu0eg9TOIl8FtHc9oSAnVi7USw9nVRpjV0IruwKdmLc5SUmuIlgzJVGWJa3nqQrDnwUHP554ubAkvpk7kTXM6hq_aRGdSWYHrFJSPAes4YbOhh4PndS-5rl10cGMakzFSa7Bu2ChBmJJD94QcqSq9K2sx6tdDspN7NvZszPyM9pK4tq6tqOj5ZU4geVfXxmOQVx57WADLvUwm6gHvZUt_MzSbnOCcVR2hkXasDusI1qijCMqfVcdvdS7f18VvdX7PpHovLdyTqvoTqKr7tPxksQ1h2lj6E72Pqq83q39UiUVgZfW-HfwDL_FK9z3Ai9GzFbjeiFjvKf9fVOLZ4mNktGKpDU-DTzzkTEOEHGAbd5P1zmJ08FnXVe_Tf_LwZBzAYjtdOp5zD7DKNPaRBvRzdCGNfYuudXgRu5h4lPQkO2KHJNpEwaW5WL_c8rbXp9Zj1CcZHiUWzXBKEyc52mz0tI1URKjNCPiHueAkt7hEtkbSMglD1NH_KZ1AEoZHwoMtnq5luwu1sk8uEe2tsiSsggJ9Z2qH4MD0UheAYlezbiWgy2ekaiQBEBtlfj2XP_KWq7Yn3V8zI22VM3No7R0HdmWuhpE3Zd-0E0AKtK8LcxaGmlqyw3D3KRWpKigWzEA_qkCLbIvHa10tZqg41u5oL03PoOBf-Ix-K9BftmZPT9n8C3r6coOWD_f3D_939_stWt7d36zR04Npvv7jFj3erB4en45XnKu3LksTqffSuxemxwECkAnt5rb_SPIj8uOl2jcOXnLVXIZ-GrvpjP7S7OHi-ePKP9cSTH5nEV4ToVhJqJKz_7LGCRcOTv7mwruVIC6JUoTuuvtlvCxZZS67vSh0U187tqVNc7Dci-LKL7SjuoArL8Y4DbAf44vdVR5ATPwYu2XsBYBJGha5S1LshymNqU8v2BV2ceAmbuR5-v-MAuRFGeMgTUnolcQJXNgTVs30np7VYnth7uCvPBd72LuoSA6VNL8jwpjDd2R6HYydcHEhrowjyNutdAK3YlLJExnFVAVXJjlH33fA9WZvWMX4FkHelMOV-UUrqqvP_06gh_l8hf8XAAD__7Xys9I">