cornell-zhang/hcl-dialect

[ReuseBuffer] Freeing Invalid Pointer

Closed this issue · 2 comments

There seems to be some issue with 3D reuse_at, pytest reports that there's an invalid pointer being freed.

Relevant test and to reproduce:

cd heterocl/tests/
pytest mlir/test_schedule_memory.py::test_reuse_blur_x_y_z_3D
*** Error in `/home/nz264/anaconda3/envs/mlir/bin/python': free(): invalid pointer: 0x000055d91e53e0f0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81329)[0x7f0a2e011329]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(+0x200646d)[0x7f09a790546d]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(+0x1d5a366)[0x7f09a7659366]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(+0x1d5ad48)[0x7f09a7659d48]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(+0x1d2d7a2)[0x7f09a762c7a2]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(+0x2b827a8)[0x7f09a84817a8]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(_ZN4llvm3orc5LLJITD1Ev+0xcf)[0x7f09a849010f]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/libHCLMLIRAggregateCAPI.so.14(mlirExecutionEngineDestroy+0x2e)[0x7f09a6699f2e]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlirExecutionEngine.cpython-38-x86_64-linux-gnu.so(+0x23335)[0x7f09a4bf4335]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlirExecutionEngine.cpython-38-x86_64-linux-gnu.so(+0x268e4)[0x7f09a4bf78e4]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlirExecutionEngine.cpython-38-x86_64-linux-gnu.so(+0x2515f)[0x7f09a4bf615f]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlirExecutionEngine.cpython-38-x86_64-linux-gnu.so(+0x24987)[0x7f09a4bf5987]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlir.cpython-38-x86_64-linux-gnu.so(+0x51d0b)[0x7f09abed0d0b]
/work/shared/users/phd/nz264/mlir/hcl-dialect/build/tools/hcl/python_packages/hcl_core/hcl_mlir/_mlir_libs/_mlir.cpython-38-x86_64-linux-gnu.so(+0x51ddc)[0x7f09abed0ddc]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x194345)[0x55d91c35f345]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfab67)[0x55d91c2c5b67]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x194325)[0x55d91c35f325]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xf8d6f)[0x55d91c2c3d6f]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfa9ab)[0x55d91c2c59ab]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfb25d)[0x55d91c2c625d]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfd7d8)[0x55d91c2c87d8]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x1945c0)[0x55d91c35f5c0]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfa4ba)[0x55d91c2c54ba]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x194345)[0x55d91c35f345]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfab73)[0x55d91c2c5b73]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x194325)[0x55d91c35f325]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfab67)[0x55d91c2c5b67]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x194325)[0x55d91c35f325]
/home/nz264/anaconda3/envs/mlir/bin/python(+0xfb321)[0x55d91c2c6321]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x121461)[0x55d91c2ec461]
/home/nz264/anaconda3/envs/mlir/bin/python(_PyGC_CollectNoFail+0x2b)[0x55d91c41ec4b]
/home/nz264/anaconda3/envs/mlir/bin/python(PyImport_Cleanup+0x29c)[0x55d91c439bec]
/home/nz264/anaconda3/envs/mlir/bin/python(Py_FinalizeEx+0x7a)[0x55d91c439faa]
/home/nz264/anaconda3/envs/mlir/bin/python(Py_Exit+0x8)[0x55d91c43a0d8]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x26f11b)[0x55d91c43a11b]
/home/nz264/anaconda3/envs/mlir/bin/python(PyErr_PrintEx+0x12)[0x55d91c43a562]
/home/nz264/anaconda3/envs/mlir/bin/python(PyRun_SimpleFileExFlags+0x255)[0x55d91c43e7e5]
/home/nz264/anaconda3/envs/mlir/bin/python(Py_RunMain+0x36d)[0x55d91c43ecbd]
/home/nz264/anaconda3/envs/mlir/bin/python(Py_BytesMain+0x39)[0x55d91c43ee79]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f0a2dfb2555]
/home/nz264/anaconda3/envs/mlir/bin/python(+0x1e6d69)[0x55d91c3b1d69]
======= Memory map: ========
55d91c1cb000-55d91c22a000 r--p 00000000 00:3e 1255369057                 /home/nz264/anaconda3/envs/mlir/bin/python3.8
55d91c22a000-55d91c43f000 r-xp 0005f000 00:3e 1255369057                 /home/nz264/anaconda3/envs/mlir/bin/python3.8
55d91c43f000-55d91c532000 r--p 00274000 00:3e 1255369057                 /home/nz264/anaconda3/envs/mlir/bin/python3.8
55d91c533000-55d91c538000 r--p 00367000 00:3e 1255369057                 /home/nz264/anaconda3/envs/mlir/bin/python3.8
55d91c538000-55d91c570000 rw-p 0036c000 00:3e 1255369057                 /home/nz264/anaconda3/envs/mlir/bin/python3.8
55d91c570000-55d91c590000 rw-p 00000000 00:00 0 
55d91d785000-55d91e72f000 rw-p 00000000 00:00 0                          [heap]
7f0998000000-7f0998021000 rw-p 00000000 00:00 0 
7f0998021000-7f099c000000 ---p 00000000 00:00 0 
7f099db8d000-7f099dd0d000 rw-p 00000000 00:00 0 
7f099dd0d000-7f099dd21000 r-xp 00000000 00:3e 82317317                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/testing.cpython-38-x86_64-linux-gnu.so
7f099dd21000-7f099df20000 ---p 00014000 00:3e 82317317                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/testing.cpython-38-x86_64-linux-gnu.so
7f099df20000-7f099df22000 rw-p 00013000 00:3e 82317317                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/testing.cpython-38-x86_64-linux-gnu.so
7f099df22000-7f099e063000 rw-p 00000000 00:00 0 
7f099e063000-7f099e077000 r-xp 00000000 00:3e 82317331                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/json.cpython-38-x86_64-linux-gnu.so
7f099e077000-7f099e277000 ---p 00014000 00:3e 82317331                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/json.cpython-38-x86_64-linux-gnu.so
7f099e277000-7f099e278000 rw-p 00014000 00:3e 82317331                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/json.cpython-38-x86_64-linux-gnu.so
7f099e278000-7f099e2b8000 rw-p 00000000 00:00 0 
7f099e2b8000-7f099e334000 r-xp 00000000 00:3e 82317326                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/parsers.cpython-38-x86_64-linux-gnu.so
7f099e334000-7f099e534000 ---p 0007c000 00:3e 82317326                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/parsers.cpython-38-x86_64-linux-gnu.so
7f099e534000-7f099e53b000 rw-p 0007c000 00:3e 82317326                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/parsers.cpython-38-x86_64-linux-gnu.so
7f099e53b000-7f099e5fe000 rw-p 00000000 00:00 0 
7f099e5fe000-7f099e646000 r-xp 00000000 00:3e 82317316                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/reduction.cpython-38-x86_64-linux-gnu.so
7f099e646000-7f099e845000 ---p 00048000 00:3e 82317316                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/reduction.cpython-38-x86_64-linux-gnu.so
7f099e845000-7f099e84a000 rw-p 00047000 00:3e 82317316                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/reduction.cpython-38-x86_64-linux-gnu.so
7f099e84a000-7f099e84b000 rw-p 00000000 00:00 0 
7f099e84b000-7f099e971000 r-xp 00000000 00:3e 82317327                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/groupby.cpython-38-x86_64-linux-gnu.so
7f099e971000-7f099eb70000 ---p 00126000 00:3e 82317327                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/groupby.cpython-38-x86_64-linux-gnu.so
7f099eb70000-7f099eb7a000 rw-p 00125000 00:3e 82317327                   /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/groupby.cpython-38-x86_64-linux-gnu.so
7f099eb7a000-7f099ec3d000 rw-p 00000000 00:00 0 
7f099ec3d000-7f099ec64000 r-xp 00000000 00:3e 2213110595                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/indexers.cpython-38-x86_64-linux-gnu.so
7f099ec64000-7f099ee64000 ---p 00027000 00:3e 2213110595                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/indexers.cpython-38-x86_64-linux-gnu.so
7f099ee64000-7f099ee67000 rw-p 00027000 00:3e 2213110595                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/indexers.cpython-38-x86_64-linux-gnu.so
7f099ee67000-7f099ee68000 rw-p 00000000 00:00 0 
7f099ee68000-7f099eecb000 r-xp 00000000 00:3e 2213110594                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/aggregations.cpython-38-x86_64-linux-gnu.so
7f099eecb000-7f099f0cb000 ---p 00063000 00:3e 2213110594                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/aggregations.cpython-38-x86_64-linux-gnu.so
7f099f0cb000-7f099f0d1000 rw-p 00063000 00:3e 2213110594                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/site-packages/pandas/_libs/window/aggregations.cpython-38-x86_64-linux-gnu.so
7f099f0d1000-7f099f153000 rw-p 00000000 00:00 0 
7f099f153000-7f099f155000 r--p 00000000 00:3e 2149334071                 /home/nz264/anaconda3/envs/mlir/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.soAborted

What was the issue that caused this problem?

Just because the generated reuse loops were not correctly put inside the IfOp body. Aggressive loop merging caused this problem (Step 17 in https://github.com/cornell-zhang/hcl-dialect-prototype/blob/main/lib/Transforms/LoopTransformations.cpp#L1763)