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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR][JIT] memory leak found in mlir JitRunner
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          wr-web
      </td>
    </tr>
</table>

<pre>
    git version: c104d79ec6b278fcc0d2df18c7b5452fb7e7e5d3
system:
```
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release: 20.04
Codename:       focal
```
reproduce: 
```
mlir-opt ~/llvm-project/mlir/test/Integration/Dialect/MemRef/print-memref.mlir -one-shot-bufferize="bufferize-function-boundaries" --canonicalize -finalize-memref-to-llvm   -convert-func-to-llvm -reconcile-unrealized-casts | ~/llvm-project/build/bin/mlir-cpu-runner   -e entry -entry-point-result=void -shared-libs=$HOME/llvm-project/build/lib/libmlir_c_runner_utils.so,$HOME/llvm-project/build/lib/libmlir_runner_utils.so
```
bug report by LeakSanitizer:
```
=================================================================
==1097093==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 208 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c584  (<unknown module>)
    #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 136 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c335  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 136 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c612  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 136 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c4a6  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 136 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c515  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 100 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c451  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 100 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c2e0  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 82 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c39e  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 82 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c3f2  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 82 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c27e  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

Direct leak of 73 byte(s) in 1 object(s) allocated from:
    #0 0x556ae47a098e in malloc (/home/wangrui/llvm-project/build/bin/mlir-cpu-runner+0x10498e) (BuildId: 7f789079801dace4)
    #1 0x7fc20526c228  (<unknown module>)
 #2 0x7fc252d92d06 in compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:234:10
 #3 0x7fc252d8c7d6 in mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) /home/wangrui/llvm-project/mlir/lib/ExecutionEngine/JitRunner.cpp:391:23
 #4 0x556ae47dfa6f in main /home/wangrui/llvm-project/mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp:33:10
 #5 0x7fc23910d082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16

SUMMARY: AddressSanitizer: 1271 byte(s) leaked in 11 allocation(s).
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsm09v47gVwD8NfSFkUKT-Hnxw7BjNIsEAzuwCPRkU-WSzI5MuSWXiOfSzF5SUZOJmtzOHogmGgBGbfHz_-X5OEIg7p_YaYIHyK5SvZ7z3B2MXX23yFZpZY-R5sVceP4B1ymjEllikJJNlDaJoaFm1QhBJZZtWomzyLKdtU0IJuWSIrBFZurPzcERsOS5RQabXsLy9v8J_fGfaWEjSdJ7OSd_02vc00YZbcUBs6UD0Vvnz2_LB2lo5b1XTe2PxzToY_H04NUnBCatOfvKF8STFlMxJNi_w7ef78eQWOuAOwqlBNu6ujATNjzApY4xbI3j3Zl4WTtbIXgyH3zxx7JRNzMnjfyG66bqHY3Ky5h8gPKKbIEN048GF1Y32sLd8iJtu1op346k7OG6hRXRzskr75AhHC-086OLEaEjcwfik6dsWrPoGiK0Rpc_LpO21CCaTxvRacqvAIUpxkgiujVaCd-ob4KRVevg0mU-8SUKwGONEGP0A1g-WnvcTC8JooTpIem1h0JWJ4M47jMrVW9k2vepkeFd6yj0Rpz6xvdZggyPAoL0942R4S04mpGvB9Z1HbP1glMSJO3ALMulU44ZMs799urv-c1-dasafwd1O7EZnu96rzs2dQXT1kyYuDbzV8qbfYwsnYz1uzvgW-Jd7rpVX38D-2XyEXD7667tEUlKXpGbj4nq7_bQN83FZCSzBg_Ag8RGOxp5xB_yLm-xMg25B-GEfmxZTUuHm7AHRyiFaY6Vxik0zNmzc4l1nBA82W2tecBSmGFFGMHnM84JDVnJSVxAsHAcVjGiF6OZgjoDo5ivXe9urn7zDiF6Rx5RkdQUhFESrq3D8RoZcy7asalLWFUklF5AhWr8KLcXksWwFJTktRF5leIiIrXr9RZuvGh-N7DtA7PpSkU6KOZU1laQIOQlzPKkOllpeP4LoPfxhlNxMJBgyrcL0n4-mdziwzp24CEGHgrHlpwGeDtEC0RUeKDXtwxOflkESijNK7r1Vej9gaoX_i_XVZXAro1u1D5rOy_FMr9U_e9idvEVs9eLmM7d78HdcHJSGVwoSWt53fiehAw9_ocSuxxriH-j2xOeRAGOwyuhrvR-8b35Tfjs0fi5OJ8SWlGWILdNppENv2EtvKlHKoTcv5XzWv-PhOlVK-5CTOHA7FHj5uvrTN8IW9uHr74yF0eF746JHz0afqvq_yJTV6ZDvS6bZy2TJlhftOFlK_4Rzb0zn3pqqy52nINhFtfOp2qxOiSQVDTHsdp1qxM55bv3uKaCnKd4HWXIrbih5fF7SOUsR3QjXI7qZz58_DsLBzlwE76QK7ou_wFXKil8DV4zlP4CryKrIqsiqyKr_L6uKlEZWRVZFVkVWvXtWZbyIrIqsiqyKrHr3rMrT-DdgZFVk1UdmFSG_BquyPI2siqyKrIqsevesokAiqyKrIqs-Lqsq-mugitUQURVRFVEVUfXuUdXG_wJGVEVURVS9e1TRMv5WFVEVUfWBUVWyXwRVtIqoiqiKqPpAqLr__e5uuf17mPWllBace_WITkrL9BW8AtNADgxLn7A1DmgQzy-ebprJBZM1q_kMFmnJSFpnLCezwyKr84xDLYu8LihUoi4zVsmCNEVRsbKkM7WghGYpoTWpGWVkDmnT5lnO8iyVmeQMZQSOXHXz0Jm5sfuZcq6HRZpmJK1mHW-gc09PO9rF0L-m3zuUkU457170vPLd8Fzk3e3NFuVrlF_9dvMZ5evvn0vCrem1fBoG_Hy7Zr3tFgfvTy7cZboJPVH-0DdzYY7TvfnP6zOEGi7OFO3Dgv47AAD__0R61wc">