Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ASAN reports LLVMOrcLLJITLookup memory leak if LLVMOrcIRTransformLayerSetTransform is used #56953

Closed
mo-xiaoming opened this issue Aug 5, 2022 · 2 comments
Labels

Comments

@mo-xiaoming
Copy link

mo-xiaoming commented Aug 5, 2022

Here is the code that can reproduce this problem, it is modified based on OrcV2CBindingsIRTransforms.c under llvm example by reducing some irrelevant noise

#include <llvm-c/Core.h>
#include <llvm-c/Error.h>
#include <llvm-c/Initialization.h>
#include <llvm-c/LLJIT.h>
#include <llvm-c/Support.h>
#include <llvm-c/Target.h>

#include <iostream>

namespace {
LLVMOrcThreadSafeModuleRef createDemoModule() {
  LLVMOrcThreadSafeContextRef TSCtx = LLVMOrcCreateNewThreadSafeContext();
  LLVMContextRef Ctx = LLVMOrcThreadSafeContextGetContext(TSCtx);
  LLVMModuleRef M = LLVMModuleCreateWithNameInContext("demo", Ctx);
  LLVMTypeRef ParamTypes[] = {LLVMInt32Type(), LLVMInt32Type()};
  LLVMTypeRef SumFunctionType = LLVMFunctionType(LLVMInt32Type(), ParamTypes, 2, 0);
  LLVMValueRef SumFunction = LLVMAddFunction(M, "sum", SumFunctionType);
  LLVMBasicBlockRef EntryBB = LLVMAppendBasicBlock(SumFunction, "entry");
  LLVMBuilderRef Builder = LLVMCreateBuilder();
  LLVMPositionBuilderAtEnd(Builder, EntryBB);
  LLVMValueRef SumArg0 = LLVMGetParam(SumFunction, 0);
  LLVMValueRef SumArg1 = LLVMGetParam(SumFunction, 1);
  LLVMValueRef Result = LLVMBuildAdd(Builder, SumArg0, SumArg1, "result");
  LLVMBuildRet(Builder, Result);
  LLVMDisposeBuilder(Builder); // THIS IS MISSING FROM EXAMPLE FILE
  LLVMOrcThreadSafeModuleRef TSM = LLVMOrcCreateNewThreadSafeModule(M, TSCtx);
  LLVMOrcDisposeThreadSafeContext(TSCtx);
  return TSM;
}

LLVMErrorRef transform(void*, LLVMOrcThreadSafeModuleRef*, LLVMOrcMaterializationResponsibilityRef) {
  return LLVMErrorSuccess;
}

void cant_fail(LLVMErrorRef Err) {
  if (Err != LLVMErrorSuccess) {
    std::cerr << LLVMGetErrorMessage(Err) << '\n';
    exit(1);
  }
}
}

int main() {
  LLVMInitializeCore(LLVMGetGlobalPassRegistry());

  LLVMInitializeNativeTarget();
  LLVMInitializeNativeAsmPrinter();

  LLVMOrcLLJITRef J{};
  cant_fail(LLVMOrcCreateLLJIT(&J, 0));

  LLVMOrcIRTransformLayerSetTransform(LLVMOrcLLJITGetIRTransformLayer(J), transform, nullptr);

  cant_fail(LLVMOrcLLJITAddLLVMIRModule(J, LLVMOrcLLJITGetMainJITDylib(J), createDemoModule()));

  LLVMOrcJITTargetAddress SumAddr{};
  cant_fail(LLVMOrcLLJITLookup(J, &SumAddr, "sum"));

  auto Sum = reinterpret_cast<int32_t (*)(int32_t, int32_t)>(SumAddr);
  int32_t Result = Sum(1, 2);
  std::cout << "1 + 2 = " << Result;

  cant_fail(LLVMOrcDisposeLLJIT(J));

  LLVMShutdown();
}

I first noticed this problem with llvm14.0.4 from vcpkg.json, my project setting can be found at vcpkg.json. By default, I build everything with address sanitizer, with LLVMOrcIRTransformLayerSetTransform, it reports

==4161738==ERROR: LeakSanitizer: detected memory leaks                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                       
Direct leak of 24 byte(s) in 1 object(s) allocated from:                                                                                                                                                                                                                               
    #0 0x7efe946fa1c7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99                                                                                                                                                                          
    #1 0x55753c4ef882 in operator() /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp:796                                                                                                                
    #2 0x55753c4f1c06 in CallImpl<LLVMOrcIRTransformLayerSetTransform(LLVMOrcIRTransformLayerRef, LLVMOrcIRTransformLayerTransformFunction, void*)::<lambda(llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&)> > /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/
src/org-14.0.4-df58f01928.clean/llvm/include/llvm/ADT/FunctionExtras.h:222                                                                                                                                                                                                             
    #3 0x55753c68ecac in llvm::unique_function<llvm::Expected<llvm::orc::ThreadSafeModule> (llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&)>::operator()(llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&) /home/mx/repos/toolchains/vcpk
g/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/include/llvm/ADT/FunctionExtras.h:384                                                                                                                                                                                           
    #4 0x55753c68eb2c in llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f
01928.clean/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:24                                                                                                                                                                                                                       
    #5 0x55753c68ebbb in llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f
01928.clean/llvm/lib/ExecutionEngine/Orc/IRTransformLayer.cpp:25
    #6 0x55753c5e1dd1 in llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.c
lean/llvm/lib/ExecutionEngine/Orc/Layer.cpp:151
    #7 0x55753c5315d7 in llvm::orc::MaterializationTask::run() /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:1853
    #8 0x55753c5436cb in llvm::orc::ExecutionSession::runOnCurrentThread(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1667
    #9 0x55753c5678da in void llvm::detail::UniqueFunctionBase<void, std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> > >::CallImpl<void (*)(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >)>(void*, std::unique_ptr<llvm::orc::Task, std
::default_delete<llvm::orc::Task> >&) (/home/mx/repos/getting-started-llvm-c-api/build/src/getting-started-llvm-c-api+0x15428da)
    #10 0x55753c547858 in llvm::unique_function<void (std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >)>::operator()(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) (/home/mx/repos/getting-started-llvm-c-api/build/src/getting-start
ed-llvm-c-api+0x1522858)
    #11 0x55753c5435d0 in llvm::orc::ExecutionSession::dispatchTask(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/include/llvm/ExecutionEngine/Orc/Core.h:1557
    #12 0x55753c534a66 in llvm::orc::ExecutionSession::dispatchOutstandingMUs() /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:2231
    #13 0x55753c539131 in llvm::orc::ExecutionSession::OL_completeLookup(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, std::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::function<void (llvm::DenseMap<llvm::orc::
JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc:
:SymbolStringPtr, void> > > > const&)>) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:2773
    #14 0x55753c544502 in llvm::orc::InProgressFullLookupState::complete(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionE
ngine/Orc/Core.cpp:550
    #15 0x55753c5370ef in llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, llvm::Error) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm
/lib/ExecutionEngine/Orc/Core.cpp:2529
    #16 0x55753c53354d in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet
, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol> > >)>,
 std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc:
:SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> > > > const&)>) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:2069
    #17 0x55753c5337e9 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet const&, llvm::orc::Loo
kupKind, llvm::orc::SymbolState, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITD
ylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> > > > const&)>) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:2106
    #18 0x55753c533a29 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolStat
e) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/Core.cpp:2132
    #19 0x55753c5ed648 in llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::orc::SymbolStringPtr) /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp:707
    #20 0x55753c4f54d3 in llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::StringRef) (/home/mx/repos/getting-started-llvm-c-api/build/src/getting-started-llvm-c-api+0x14d04d3)
    #21 0x55753c4f5580 in llvm::orc::LLJIT::lookup(llvm::orc::JITDylib&, llvm::StringRef) (/home/mx/repos/getting-started-llvm-c-api/build/src/getting-started-llvm-c-api+0x14d0580)
    #22 0x55753c4f55f5 in llvm::orc::LLJIT::lookup(llvm::StringRef) (/home/mx/repos/getting-started-llvm-c-api/build/src/getting-started-llvm-c-api+0x14d05f5)
    #23 0x55753c4f084e in LLVMOrcLLJITLookup /home/mx/repos/toolchains/vcpkg/buildtrees/llvm/src/org-14.0.4-df58f01928.clean/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp:948
    #24 0x55753b2b4153 in foo() /home/mx/repos/getting-started-llvm-c-api/src/orcv2jit.cpp:368                                                                                                                                                                                         
    #25 0x55753b2b3bb5 in main /home/mx/repos/getting-started-llvm-c-api/src/main.cpp:8                                                                                                                                                                                                
    #26 0x7efe93addd8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58  

then I upgraded the llvm to 14.0.4 in vcpkg, but got the same error

then I build llvm14.0.6 from source by

export LLVM_VER=14.0.6
git clone --depth=1 https://github.com/llvm/llvm-project.git llvm-${LLVM_VER} -b llvmorg-${LLVM_VER} --single-branch

cmake -G Ninja -S llvm -B build -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_INSTALL_PREFIX=$PWD/install -DLLVM_USE_SPLIT_DWARF=ON -DLLVM_USE_SANITIZER="Address"
cmake --build build
cmake --install build

g++ ../the-file-at-the-beginning.cpp `./install/bin/llvm-config --cxxflags --ldflags --system-libs --libs` -fsanitize=address

I got the same error

$ ./a.out                                                                                                                            
1 + 2 = 3                 
=================================================================
==1604253==ERROR: LeakSanitizer: detected memory leaks
                                                                     
Direct leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x7f081f9cf1c7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x5653f47123f4 in llvm::Expected<llvm::orc::ThreadSafeModule> llvm::detail::UniqueFunctionBase<llvm::Expected<llvm::orc::ThreadSafeModule>, llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&>::CallImpl<LLVMOrcIRTransformLayerSetTransform::{lambda(llvm:
:orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&)#1}>(void*, llvm::orc::ThreadSafeModule&, llvm::orc::MaterializationResponsibility&) (/home/mx/repos/llvm-14.0.6/a.out+0x19ac3f4)
    #2 0x5653f4abe616 in llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) (/home/mx/repos/llvm-14.0.6/a.out+0x1d58616)
    #3 0x5653f4abe844 in llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >, llvm::orc::ThreadSafeModule) (/home/mx/repos/llvm-14.0.6/a.out+0x1d58844)
    #4 0x5653f490cda6 in llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility> >) [clone .localalias] (/home/mx/repos/llvm-14.0.6/a.out+0x1ba6da6)
    #5 0x5653f47a9e02 in llvm::orc::MaterializationTask::run() (/home/mx/repos/llvm-14.0.6/a.out+0x1a43e02)
    #6 0x5653f47ec796 in llvm::orc::ExecutionSession::runOnCurrentThread(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) (/home/mx/repos/llvm-14.0.6/a.out+0x1a86796)
    #7 0x5653f47ed77e in void llvm::detail::UniqueFunctionBase<void, std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> > >::CallImpl<void (*)(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >)>(void*, std::unique_ptr<llvm::orc::Task, std
::default_delete<llvm::orc::Task> >&) (/home/mx/repos/llvm-14.0.6/a.out+0x1a8777e)
    #8 0x5653f47f293c in llvm::orc::ExecutionSession::dispatchTask(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task> >) (/home/mx/repos/llvm-14.0.6/a.out+0x1a8c93c)
    #9 0x5653f47aaad3 in llvm::orc::ExecutionSession::dispatchOutstandingMUs() (/home/mx/repos/llvm-14.0.6/a.out+0x1a44ad3)
    #10 0x5653f47daf5f in llvm::orc::ExecutionSession::OL_completeLookup(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, std::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::function<void (llvm::DenseMap<llvm::orc::
JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc:
:SymbolStringPtr, void> > > > const&)>) [clone .localalias] (/home/mx/repos/llvm-14.0.6/a.out+0x1a74f5f)
    #11 0x5653f4829446 in llvm::orc::InProgressFullLookupState::complete(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >) (/home/mx/repos/llvm-14.0.6/a.out+0x1ac3446)
    #12 0x5653f4787594 in llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState> >, llvm::Error) [clone .localalias] (/home/mx/repos/llvm-14.0.6/a.out+0x1a21594)
    #13 0x5653f47abb73 in llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet
, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::JITEvaluatedSymbol> > >)>,
 std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc:
:SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> > > > const&)>) [clone .localalias] (/home/mx/repos/llvm-14.0.6/a.out+0x1a45b73)
    #14 0x5653f47ac8b9 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolLookupSet const&, llvm::orc::Loo
kupKind, llvm::orc::SymbolState, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> >, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITD
ylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void> > > > const&)>) (/home/mx/repos/llvm-14.0.6/a.out+0x1a468b9)
    #15 0x5653f47add37 in llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags> > > const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolStat
e) [clone .localalias] (/home/mx/repos/llvm-14.0.6/a.out+0x1a47d37)
    #16 0x5653f4929d70 in llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::orc::SymbolStringPtr) (/home/mx/repos/llvm-14.0.6/a.out+0x1bc3d70)
    #17 0x5653f471ca89 in LLVMOrcLLJITLookup (/home/mx/repos/llvm-14.0.6/a.out+0x19b6a89)
    #18 0x5653f3914e28 in main (/home/mx/repos/llvm-14.0.6/a.out+0xbaee28)
    #19 0x7f081f1b5d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
                                                                     
SUMMARY: AddressSanitizer: 24 byte(s) leaked in 1 allocation(s).

Did I do something wrong with this function call?

@llvmbot
Copy link
Collaborator

llvmbot commented Aug 5, 2022

@llvm/issue-subscribers-orcjit

@lhames
Copy link
Contributor

lhames commented Aug 5, 2022

Nice catch @mo-xiaoming!

LLVMDisposeBuilder(Builder); // THIS IS MISSING FROM EXAMPLE FILE
So it is. Fixed in 4246269.

The leak should be fixed in bc062e0.

@lhames lhames closed this as completed Aug 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants