[PATCH] D137156: [llvm-debuginfo-analyzer] Fix memory leak reported by sanitizers.

Carlos Alberto Enciso via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 1 09:55:47 PDT 2022


CarlosAlbertoEnciso added a comment.

In D137156#3899106 <https://reviews.llvm.org/D137156#3899106>, @jryans wrote:

> Thanks, this looks reasonable to me! 🙂
>
> Were you able to reproduce the failure locally?

First of all, thanks very much for the review.

Building with sanitizers require extra setup and stages.
It was relatively fast to have a very basic memory tracking (new/delete) to find the places where the memory was allocated and reproduce the failure locally.

Log from @vitalybuka:

  ==1211325==ERROR: LeakSanitizer: detected memory leaks
  
  Direct leak of 1440 byte(s) in 12 object(s) allocated from:
      #0 0x560d26e1e8cd in operator new(unsigned long) /b/sanitizer-x86_64-linux-fast/build/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:95:3
      #1 0x560d275ff029 in llvm::logicalview::LVBinaryReader::createInstructions(llvm::logicalview::LVScope*, unsigned long, std::__1::pair<unsigned long, unsigned long> const&) /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp:424:31
      #2 0x560d27603fa6 in llvm::logicalview::LVBinaryReader::createInstructions() /b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp:498:21

Log from the memory tracking:

  ERROR: Unallocated 12 objects from:
  
      1: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      2: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      3: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      4: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      5: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      6: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      7: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      8: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
      9: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
     10: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
     11: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
     12: 'X:\diva-root\llvm-project\llvm\lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485
  
  SUMMARY: Allocated 122, Deleted 110
  ERROR: Detected memory leaks
  
  UNREACHABLE executed at X:\diva-root\llvm-project\llvm\include\llvm/DebugInfo/LogicalView/Core/LVSupport.h:84!
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
  Exception Code: 0x80000003
   #0 0x00007ff6a5fc7d7c HandleAbort X:\diva-root\llvm-project\llvm\lib\Support\Windows\Signals.inc:414:0
   #1 0x00007ffd991cbc31 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6bc31)
   #2 0x00007ffd991cd889 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x6d889)
   #3 0x00007ff6a5e7566a llvm::llvm_unreachable_internal(char const *, char const *, unsigned int) X:\diva-root\llvm-project\llvm\lib\Support\ErrorHandling.cpp:218:0
   #4 0x00007ff6a559f249 llvm::logicalview::LVAllocations::dump(void) X:\diva-root\llvm-project\llvm\include\llvm\DebugInfo\LogicalView\Core\LVSupport.h:86:0
   #5 0x00007ff6a5596e44 llvm::logicalview::LVAllocations::~LVAllocations(void) X:\diva-root\llvm-project\llvm\include\llvm\DebugInfo\LogicalView\Core\LVSupport.h:51:0
   #6 0x00007ff6a7e78662 `dynamic atexit destructor for '`public: static class logicalview::LVAllocations::getInstance & __cdecl llvm::logicalview::LVAllocations::getInstance(void)'::`2'::Instance''(void) (e:\projects\diva-root\builds\win\debug\Debug\bin\llvm-debuginfo-analyzer.exe+0x3568662)
   #7 0x00007ffd991d4957 (C:\WINDOWS\SYSTEM32\ucrtbased.dll+0x74957)
   #8 0x00007ffd991d4365 (C:\WINDOWS\SYSTEM32\ucrtb

Just as historical note: `diva` was the tool original name.

The `lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp:424:31` is the same line as `lib\DebugInfo\LogicalView\Readers\LVBinaryReader.cpp':485`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D137156



More information about the llvm-commits mailing list