<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85578>85578</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wasm inline asm: use after free of `Signature`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TimNN
</td>
</tr>
</table>
<pre>
Compiling
```ll
target triple = "wasm32-unknown-unknown"
module asm "foo:"
module asm " .functype foo () -> ()"
module asm " end_function"
```
with `llc -filetype=obj foo.ll` crashes.
AddressSanitizer report:
```
==80752==ERROR: AddressSanitizer: heap-use-after-free on address 0x000107808e48 at pc 0x00011b160eb4 bp 0x00016b019e60 sp 0x00016b019e58
READ of size 4 at 0x000107808e48 thread T0
#0 0x11b160eb0 in llvm::SmallVectorImpl<llvm::wasm::ValType>::operator=(llvm::SmallVectorImpl<llvm::wasm::ValType> const&) SmallVector.h:1024
#1 0x11b17c38c in (anonymous namespace)::WasmObjectWriter::registerFunctionType(llvm::MCSymbolWasm const&) WasmObjectWriter.cpp:1281
#2 0x11b164a40 in (anonymous namespace)::WasmObjectWriter::writeOneObject(llvm::MCAssembler&, llvm::MCAsmLayout const&, (anonymous namespace)::WasmObjectWriter::DwoMode) WasmObjectWriter.cpp:1478
#3 0x11b15fe4c in (anonymous namespace)::WasmObjectWriter::writeObject(llvm::MCAssembler&, llvm::MCAsmLayout const&) WasmObjectWriter.cpp:1452
#4 0x11b029610 in llvm::MCAssembler::Finish() MCAssembler.cpp:954
#5 0x11b107ab4 in llvm::MCStreamer::finish(llvm::SMLoc) MCStreamer.cpp:1021
#6 0x118021fa8 in llvm::AsmPrinter::doFinalization(llvm::Module&) AsmPrinter.cpp:2564
#7 0x11653ec78 in llvm::FPPassManager::doFinalization(llvm::Module&) LegacyPassManager.cpp:1509
#8 0x11652c368 in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
#9 0x104deaca8 in main llc.cpp:408
#10 0x185fb10dc (<unknown module>)
0x000107808e48 is located 8 bytes inside of 64-byte region [0x000107808e40,0x000107808e80)
freed by thread T0 here:
#0 0x105705bcc in wrap__ZdlPv+0x74 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x61bcc)
#1 0x11dc717b4 in std::__1::vector<std::__1::unique_ptr<llvm::wasm::WasmSignature, std::__1::default_delete<llvm::wasm::WasmSignature>>, std::__1::allocator<std::__1::unique_ptr<llvm::wasm::WasmSignature, std::__1::default_delete<llvm::wasm::WasmSignature>>>>::__destroy_vector::operator()[abi:v160006]() vector:446
#2 0x11ddb639c in (anonymous namespace)::WebAssemblyAsmParser::~WebAssemblyAsmParser() WebAssemblyAsmParser.cpp:195
#3 0x11ddb64b4 in (anonymous namespace)::WebAssemblyAsmParser::~WebAssemblyAsmParser() WebAssemblyAsmParser.cpp:195
#4 0x118053a24 in llvm::AsmPrinter::emitInlineAsm(llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::MCTargetOptions const&, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const AsmPrinterInlineAsm.cpp:131
#5 0x117ffce88 in llvm::AsmPrinter::doInitialization(llvm::Module&) AsmPrinter.cpp:541
#6 0x11653eae4 in llvm::FPPassManager::doInitialization(llvm::Module&) LegacyPassManager.cpp:1500
#7 0x11652be3c in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
#8 0x104deaca8 in main llc.cpp:408
#9 0x185fb10dc (<unknown module>)
previously allocated by thread T0 here:
#0 0x10570578c in wrap__Znwm+0x74 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x6178c)
#1 0x11ddbb39c in (anonymous namespace)::WebAssemblyAsmParser::parseDirective(llvm::AsmToken) WebAssemblyAsmParser.cpp:890
#2 0x11b1deeb8 in (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) AsmParser.cpp:2010
#3 0x11b1ca118 in (anonymous namespace)::AsmParser::Run(bool, bool) AsmParser.cpp:1003
#4 0x1180539c0 in llvm::AsmPrinter::emitInlineAsm(llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::MCTargetOptions const&, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const AsmPrinterInlineAsm.cpp:128
#5 0x117ffce88 in llvm::AsmPrinter::doInitialization(llvm::Module&) AsmPrinter.cpp:541
#6 0x11653eae4 in llvm::FPPassManager::doInitialization(llvm::Module&) LegacyPassManager.cpp:1500
#7 0x11652be3c in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
#8 0x104deaca8 in main llc.cpp:408
#9 0x185fb10dc (<unknown module>)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWE1v4zgS_TX0hbBBUd8HH9x2DDTQH0ESzAB7MSipZHOaIrUklcR92N--ICUnktvJpDML9GJ3gCCiSVbVqxL5HkVmDN9LgCWKP6B4M2OdPSi9vOPNly-zQlXH5Vo1LRdc7hHZILIa_iek_xOi77BM78Fiq3krAKNwgxGlD8w0IZ138ptUD_L0RJSOXTWq6gRgZhpnUiuFwtXTlOkgXtSdLO2xBVwrhRHNEM3xHIVXQ_slO5DVzptyNQp_ymGM5oHbA_Z5lXhecwEuGgo3qvjDxVwIgRKCS83MAcxibLmqKg3G3DLJLf8OGmtolbYum0uFG36GGxRuMpLGtG9e3dx8vUHhCp-7c30HYO28MzBntQU9rzUAVhKzfiomj4SQgKQZySDKMLO4LYfOoAgSAkWEi3boSQoS5JAQbKY9cdYju7labbCqseHfAUfO2Zl7e9DAKnw3ZIIxxoiGBJPHUzSCucRC3DeuBuHqtmFC_AalVfpj0woUrp_H3ErpW78xcedLftX_Vi1oZpV25aHZ-73hUkljEU3ckhkZLw4oXAWERpM0giGNtAyz0qWBaMakksdGdQZL1oBpWQluyfk4vzPTfC3-gNL-rrn1bwuFKw17bizo7bD0PJRxEp_Xt8emUMKZTwCe-1uUbetw0iyY4KSnckcsIu_G-eDaXyX0I2cIV8ZAUwjQHtoaT8eaT-yoOjsCv34fhs2D-qwqeC35KM0myYdD8nEN0ftfUp_8fyLzV5DHdII86pETmifB2S4Zh_UdWy65OQxcNxodfOfxdOXGQ1FIyoro3PWt1cCak-f65Hm0qz5_UmUf6DT3lAOh06WX-EAZoUHNsmmglWmuNZdPJa7Ulksm-HfWE_C4yp6oh_I92w1BaZxMs0t90CQOoUzPgm6vr5kxn5lk-5-N-wn2rDyOzE85xySfhM-G8LQMk7Pwwvvo2yNPPTd5MujegSCOpgsndwBIVAEr-6I3zKMoh_kROW0RR2KejLO4LgJSldhrZLgeVBj3Eul4luZjhTqjeW6wUCWzUOEMF0cLBnNpeAVOHJJo7rqwIzolMYo_TKwJoutxR0aeYjntqnBxfJYRfAANT2o5lhMSpyQuSr_FHzRrd7t_VOL6HtEP5DGNXFqCF6Vgcr_TdsEMkztlHnfVUbKGl4vqKHiBwhXTTRKBt0qCoiyfsEw4vyrTIO13jrFV_6p2u6Bv3HvJQOH6x6FO8n92sGutfkGKHDfc8r1kttPg6ORHHxXUrBN2V4EAC2_y42Ty6rI3JvyL-2_EO_z1ziowVqvj7lTcier3x7r4Ayu4q3-QEEISFG8GPnyyiaLkgjBWVZGE-Zu0AYqBWY-OhZg2JxL518WhPvyloRN35PEFsXKAon51_WpA0cDfccho9Dp_Q8PtRym4hJVppnphNZf7G6jP9fG2K_pPgo-yVpPTwXjWnZ_ytXX0bF6atfmiKjgNrqaDz6hOwDecCS_leW8yEpWnyaeKhMEF6UzruoTsTxXtozuXv0fT4uiSjjpJYxC9QdLeGvgVUSMXNZUWEJa_QtSyN4vaSAR_VtZaDfdcdUYc8UCMP6c_aTbWH_nQ_CX5SbOX5Kcqir_KWK1rb7iG0vL76QfHyjR36hvIP-GKLCcXPzMqgCJ7A7ZLgG4ts9CAtJ6qXjW_nsx3DHL5BN7HuIWGrZkQBSu_eYLoN904H0oCcvHToWRB8I6EbvyyL5QSDlX__DFqQEj4AuXmJfn_pFw6Op_-zbf_m3x7uuKaVcuwysOczWAZpAFJCY2TcHZYpilQVkVhSEgJcZwHRRYGcRgRViWUxsGMLymhEQmDNMhJTsNFFbCY1kFa5DELYhqhiEDDuFi4UiyU3s-4MR0sszhOs5lgBQjjrzQplfCA_SCiFMWbmV46m3nR7Q2KiODGmmcvllsBS38dw_3Sxf05FncGsL91w_2tW41RQp6PtQmZdVosD9a2xt9fbhHd7rk9dMWiVA2iW__O-se81aq_bth6YAbRrQf-7wAAAP__XGSEeQ">