<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/130021>130021</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `sparse-space-collapse` pass triggers Segmentation fault.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          RiRi114
      </td>
    </tr>
</table>

<pre>
    Test on commit: 0f9720a6

steps to reproduceļ¼š
`mlir-opt  temp.mlir   --sparse-space-collapse
`

test case:
```mlir
#COO = #sparse_tensor.encoding<{
map = (i, j) -> (
i : compressed(nonunique),
j : singleton(soa)
)
}>
func.func @sparse_space_collapse_example(%sp : tensor<4x8xf32, #COO>) -> index {
    %i = arith.constant 0 : index
    %c1 = arith.constant 1 : index
    %l1 = sparse_tensor.extract_iteration_space %sp lvls = 0
      : tensor<4x8xf32, #COO> -> !sparse_tensor.iter_space<#COO, lvls = 0>
    
    %r1 = sparse_tensor.iterate %it1 in %l1 iter_args(%outer = %i): !sparse_tensor.iter_space<#COO, lvls = 0 to 1> -> index {
        %l2 = sparse_tensor.extract_iteration_space %sp at %it1 lvls = 1
          : tensor<4x8xf32, #COO>, !sparse_tensor.iterator<#COO, lvls = 0 to 1> -> !sparse_tensor.iter_space<#COO, lvls = 1>
        
        %r2 = sparse_tensor.iterate %it2 in %l2 iter_args(%inner = %outer): !sparse_tensor.iter_space<#COO, lvls = 1 to 2> -> index {
            %l3 = sparse_tensor.extract_iteration_space %sp at %it2 lvls = 2
              : tensor<4x8xf32, #COO>, !sparse_tensor.iterator<#COO, lvls = 1 to 2> -> !sparse_tensor.iter_space<#COO, lvls = 2>
            
            %k = arith.addi %inner, %c1 : index
            sparse_tensor.yield %k : index
        }
        sparse_tensor.yield %r2 : index
    }
    return %r1 : index
}
```

crash trace:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/fuzzing/llvm-project/build/bin/mlir-opt temp.mlir --sparse-space-collapse
 #0 0x000000000113ce77 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x113ce77)
 #1 0x000000000113aa0e llvm::sys::RunSignalHandlers() (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x113aa0e)
 #2 0x000000000113d855 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x000073f2705a5520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000001253810 void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x1253810)
 #5 0x000000000125382e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x125382e)
 #6 0x000000000125382e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x125382e)
 #7 0x000000000325fc3d (anonymous namespace)::SparseSpaceCollapsePass::runOnOperation() SparseSpaceCollapse.cpp:0:0
 #8 0x00000000042452f7 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x42452f7)
 #9 0x0000000004245b61 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x4245b61)
#10 0x000000000424aede auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_15&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo> > >&&) const Pass.cpp:0:0
#11 0x000000000424735b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x424735b)
#12 0x0000000004245450 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x4245450)
#13 0x0000000004245b61 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x4245b61)
#14 0x000000000424825b mlir::PassManager::run(mlir::Operation*) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x424825b)
#15 0x00000000042408af performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#16 0x0000000004240503 llvm::LogicalResult llvm::function_ref<llvm::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&)::$_3>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#17 0x00000000042ec4e8 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x42ec4e8)
#18 0x000000000423a151 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a151)
#19 0x000000000423a403 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a403)
#20 0x000000000423a612 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x423a612)
#21 0x000000000111a8d7 main (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x111a8d7)
#22 0x000073f27058cd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#23 0x000073f27058ce40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#24 0x000000000111a435 _start (/home/fuzzing/llvm-project/build/bin/mlir-opt+0x111a435)
Segmentation fault (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWllv2zr2_zTMCxGDIiUvD35QnRj_AjdIkFzg_yjQEiWzoUgNSbXO_fQDkrIlK3bbdNwW00mQxAuX81uow6OFGsMrydgSJB9AcnNFW7tVevnIH3kUxVcbVbws_2bGQiVhruqaW0BSiMrFDCM6BSgFKDWWNQZaBTVrtCranIHbNfiwAgvXCqaoFlxfq8ZCaFndTNxHCOH1tWmoNsy95Ow6V0LQxrAwJMxsXeScGgZIN1X4dTO4z5is7u8hIDcQYBJmyyyTRukJk7kquKwAWYHZB4DSmjZdzzkHeAU_AbyA14Dcum8ASjl0zHJVN5oZwwqA51LJVvJ_tQzgBcArgNJPvpPhshLMKgnw3CjqWh0Y_392A8gtQGnZynzi_kEQow6aJ5rtiWZsR-tGMBceJ6bxUwf0gKzi3XxXEuyQBppu2j1iLgu2g4EXhBACnHBPjmput5NcSWOptBD5OX3vvmceneoaneoqQteRsjuraW4zbpmmlisZeMFAQnwWxg9C3TTw27z2NkTHgVyAMLczMXTGq2EEr7QPcYCsT0EOUD1EbiPIZUfOR6C6MsED1Vqmu0WScGcoSX8AljsUogOtsVd7afGbpaV2T-AQKxpM-h1Chw8n-FDrx3ybzZvViHqTBkbtzTolwpFZeG8WHpvFpezN8s79qGGRo4i_atjeNPLDpuE-Hh5N_HOMG7F6syr42LiReZ0gz4NUQouCw70xAXDINcdpZf9zjOaFM1HsZ3w9wKXV_tOZoX41jXLYYZxmttXykCH6bqHLYWsJG0-uqdlC5-t46wEoffjrNn26habd1NxCCjdt5bY-pa2TfGttY9wgvAZ4XXG7bTeTXNUAr4X4vH-5brT6xHIL8Job0zID8BpSWUAuc9EWDNotgwHFhubPHskEoPTJ0vwZFm3dBFxoEiR50KrStIZUV23NpDXhSFhvVc0AXpftP_-4zfBV8E3LReFeuQR4fdio-336_C7tVieCaIf2P1FEcjabQU-TpICk5sWENw-aS-ux_-01xfO-k6ZfMmWsZrQGeOoWDpfWbXX-OP9BBgB_QLsOUNiZHdxoBJdSxE7BfWzlE68kFf9HZSGYDinnMohczB4RHiEq5kkCj2K7esXpsYKGV1yWKrMAp-7zZ8UL_3bRjTCTvHHrAvm_EIB0AWakxDOU0CTBqOMh-Abg9W4-zabxteCy3V1Xsg0N-cSoydRjjnGCUY84PkKMEzKPkIcCfVXm9SuYpVyE91-oeAZk1Teulf5CdfHxkL1uAZ73zfdNl0Y7lr09rpry-VWzEpCVj_mVoYsub_bt_0_F870u_E5xAS8D916Z5JUymP3vKoMHq3z6rswZZWZDZQhOypx4gFQq-VKr1kBJaxa2aV_eAJI--YT85L5bden4gZoudelW3ssBKZ-3Tow4kSrmQywxjhNczs4YdN_8re4bFzUtaOMd6YIfiethBUvOm9W3pJKKF8PNHZW0CjXERinhXlvpz1OLi-0NHb_eicWY_WYavZn9A2-Y4JKNlpjreiA1vbgcw0Eu1EdprPZlgNKvZj3uECKHhg77A9VM2o-yVNCfHXZbzEUU30yj_dkyidBIccoKBmlr1Tg1NFRTIZhYK31L8y0gqyyrZJvlu13okGVS6ZqKbFASv9W6wVGTmheZf6wbAfA8KL44OHnnhOlENbYI339m-a8IOohIhVD5r2DqTh3C3_EyulwogOMsSsYp_e6vj48rJS3b7cudd89_j-fvuv9xx5rbg6aDL2eC1puCAjwDeP7u9-_w-8gR1XRS-_Ltp3OfhuT7bvxvND7UWtBNPSrNXakUjUqlGUk2F04QFynwHK6-wMPjkjpO0B99QhEnqGdP3k8ofvEJRTxSfI6PjpKhaCdX1-hawEUQOgw9wmSEEM1pCRumS6Xr1F-oMN-4NnpIVmZLNSuyxrps1Y94Uq3O2V2lXYLp5B4tkNel9aBNcH3f2DvK5UrJkleDORZw0HoiSU3H5BJEBpdi_lIVz6l4ZKYV9vwlmnMDAJ4fuIe7sq-437Fa6ZcPbVmGxX3oX7CStsJmBRPMsvNj-uLrvAX-EpFvyakQG5o_Z6U82jAGKn2vmT-fUA_vhlPBcvvIKm6sfnm9PL62BPoykoSiQSh3TPxSKl_x5hsrdHa8Qlkes_mAuWkEt6ksHrTKmTF7sL9n3f03HhZf7TFse7Kay-qRlWe_vkj29Qb32Xd0gZPQKIlOL_w_7ri9hJper17NxVjNGJGzanZlRb6loYBI37oevqXEhRjGiBwYYjRmOI3wRRj-EirTCPdURnc-IzovZrCm_uGK__iepp-tj4WPbznO82LxxluOeFEs-koak_GELEYwy9yYzFiqbTZg8t0hWDwIEY_1iUkCw-SXUSgmSYj2xKpDnQx9NnABcqWZv63Pig7U_oGDq2JJigVZ0Cu2jGZxhBMcofhqu6TlfDalKCriRY5mcZHHyQwVESlpSSJGpld8iRFOEEFTtEBzHE8IxmyWbGKGSLGgCwRixGrKxcRRmShdXflnEZYRQQhHV4JumDD-yUCM_ZLFGCQ3V3rpqW_ayoAYCW6s6Wew3Ar_NKGrMkFyA8EUnX6CYIpgQ42BVvOqYtrA18pMrlotlj_-REVH5PMS_zsAAP__fViURg">