<div dir="ltr">Hi Yuanfang, I used the apt-get install llvm-8 to get the llvm library, and I'm pretty sure this library(or libraries) is not the latest version, so is that ok I share a not up-to-date reproducer?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 20, 2019 at 9:40 AM Yafei Liu <<a href="mailto:yfliu@mobvoi.com">yfliu@mobvoi.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">HI Stefan, I'm new to llvm JIT,  I <b>think </b>I used the ORC JIT, because I use the library orcjit in CmakeList, and the namespace of JIT is llvm::orc, any change I got MCJIT be mistake? </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 20, 2019 at 12:51 AM <<a href="mailto:Yuanfang.Chen@sony.com" target="_blank">Yuanfang.Chen@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_-7634445533139684973gmail-m_2229912266706442065WordSection1">
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black">Hello Yafei,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black">Could you open a bug report with the reproducer? This may expose an issue that shares the same root cause with PR35547 which gets a little bit tricky to reproduce.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black">-Yuanfang<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:black"><u></u> <u></u></span></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>>
<b>On Behalf Of </b>Yafei Liu via llvm-dev<br>
<b>Sent:</b> Thursday, September 19, 2019 5:03 AM<br>
<b>To:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> [llvm-dev] "corrupted size vs. prev_size" when calling ExecutionSession::lookup()<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Hi, I wrote a compiler that generate IR code and run it on the JIT, and there randomly crashed due to "corrupted size vs. prev_size" depends on the IR code generated from the source code.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Here's how I created the JIT:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<blockquote style="margin-left:30pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">llvm::InitializeNativeTarget();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::InitializeNativeTargetAsmPrinter();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::InitializeNativeTargetAsmParser();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  // create jit<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::orc::ExecutionSession ES;<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::orc::RTDyldObjectLinkingLayer ObjectLayer(ES,<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">                                                  []() { return std::make_unique<llvm::SectionMemoryManager>(); });<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  auto JTMB = llvm::orc::JITTargetMachineBuilder::detectHost();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  auto DL = JTMB->getDefaultDataLayoutForTarget();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::orc::IRCompileLayer CompileLayer(ES, ObjectLayer, llvm::orc::ConcurrentIRCompiler(std::move(*JTMB)));<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::orc::MangleAndInterner Mangle(ES, *DL);<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  ES.getMainJITDylib().setGenerator(<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">      llvm::cantFail(llvm::orc::DynamicLibrarySearchGenerator::GetForCurrentProcess(*DL)));<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">// ... large part to generate IR code<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">.<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  if (llvm::verifyModule(*AST::getModule(), &llvm::errs())) {<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">    return 0;<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  } else {<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">    std::cout << "Verified success\n";<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  }<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  // run the generated IR code<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  llvm::cantFail(CompileLayer.add(ES.getMainJITDylib(),<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">                                  llvm::orc::ThreadSafeModule(std::move(AST::takeModule()),<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">                                                              AST::takeContext())));<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  auto symbol = llvm::cantFail(ES.lookup({&ES.getMainJITDylib()}, Mangle("main")));<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  int (*entry)() = (decltype(entry)) symbol.getAddress();<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">  std::cout << entry() << std::endl;<u></u><u></u></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt">and the "corrupted size vs. prev_size" will happen if the IR code is this:<u></u><u></u></p>
</div>
<blockquote style="margin-left:30pt;margin-right:0in">
<div>
<p class="MsoNormal">; ModuleID = 'top'<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">source_filename = "top"<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">@0 = global [3 x i32] [i32 1, i32 2, i32 3]<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">define i32 @main() {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  %1 = alloca i32<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  store i32 0, i32* %1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  br label %2<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">; <label>:2:                                      ; preds = %0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  %3 = load i32, i32* %1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  ret i32 %3<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">}<u></u><u></u></p>
</div>
</blockquote>
<p class="MsoNormal">I put this IR code to lli, and it works fine.<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">So any idea why I get "corrupted size vs. prev_size" when calling calling ExecutionSession::lookup()?<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>
</blockquote></div>