<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73191>73191</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] --buffer-deallocation causes Segmentation fault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
anonymousMCS
</td>
</tr>
</table>
<pre>
git version: 48f5855e4c48709d71d7aae4595232a3296c735e
system: Ubuntu 20.04.6 LTS (Focal Fossa)
reproduced with: ```mlir-opt --buffer-deallocation a.mlir```
a.mlir:
```
llvm.func @malloc(i64) -> !llvm.ptr
func.func @func1(%arg0: memref<15x32x15xi1>, %arg1: i1, %arg2: tensor<13x13xf16>) -> vector<13x13xi32> {
%6 = llvm.mlir.constant(24583 : i16) : i16
%31 = llvm.mlir.constant(0 : index) : i64
%32 = builtin.unrealized_conversion_cast %31 : i64 to index
%33 = llvm.mlir.constant(1 : index) : i64
%34 = builtin.unrealized_conversion_cast %33 : i64 to index
%40 = llvm.mlir.constant(5 : index) : i64
%41 = builtin.unrealized_conversion_cast %40 : i64 to index
%52 = llvm.mlir.constant(19 : index) : i64
%53 = builtin.unrealized_conversion_cast %52 : i64 to index
%58 = llvm.mlir.constant(31 : index) : i64
%alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<13x13xf16>
%59 = llvm.mlir.constant(15 : index) : i64
%60 = llvm.mlir.constant(1 : index) : i64
%61 = llvm.mul %59, %58 : i64
%62 = llvm.mul %61, %58 : i64
%63 = llvm.mlir.zero : !llvm.ptr
%64 = llvm.getelementptr %63[%62] : (!llvm.ptr, i64) -> !llvm.ptr, i1
%65 = llvm.ptrtoint %64 : !llvm.ptr to i64
%66 = llvm.call @malloc(%65) : (i64) -> !llvm.ptr
%67 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%68 = llvm.insertvalue %66, %67[0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%69 = llvm.insertvalue %66, %68[1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%70 = llvm.mlir.constant(0 : index) : i64
%71 = llvm.insertvalue %70, %69[2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%72 = llvm.insertvalue %58, %71[3, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%73 = llvm.insertvalue %58, %72[3, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%74 = llvm.insertvalue %59, %73[3, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%75 = llvm.insertvalue %61, %74[4, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%76 = llvm.insertvalue %59, %75[4, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%77 = llvm.insertvalue %60, %76[4, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%190 = llvm.extractvalue %71[2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%196 = llvm.extractvalue %77[4, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
%197 = llvm.icmp "eq" %190, %31 : i64
llvm.cond_br %197, ^bb3, ^bb13
^bb3: // pred: ^bb2
%200 = llvm.icmp "eq" %196, %33 : i64
llvm.cond_br %200, ^bb6, ^bb16
^bb6: // pred: ^bb5
%201 = memref.load %alloc_0[%41, %34] : memref<13x13xf16>
%alloc_1 = memref.alloc(%53, %32) {alignment = 64 : i64} : memref<?x?x15xi16>
linalg.map outs(%alloc_1 : memref<?x?x15xi16>)
() {
linalg.yield %6 : i16
}
llvm.unreachable
^bb13: // pred: ^bb2
llvm.unreachable
^bb16: // pred: ^bb5
llvm.unreachable
}
```
trace:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --buffer-deallocation a.mlir
#0 0x00005608e457407f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x160207f)
#1 0x00005608e45710d4 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f3fcfde2420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00005608e4a52d38 mlir::bufferization::deallocateBuffers(mlir::Operation*) (.part.0) BufferDeallocation.cpp:0:0
#4 0x00005608e4a53d10 (anonymous namespace)::BufferDeallocationPass::runOnOperation() BufferDeallocation.cpp:0:0
#5 0x00005608e7165cfe mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f3cfe)
#6 0x00005608e71661da mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f41da)
#7 0x00005608e7166bdc mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#8 0x00005608e7165335 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f3335)
#9 0x00005608e7165a9a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f3a9a)
#10 0x00005608e71661da mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f41da)
#11 0x00005608e7166a04 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f4a04)
#12 0x00005608e7157773 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#13 0x00005608e7158c44 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#14 0x00005608e7158df4 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#15 0x00005608e72580e4 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x42e60e4)
#16 0x00005608e7151657 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41df657)
#17 0x00005608e7158f41 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e6f41)
#18 0x00005608e71593a6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e73a6)
#19 0x00005608e44ab64b main (/data/bin/llvm-project/build/bin/mlir-opt+0x153964b)
#20 0x00007f3fcf8ae083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#21 0x00005608e45443de _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15d23de)
Segmentation fault (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWktv4zgS_jXMhYhB8aHHIQfnhW2ggw46vWeDkiiHOzSlIakeZ379gpRkS44fySTjmVks0OnEIqvqq6-qqCom3Fq51EJcAXYN2O0Fb91zba64rvXLqm7tw83TRV6XL1dL6eBPYaysNSBzSNOKpYwJWtA0QVmZRGXCuaAsY5hgTnAWFwlhAqBbgObd__bFOrHy0v_OW-1aiNEM0VkMv_54ggCn93XBFbyvreUAZ2NJIxpTl20hSvibdM9eBYhR92-lpLmsGwcvL_O2qoS5LAVXqi64k7WGfOY3bHaPtfZLpP-4s0epn6tZ1eoCAopWQSPAqYwpwBm8BOQOAhyFTY0znYjfvRHx3yOAU4AZN0vkMa_EyogKkJuIrQleR2wtI0DuAL6B3a7I75LR9gH2D5zQtjZejKwjsq6iOAj1KH6Kwo1WJcEBW3LdYYJeUwwBuYUBrHd5VtTaOq4dwCmmLCWwsxt7pcOPW2kSHRZH3X5divVGOKZjYRyE81YqJ_Ws1UZwJX8X5aKodZ9Qi4Jbt7EUNEBX91pHqshhHNFJHPQ9OMgxHBQdxsFO4aDRO3BQdAwHw0f4yE4BYeQdQIKpw0DSw0DIyciE0lp0nHYVMhuqLQgk11zJpV4J7cKemG6UJLdwWlfjAhnhy44QdTJi8ZFwn3QuHtdOqzo0fX2zFO6TwK8k4ui4xG5d_C5MHfa9OqG6_XS7fymcUMJz2zjTKfNvAg8DsNteSTrWg2_goUPQL0VjQ2xrqHHG1VK7DYAJupBVU6dGZ1bBlZqcwkH3QPipU7lTl-xw1OpSVBMY1pm2cIDcAJz23oz9vYHcGP4CyA2B6_CoO7n3Pc2m-ReP6kNqK4z7yVUrOjf70MYJYNdoy_mfggmOQWVvAJUCdh2dEVRypNZOvmqS6KBHCRo8ygC7xuf0CB8ExdIeVBIBdk38h3MmQELegAwPyM6aBfQwsuHwTMiA7KzRZIeLZjikEwrYNT17NOM3cMYGZGeNZnKYs6Esk3hAds5oRtnouBFrZ3gxOjKiM58UURYfQZP8NQSNY1esGggwFr8CjHv6-vBt-_ZBuHtv17pc5KbXFPayuzwnm58i0o9e3ePg1D3A97Axogwf_QIeIcIIHUU0vLm2HfwhRBihDY54iygeIYq9ir2Q2ARSNO5dVc3LUVvbdVN0OBwIHcJ3qmnt5KP9bTFjZFCI39skA3K_9l9h_BwbVVJztZyteAPr1tl-dt3AOKpimNchhHDbuG-fbbS_SKHKYSadTJoQguS2_xCCFUaS4pnnSoyCEpGDUcGTWB8Qf0NQD4gP6PZeJvhyFYfuEh6_3s2f7qBt85V0kMO8XUIjmto43_g-O9dYLxowLaV7bvNZUa8AvvdI-m-Xjan_IwoH8L20thXW4-e6hFIXqi0FdM8CFobbZ5jz4peAZ9aZf3K8-AWW7arZAESzLiqPpl4avoLcLFufPLYvwpI7DvB9LvVr835kLDeLb7t_6ZgFmCCI1gghxGKUCsoSipIqEO6hkbl9sd0Pj0ZqF4D_CMzidLvJ8N8WtXVG8BXAoXal7xCzLvP-AHaAr9E6ihFGSbVNZYBJtIM2QiWFT3KpufoX16USxk8fnfHusZ0VjacZha-NItwrSipSFVUpMMUILhZGWFcbsTCux65kDvD9Oo0XMb1UUrfry6Vuu4XGPRvBy5mtZ6hDTClGE7xkgpczXJIUDrdcZN4FSP4eQtM92gRLXIdFX_ZbgW-NMN1mPO8JnjXcOA8gg53E7Sjc-52nO6hIGSGvanPLCDVfCduEOGed5de6H7ntc8O0-pseQUvfA4aNwSRRzIpKjCgqheNSDd7_qL813u685E24ZevNT0gKwDw_N_AQc-OVuebqxUr7wDVfivCizuta-e-tDrex5afkM40qUlRikh_xjvNxVPJ3O_8oG6GkFjuZ4rdufIo_nY2xkDf1RfvGx59ZtXmldbphlO4D9kduhHZfdFXDMGJu8_tDhNOo5BPCk13C87J4N-GjZJ_bF118WTUK4LTjqa8XgBPFV7k3n0wC83kmvjWPD56xEN3-WR2kfAR8EZ7FcBcw6JXtr_B0t8IJYZ_M-ccrkxA2SZRsFzTP3l-Z_5RjiWej3_BgEqH_H0vnO5Y84dEu4RzRHZyD53tza09f8DGAHNEJQDwFyJIkIbARpqrNal54y_ZES2hd2beUz9yIcuFnYnKzlXiqW1OIh6XxM29P9k56PHz98v2m1k6s3atQPihpvjXugUt9U-tKLkc6MjhafX1Gef_Ijn9pQSlsTF0Ia7tO5q3utVr-2opX7j2IVW1eBlWj_aWoeKvcohRKOHFYhtz1FwVv83m871ZyJQr3XSyldealX9_a-RH62MdQT_M30UV36Sqrcb5-rZey4Oq7sK1yI0NVq0OuLLqx9ZAAwOn56Dwc1PBbg7BScKX8ELeo9AT2iKe_YXrsD_sbS2ZvF_O3iQpOVa2X5yX2CKTTBTOdcjBLkRgXjG2UdHNdPu6cOH-Fd__AIj26Y9spfE6ziEWMxPTtuDPGsShmyf5C-187Jj7aaZRVzJIJl8nuq6Wi0UEu-5aveOZdczefpsKTM1Ivv4vqyOPjRHzYQRFXNJo4uDMOsYzw-FMc_LM9SQiPJ55MZiRKeR7THK641B-8-GMki2k-NoXR5L4u5QKlBC4WSubFwjpu3GJk99ilXTGz9SwOdjBFKZlY2blepJSUAnb6P-pSiUm5vft5EsvNxAFD5Xr9RW1EuBYW5RbWcHN9UV6RMiMZvxBXUYJQgiiL8MXzVV5kWSVKxkmJq6IqoiqKSUkRw0XGClZcyCuM_IyBCYoYi_CMcEaLJEvzpMozxGJAkVhxqWbhor02y4two32VkCiLLhTPhbLhDxIxDjmGMWC3F-Yq-J-3SwsoUtI6u1XgpFPhjxiDALs9cBtd8NYKC1_TcdEadfXHL-ID8v8GAAD__1PZFcM">