[llvm] [Target] Use range-based for loops (NFC) (PR #146198)
Qinkun Bao via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 28 11:25:38 PDT 2025
qinkunbao wrote:
Looks like to be UAF introduced a time long ago.
```
==> /usr/local/google/home/qinkun/scratch_dir/sanitizer_logs/report.llc.2462976 <==
=================================================================
==llc==2462976==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c19a3819d70 at pc 0x55ebaa9cf4dc bp 0x7fff213df830 sp 0x7fff213df828
READ of size 8 at 0x7c19a3819d70 thread T0
#0 0x55ebaa9cf4db in (anonymous namespace)::ARMConstantIslands::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:479:23
#1 0x55ebae201af2 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:10
#2 0x55ebaf15a9e2 in llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1401:27
#3 0x55ebaf1713ee in llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1447:16
#4 0x55ebaf15c3ec in runOnModule /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1516:27
#5 0x55ebaf15c3ec in llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:534:44
#6 0x55eba8c1ba1c in compileModule(char**, llvm::LLVMContext&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:753:8
#7 0x55eba8c1609f in main /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:400:22
#8 0x7fe9a4433ca7 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#9 0x7fe9a4433d64 in __libc_start_main csu/../csu/libc-start.c:360:3
#10 0x55eba8b241a0 in _start (/usr/local/google/home/qinkun/scratch_dir/llvm_build_asan_ubsan/bin/llc+0xbc731a0)
0x7c19a3819d70 is located 16 bytes inside of 32-byte region [0x7c19a3819d60,0x7c19a3819d80)
freed by thread T0 here:
#0 0x55eba8c0b3a2 in operator delete(void*, unsigned long) /usr/local/google/home/qinkun/scratch_dir/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:155:3
#1 0x55ebaa9e3199 in __libcpp_operator_delete<(anonymous namespace)::ARMConstantIslands::ImmBranch *, unsigned long> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__new/allocate.h:46:3
#2 0x55ebaa9e3199 in __libcpp_deallocate<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__new/allocate.h:86:12
#3 0x55ebaa9e3199 in deallocate /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__memory/allocator.h:120:7
#4 0x55ebaa9e3199 in deallocate /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__memory/allocator_traits.h:289:9
#5 0x55ebaa9e3199 in ~__split_buffer /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__split_buffer:342:5
#6 0x55ebaa9e3199 in __emplace_back_slow_path<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:1134:1
#7 0x55ebaa9e3199 in emplace_back<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:1150:13
#8 0x55ebaa9e3199 in std::__1::vector<(anonymous namespace)::ARMConstantIslands::ImmBranch, std::__1::allocator<(anonymous namespace)::ARMConstantIslands::ImmBranch>>::push_back[abi:nn210000]((anonymous namespace)::ARMConstantIslands::ImmBranch&&) /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:457:90
#9 0x55ebaa9c884a in fixupConditionalBr /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:1809:15
#10 0x55ebaa9c884a in fixupImmediateBr /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:1694:10
#11 0x55ebaa9c884a in (anonymous namespace)::ARMConstantIslands::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:480:19
#12 0x55ebae201af2 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:10
#13 0x55ebaf15a9e2 in llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1401:27
#14 0x55ebaf1713ee in llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1447:16
#15 0x55ebaf15c3ec in runOnModule /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1516:27
#16 0x55ebaf15c3ec in llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:534:44
#17 0x55eba8c1ba1c in compileModule(char**, llvm::LLVMContext&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:753:8
#18 0x55eba8c1609f in main /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:400:22
#19 0x7fe9a4433ca7 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
previously allocated by thread T0 here:
#0 0x55eba8c0a73d in operator new(unsigned long) /usr/local/google/home/qinkun/scratch_dir/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:86:3
#1 0x55ebaa9e2f32 in __libcpp_operator_new<unsigned long> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__new/allocate.h:37:10
#2 0x55ebaa9e2f32 in __libcpp_allocate<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__new/allocate.h:64:28
#3 0x55ebaa9e2f32 in allocate /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__memory/allocator.h:105:14
#4 0x55ebaa9e2f32 in __allocate_at_least<std::__1::allocator<(anonymous namespace)::ARMConstantIslands::ImmBranch> > /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__memory/allocate_at_least.h:41:19
#5 0x55ebaa9e2f32 in __split_buffer /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__split_buffer:330:25
#6 0x55ebaa9e2f32 in __emplace_back_slow_path<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:1128:47
#7 0x55ebaa9e2f32 in emplace_back<(anonymous namespace)::ARMConstantIslands::ImmBranch> /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:1150:13
#8 0x55ebaa9e2f32 in std::__1::vector<(anonymous namespace)::ARMConstantIslands::ImmBranch, std::__1::allocator<(anonymous namespace)::ARMConstantIslands::ImmBranch>>::push_back[abi:nn210000]((anonymous namespace)::ARMConstantIslands::ImmBranch&&) /usr/local/google/home/qinkun/scratch_dir/libcxx_install_asan_ubsan/include/c++/v1/__vector/vector.h:457:90
#9 0x55ebaa9c4dac in initializeFunctionInfo /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:823:21
#10 0x55ebaa9c4dac in (anonymous namespace)::ARMConstantIslands::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:446:3
#11 0x55ebae201af2 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:10
#12 0x55ebaf15a9e2 in llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1401:27
#13 0x55ebaf1713ee in llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1447:16
#14 0x55ebaf15c3ec in runOnModule /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1516:27
#15 0x55ebaf15c3ec in llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:534:44
#16 0x55eba8c1ba1c in compileModule(char**, llvm::LLVMContext&) /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:753:8
#17 0x55eba8c1609f in main /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/tools/llc/llc.cpp:400:22
#18 0x7fe9a4433ca7 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
SUMMARY: AddressSanitizer: heap-use-after-free /usr/local/google/home/qinkun/scratch_dir/llvm-project/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp:479:23 in (anonymous namespace)::ARMConstantIslands::runOnMachineFunction(llvm::MachineFunction&)
Shadow bytes around the buggy address:
0x7c19a3819a80: fa fa 00 00 07 fa fa fa 00 00 07 fa fa fa 00 00
0x7c19a3819b00: 00 fa fa fa 00 00 05 fa fa fa 00 00 06 fa fa fa
0x7c19a3819b80: 00 00 06 fa fa fa 00 00 06 fa fa fa 00 00 05 fa
0x7c19a3819c00: fa fa 00 00 05 fa fa fa 00 00 06 fa fa fa 00 00
0x7c19a3819c80: 06 fa fa fa 00 00 00 03 fa fa fd fd fd fa fa fa
=>0x7c19a3819d00: fd fd fd fa fa fa 00 00 00 00 fa fa fd fd[fd]fd
0x7c19a3819d80: fa fa 00 00 00 00 fa fa 00 00 00 fa fa fa fa fa
0x7c19a3819e00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7c19a3819e80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7c19a3819f00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7c19a3819f80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
```
https://github.com/llvm/llvm-project/pull/146198
More information about the llvm-commits
mailing list