<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">