[llvm-bugs] [Bug 30227] New: RelativeRel is used, but not initialized for AMDGPU

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Aug 31 13:26:57 PDT 2016


https://llvm.org/bugs/show_bug.cgi?id=30227

            Bug ID: 30227
           Summary: RelativeRel is used, but not initialized for AMDGPU
           Product: lld
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: ELF
          Assignee: unassignedbugs at nondot.org
          Reporter: krasin at google.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

As of now, MemorySanitizer bots are red, because Target->RelativeRel is used
but not initialized for AMDGPU arch:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/15968

==28645==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x7b66c5 in
lld::elf::RelocationSection<llvm::object::ELFType<(llvm::support::endianness)1,
true>
>::addReloc(lld::elf::DynamicReloc<llvm::object::ELFType<(llvm::support::endianness)1,
true> > const&)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/OutputSections.cpp:357:7
    #1 0x9c38e4 in operator()
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Relocations.cpp:532:25
    #2 0x9c38e4 in
scanRelocs<llvm::object::ELFType<llvm::support::endianness::little, true>,
llvm::object::Elf_Rel_Impl<llvm::object::ELFType<llvm::support::endianness::little,
true>, true> >
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Relocations.cpp:683
    #3 0x9c38e4 in void
lld::elf::scanRelocations<llvm::object::ELFType<(llvm::support::endianness)1,
true>
>(lld::elf::InputSectionBase<llvm::object::ELFType<(llvm::support::endianness)1,
true> >&, llvm::object::ELFType<(llvm::support::endianness)1, true>::Shdr
const&)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Relocations.cpp:696
    #4 0x96157c in operator()
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/functional:1897:12
    #5 0x96157c in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::forEachRelSec(std::__1::function<void
(lld::elf::InputSectionBase<llvm::object::ELFType<(llvm::support::endianness)1,
true> >&,
llvm::object::Elf_Shdr_Impl<llvm::object::ELFType<(llvm::support::endianness)1,
true> > const&)>)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Writer.cpp:666
    #6 0x938123 in finalizeSections
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Writer.cpp:735:3
    #7 0x938123 in (anonymous
namespace)::Writer<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::run()
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Writer.cpp:260
    #8 0x93382d in void
lld::elf::writeResult<llvm::object::ELFType<(llvm::support::endianness)1, true>
>()
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Writer.cpp:228:18
    #9 0x632244 in void
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> >(llvm::opt::InputArgList&)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:645:3
    #10 0x61e3ec in lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:308:5
    #11 0x61ba32 in lld::elf::link(llvm::ArrayRef<char const*>,
llvm::raw_ostream&)
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:52:11
    #12 0x54d8ee in main
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/tools/lld/lld.cpp:106:13
    #13 0x7f96a4537f44 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x21f44)
    #14 0x4ca136 in _start
(/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/lld+0x4ca136)

SUMMARY: MemorySanitizer: use-of-uninitialized-value
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/OutputSections.cpp:357:7
in
lld::elf::RelocationSection<llvm::object::ELFType<(llvm::support::endianness)1,
true>
>::addReloc(lld::elf::DynamicReloc<llvm::object::ELFType<(llvm::support::endianness)1,
true> > const&)

The detected use was added in https://reviews.llvm.org/rL280210 but it's just
the CL that exposed the issue, not the one that created it. In fact, we have
more uses of RelativeRel in the code base, they just don't run for AMDGPU under
MemorySanitizer => they are not detected.

We should either don't use this field on AMDGPU, or initialize it to a sane
value.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160831/d6109ba2/attachment-0001.html>


More information about the llvm-bugs mailing list