<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97488>97488</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][circt][pycde] compiler backend segfaults randomly
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nes0
</td>
</tr>
</table>
<pre>
I've been trialling pycde and have recently started seeing random segfaults from the compiler. This behaviour appears to be random in that I can run the same Python / pycde script repeatedly and see it crash in 50% of the runs and correct SystemVerilog output the other 50%. I see exactly the same behaviour across multiple build machines, Ubuntu 22.04 and Rocky Linux.
The prebuilt circt/mlir binaries I am using are from the PyCDE release package hosted at [PyPI](https://pypi.org/project/pycde/#history). I have tried the two most recent releases (0.4.0 and 0.3.1.dev1066) and see no difference between them.
Here is the annotated backtrace:
```#0 0x00007f99d4bfd5f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0x9fd5f8)
#1 0x00007f99d4bf9fac SignalHandler(int) Signals.cpp:0:0
#2 0x00007f99d8442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007f99d4eda4cb circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike)::'lambda'(mlir::Operation*)::operator()(mlir::Operation*) const AppID.cpp:0:0
#4 0x00007f99d4eda850 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#5 0x00007f99d4eda824 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#6 0x00007f99d4edaa0f circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike) (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0xcdaa0f)
#7 0x00007f99d4eda4b1 circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike)::'lambda'(mlir::Operation*)::operator()(mlir::Operation*) const AppID.cpp:0:0
#8 0x00007f99d4eda850 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#9 0x00007f99d4eda824 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#10 0x00007f99d4edaa0f circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike) (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0xcdaa0f)
#11 0x00007f99d4eda4b1 circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike)::'lambda'(mlir::Operation*)::operator()(mlir::Operation*) const AppID.cpp:0:0
#12 0x00007f99d4eda850 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#13 0x00007f99d4eda824 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (.constprop.0) AppID.cpp:0:0
#14 0x00007f99d4edaa0f circt::esi::AppIDIndex::buildIndexFor(circt::hw::HWModuleLike) (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0xcdaa0f)
#15 0x00007f99d4edb285 circt::esi::AppIDIndex::AppIDIndex(mlir::Operation*) (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0xcdb285)
#16 0x00007f99d4ba7b02 circtESIAppIDIndexGet (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/libPyCDE_CIRCTPythonCAPI.so+0x9a7b02)
#17 0x00007f99d75ae6d3 (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/_circt.cpython-310-x86_64-linux-gnu.so+0x416d3)
#18 0x00007f99d75959b3 _init (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/_circt.cpython-310-x86_64-linux-gnu.so+0x289b3)
#19 0x000055bbbb52610e (/usr/bin/python3.10+0x15a10e)
#20 0x000055bbbb51ca7b _PyObject_MakeTpCall (/usr/bin/python3.10+0x150a7b)
#21 0x000055bbbb534c20 (/usr/bin/python3.10+0x168c20)
#22 0x000055bbbb531087 (/usr/bin/python3.10+0x165087)
#23 0x000055bbbb51ce2b (/usr/bin/python3.10+0x150e2b)
#24 0x00007f99d76749fb _init (/PROJECTDIR/venv/lib/python3.10/site-packages/pycde/circt/_mlir_libs/_mlir.cpython-310-x86_64-linux-gnu.so+0x749fb)
#25 0x000055bbbb51ca7b _PyObject_MakeTpCall (/usr/bin/python3.10+0x150a7b)
#26 0x000055bbbb515629 _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x149629)
#27 0x000055bbbb5269fc _PyFunction_Vectorcall (/usr/bin/python3.10+0x15a9fc)
#28 0x000055bbbb50f45c _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x14345c)
#29 0x000055bbbb5269fc _PyFunction_Vectorcall (/usr/bin/python3.10+0x15a9fc)
#30 0x000055bbbb50f45c _PyEval_EvalFrameDefault (/usr/bin/python3.10+0x14345c)
#31 0x000055bbbb50b9c6 (/usr/bin/python3.10+0x13f9c6)
#32 0x000055bbbb601256 PyEval_EvalCode (/usr/bin/python3.10+0x235256)
#33 0x000055bbbb62c108 (/usr/bin/python3.10+0x260108)
#34 0x000055bbbb6259cb (/usr/bin/python3.10+0x2599cb)
#35 0x000055bbbb62be55 (/usr/bin/python3.10+0x25fe55)
#36 0x000055bbbb62b338 _PyRun_SimpleFileObject (/usr/bin/python3.10+0x25f338)
#37 0x000055bbbb62af83 _PyRun_AnyFileObject (/usr/bin/python3.10+0x25ef83)
#38 0x000055bbbb61da5e Py_RunMain (/usr/bin/python3.10+0x251a5e)
#39 0x000055bbbb5f402d Py_BytesMain (/usr/bin/python3.10+0x22802d)
#40 0x00007f99d8429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#41 0x00007f99d8429e40 call_init ./csu/../csu/libc-start.c:128:20
#42 0x00007f99d8429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#43 0x000055bbbb5f3f25 _start (/usr/bin/python3.10+0x227f25)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV1v2zoS_TXMCxGBokR9PPjBseOtFy1qJNl7Hw2SGtm80RdIKon__YKUE1tqEPjublBgW6CNKYk8c85wOKQ03Bi1awBmiN0gtrzivd23etaAIVeiLQ6zNaLpE2AB0GCrFa8q1exwd5AFYN4UeM-fAGuQ0NjqgI3l2kKBDYDrpnlTtDU2sCt5X1mDS93W2O4By7buVAU6wA97ZbCAPX9Sba8x7zrg2mDbYgGvAKrBds8tXmPJG6z7xmMYXgPeHOy-bTCiqyMpI7XqLNbQAbdQVAdP0wBgZbHU3OwdHCOIMtyWHkj3jfG9ZKs1SIvvD8ZC_QdoVbU73Pa2663v2do96GFwgNceFV64dNLfGJ1pkbo1Btd9ZVVXARa9qgpcc7lXDRhEF_hfom9sjykNSOwZ3LXy8YC_qqZ_CRBZIjIf_j7sAXcaHILFUmlpEV3VldJYqIZrBQavMa9xb5zfuYaTqzeHxfIWa6iAG8Adl498B3jfGjdR3GLEbjaHzRqxJaLZ3trOoGiO6ArRVXfoVNDqnWvq9i_wVr2b_fNor4xt9QHR3HnDh4LVCgpv1z63uG6NPUbHKwODEc1IEAfECyZBFIRBAU8hSRJE87fZalpcqLIEDY10TrXPPgT3UI8c8wU0YGW8Rd40rXWTjgWXj1ZzCU7K0Dshx380Ipi8EEJIWuZ5EYuyYGWGq-qpdr2juTmYobHRqrH3lsvHB49Fs1MnzZ-3rbEaeI1o4uZSNdbxRzRDdLW5-_7P28XDcn2H6OoJmidEV5US3n0uYKMgJIiujLJwfZwSc-bb1xneuineVkqYYbyfy-1ifbd4GAJ_Md-sA9MiekNeci8E0XxQjBGNwonSvOQS36tdw6svvCkq0IhmR-LDbRPIrkPRnPj_b0D0HCiLY8ooOUodZL1kyTaJrysXude7ph8eyMC0QeLZ-SEjctGIHBQ8luIY297FYNTQmHfderluCngZrv068ter1gk4G7N_Hn6__PmtLfoKvqpHcEb9TUTTitei4IimiGbOt8OD7x1oblXbIDp_6936m96Au_dBfyzbxljsab7vvngqNWMEn_D-5NXjHZi-smc3C7BcVUP7mVePKFqcHq5a_cx1sbZHjtHtBwQXZ8Fd9o10D7YayhHiGYePfXPrAMfjvuvCRZIP_sA7o9NtF7jp_sgr7Aev0Pi3V5KpVzgpP2lZ_MRkJb2uUT5If8gHIvw_zQfZ73zwjlfy3_lg4hW3hZNfMR844eGvkQ-cVPo7H7zjlR8OiL_zAY3CH86Sv0o-mB4XBc3YRcLPrj9apT9TrNMyEjs-BQqeCkIHsbf365Ogf4D9mW-cntaI9-gQlzIOSRF9IsOtvxvIAeE6Csn19E30lWwcJkU04pqNueYsFxHeqkZ9pk__BmOa5WLM-PWExJgQQjCahASOXHujEV0J1UzY3ZCXkPGQwDkQJWOgUPJU4O3m8F38BdJuv_FHeOgWvKouQSc8FSP0cIwexfLta8FHQEkmzz4ROCA6AQpJll4CxEiWjoCiqV6g4iJpQMfSRtk3TdI4L8Xnx4y7uChkPJ8RYfapM51M0FlCc4d--8Srrfuz0ryGJfjvvxdYiPPEnaXOLKTTkM9L6SysXrfkP0DaVssLFfC8lCP8bIxPypjJ_0pBFLOxhR8W7f9WQUQ-W0E0Wc9E5DK5ACgqc5mMgMbrOSEhZQk-Y7poiwvyGY0YZWPg8fpOqAxJdgFQQkKSjYDiCRDL5QWJgrI8l6OVEbEJkADGLgEqgY1OAlEyBYqizE3vXd9s71XdVbBSFQzL-SIDUTSWnE4M8DKLXg3Mm8PfQ4cyG21Z0Xh9JWHBGeDNYXvXN9-4ai7BDDkb7V7RZEWVMaGFw7w5WDAXotKM0OIcNSbjb9w0L3KCty4Hy60vbG3dEt3WDj9wqdr0iK4C1zQHU0DnUnXT2er47Xs6KNijaM4yFM3D5GQ1nFqFmGA_xm8qE0ND06Ffe_RAOjjqQOnpHSGm74GOpLyn4l3wKHXvu-yEPdlKy6ikDA-ol7g9Lekpvjdfb-f3t9j0olYWcyz6HdbQtdpi2-JxMWqn7L4XgWxrR9K9mg0_16fSlDKm97upryKpRlZ9AUO90Rf-3spCwaQodFXMoiKPcn4FszAN85zlCWFX-1lBWEhEIZPSpUUhMgJxUeQiDossLMrwSs0ooTFJCaUuv7FACipAlpTLMAvjlKCYQM1VFTiuQat3V57lLE_jLLuquIDK-Oorpf7VhFLElld65qWJfmdQTCplrDkBWGUrX7H1A9gSsZvh2OCbw0mCLd9qrF42-LLaax12qKtWh6teV7P_3M2DhqcZ_XcAAAD__x5mGXc">