[PATCH] D128212: [DebugInfo] Extend the InstrRef LDV to support DbgValues with many Ops

Alexander Potapenko via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 24 10:03:46 PDT 2022


glider added a comment.

Hi Stephen,

The following command line crashes for me on the attached file: `clang        -std=gnu11 --target=x86_64-linux-gnu -fno-omit-frame-pointer -fsanitize=kernel-memory -fsanitize-memory-param-retval -fsanitize-coverage=trace-pc -fsanitize-coverage=trace-cmp  -c  extents.i -w -g -O2`:

  clang: /usr/local/google/src/llvm-git-monorepo/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp:808: void TransferTracker::clobberMloc(LiveDebugValues::LocIdx, LiveDebugValues::ValueIDNum, llvm::MachineBasicBlock::iterator, bool): Assertion `LostMLocIt->second.contains(LocVarIt.second) && "Variable was using this MLoc, but does not appear in " "ActiveMLocs?"' failed.
  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: /usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang -std=gnu11 --target=x86_64-linux-gnu -fno-omit-frame-pointer -fsanitize=kernel-memory -fsanitize-memory-param-retval -fsanitize-coverage=trace-pc -fsanitize-coverage=trace-cmp -c extents.i -w -g -O2
  1.	<eof> parser at end of file
  2.	Code generation
  3.	Running pass 'Function Pass Manager' on module 'extents.i'.
  4.	Running pass 'Live DEBUG_VALUE analysis' on function '@__ext4_ext_check'
   #0 0x0000559c52bd9d61 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
   #1 0x0000559c52bd7b8c llvm::sys::CleanupOnSignal(unsigned long) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x3ce5b8c)
   #2 0x0000559c52b1a5e8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
   #3 0x00007f0cf4b52200 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
   #4 0x00007f0cf45cb8c1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
   #5 0x00007f0cf45b5546 abort ./stdlib/abort.c:81:7
   #6 0x00007f0cf45b542f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
   #7 0x00007f0cf45b542f _nl_load_domain ./intl/loadmsgcat.c:970:34
   #8 0x00007f0cf45c4242 (/lib/x86_64-linux-gnu/libc.so.6+0x31242)
   #9 0x0000559c520e110f TransferTracker::clobberMloc(LiveDebugValues::LocIdx, LiveDebugValues::ValueIDNum, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, bool) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x31ef10f)
  #10 0x0000559c520e165f TransferTracker::clobberMloc(LiveDebugValues::LocIdx, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, bool) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x31ef65f)
  #11 0x0000559c520e18bb LiveDebugValues::InstrRefBasedLDV::transferSpillOrRestoreInst(llvm::MachineInstr&) (.part.0) InstrRefBasedImpl.cpp:0:0
  #12 0x0000559c520e2185 LiveDebugValues::InstrRefBasedLDV::transferSpillOrRestoreInst(llvm::MachineInstr&) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x31f0185)
  #13 0x0000559c520f09ea LiveDebugValues::InstrRefBasedLDV::process(llvm::MachineInstr&, std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> const*, std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> const*) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x31fe9ea)
  #14 0x0000559c520f17ef LiveDebugValues::InstrRefBasedLDV::depthFirstVLocAndEmit(unsigned int, llvm::DenseMap<llvm::LexicalScope const*, llvm::DILocation const*, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::DILocation const*>> const&, llvm::DenseMap<llvm::LexicalScope const*, llvm::SmallSet<llvm::DebugVariable, 4u, std::less<llvm::DebugVariable>>, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::SmallSet<llvm::DebugVariable, 4u, std::less<llvm::DebugVariable>>>> const&, llvm::DenseMap<llvm::LexicalScope const*, llvm::SmallPtrSet<llvm::MachineBasicBlock*, 4u>, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::SmallPtrSet<llvm::MachineBasicBlock*, 4u>>>&, llvm::SmallVector<llvm::SmallVector<std::pair<llvm::DebugVariable, LiveDebugValues::DbgValue>, 8u>, 8u>&, std::unique_ptr<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> [], std::default_delete<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> []>>&, std::unique_ptr<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> [], std::default_delete<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> []>>&, llvm::SmallVectorImpl<LiveDebugValues::VLocTracker>&, llvm::MachineFunction&, llvm::DenseMap<llvm::DebugVariable, unsigned int, llvm::DenseMapInfo<llvm::DebugVariable, void>, llvm::detail::DenseMapPair<llvm::DebugVariable, unsigned int>>&, llvm::TargetPassConfig const&)::'lambda'(llvm::MachineBasicBlock&)::operator()(llvm::MachineBasicBlock&) const InstrRefBasedImpl.cpp:0:0
  #15 0x0000559c520f716d LiveDebugValues::InstrRefBasedLDV::depthFirstVLocAndEmit(unsigned int, llvm::DenseMap<llvm::LexicalScope const*, llvm::DILocation const*, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::DILocation const*>> const&, llvm::DenseMap<llvm::LexicalScope const*, llvm::SmallSet<llvm::DebugVariable, 4u, std::less<llvm::DebugVariable>>, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::SmallSet<llvm::DebugVariable, 4u, std::less<llvm::DebugVariable>>>> const&, llvm::DenseMap<llvm::LexicalScope const*, llvm::SmallPtrSet<llvm::MachineBasicBlock*, 4u>, llvm::DenseMapInfo<llvm::LexicalScope const*, void>, llvm::detail::DenseMapPair<llvm::LexicalScope const*, llvm::SmallPtrSet<llvm::MachineBasicBlock*, 4u>>>&, llvm::SmallVector<llvm::SmallVector<std::pair<llvm::DebugVariable, LiveDebugValues::DbgValue>, 8u>, 8u>&, std::unique_ptr<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> [], std::default_delete<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> []>>&, std::unique_ptr<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> [], std::default_delete<std::unique_ptr<LiveDebugValues::ValueIDNum [], std::default_delete<LiveDebugValues::ValueIDNum []>> []>>&, llvm::SmallVectorImpl<LiveDebugValues::VLocTracker>&, llvm::MachineFunction&, llvm::DenseMap<llvm::DebugVariable, unsigned int, llvm::DenseMapInfo<llvm::DebugVariable, void>, llvm::detail::DenseMapPair<llvm::DebugVariable, unsigned int>>&, llvm::TargetPassConfig const&) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x320516d)
  #16 0x0000559c520fb700 LiveDebugValues::InstrRefBasedLDV::ExtendRanges(llvm::MachineFunction&, llvm::MachineDominatorTree*, llvm::TargetPassConfig*, unsigned int, unsigned int) (/usr/local/google/src/llvm-git-monorepo/llvm_cmake_build/bin//clang+0x3209700)
  #17 0x0000559c51de7da8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0

Sorry, I haven't managed to reduce it further so far.F24254289: extents.i <https://reviews.llvm.org/F24254289>


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D128212/new/

https://reviews.llvm.org/D128212



More information about the llvm-commits mailing list