<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/66092>66092</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Python PDB `set_trace()` Doesn't Work Due to `lldb_editline`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lambdaknight
</td>
</tr>
</table>
<pre>
When trying to call `pdb.set_trace()` in a script in LLDB, I get an error about the `lldb_editline` module not having the attribute `set_completer_delims`.
```
polaris ➜ ~ lldb --version
lldb version 12.0.1
polaris ➜ ~ lldb
(lldb) script
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>> import sys;
>>> sys.executable
'/usr/bin/python3'
>>> sys.version
'3.6.8 (default, Jan 25 2023, 15:03:30) \n[GCC 8.5.0 20210514 (Red Hat 8.5.0-18)]'
>>> import pdb
>>> pdb.set_trace()
Traceback (most recent call last):
File "/usr/lib64/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "/usr/lib64/python3.6/pdb.py", line 1585, in set_trace
Pdb().set_trace(sys._getframe().f_back)
File "/usr/lib64/python3.6/pdb.py", line 156, in __init__
readline.set_completer_delims(' \t\n`@#$%^&*()=+[{]}\\|;:\'",<>?')
AttributeError: module 'lldb_editline' has no attribute 'set_completer_delims'
```
If I run the same version of python from the command line, I get the following:
```
polaris ➜ ~ python3.6
Python 3.6.8 (default, Jan 25 2023, 15:03:30)
[GCC 8.5.0 20210514 (Red Hat 8.5.0-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'/usr/bin/python3.6'
>>> sys.version
'3.6.8 (default, Jan 25 2023, 15:03:30) \n[GCC 8.5.0 20210514 (Red Hat 8.5.0-18)]'
>>> import pdb
>>> pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb)
```
If I try to manually load the local `readline` module, LLDB just seg faults.
```
polaris ➜ ~ lldb
(lldb) script
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>> import importlib.util
>>> import sys
>>> spec = importlib.util.spec_from_file_location("readline", "/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so")
>>> spec
ModuleSpec(name='readline', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f22a63889b0>, origin='/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so')
>>> foo = importlib.util.module_from_spec(spec)
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: lldb
#0 0x00007f22b9fffa00 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib64/libLLVM-12.so+0xb4fa00)
#1 0x00007f22b9ffd5c4 llvm::sys::RunSignalHandlers() (/lib64/libLLVM-12.so+0xb4d5c4)
#2 0x00007f22b9ffe155 (/lib64/libLLVM-12.so+0xb4e155)
#3 0x00007f22c34a4cf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
#4 0x00007f22b838aad4 PyModule_GetState (/lib64/libpython3.6m.so.1.0+0x110ad4)
#5 0x00007f22a556a63d (/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so+0x463d)
#6 0x00007f22b7264ca5 rl_initialize (/lib64/libedit.so.0+0x1eca5)
#7 0x00007f22a556aa1d PyInit_readline (/usr/lib64/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so+0x4a1d)
#8 0x00007f22b8478bd2 _PyImport_LoadDynamicModuleWithSpec (/lib64/libpython3.6m.so.1.0+0x1febd2)
#9 0x00007f22b8478dd1 (/lib64/libpython3.6m.so.1.0+0x1fedd1)
#10 0x00007f22b840ed92 PyCFunction_Call (/lib64/libpython3.6m.so.1.0+0x194d92)
#11 0x00007f22b841c98d _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x1a298d)
#12 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#13 0x00007f22b83f3b80 (/lib64/libpython3.6m.so.1.0+0x179b80)
#14 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#15 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#16 0x00007f22b83f3998 (/lib64/libpython3.6m.so.1.0+0x179998)
#17 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#18 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#19 0x00007f22b83f3998 (/lib64/libpython3.6m.so.1.0+0x179998)
#20 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#21 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#22 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#23 0x00007f22b8374d33 PyEval_EvalCode (/lib64/libpython3.6m.so.1.0+0xfad33)
#24 0x00007f22b8484ec0 (/lib64/libpython3.6m.so.1.0+0x20aec0)
#25 0x00007f22b8415de7 (/lib64/libpython3.6m.so.1.0+0x19bde7)
#26 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#27 0x00007f22b83f3998 (/lib64/libpython3.6m.so.1.0+0x179998)
#28 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#29 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#30 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#31 0x00007f22b83f3b80 (/lib64/libpython3.6m.so.1.0+0x179b80)
#32 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#33 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#34 0x00007f22b83f3998 (/lib64/libpython3.6m.so.1.0+0x179998)
#35 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#36 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#37 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#38 0x00007f22b83f3b80 (/lib64/libpython3.6m.so.1.0+0x179b80)
#39 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#40 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#41 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#42 0x00007f22b83f3b80 (/lib64/libpython3.6m.so.1.0+0x179b80)
#43 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#44 0x00007f22b8417905 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19d905)
#45 0x00007f22b83f3998 (/lib64/libpython3.6m.so.1.0+0x179998)
#46 0x00007f22b8416087 (/lib64/libpython3.6m.so.1.0+0x19c087)
#47 0x00007f22b8416cd8 _PyEval_EvalFrameDefault (/lib64/libpython3.6m.so.1.0+0x19ccd8)
#48 0x00007f22b8373994 (/lib64/libpython3.6m.so.1.0+0xf9994)
#49 0x00007f22b8374d33 PyEval_EvalCode (/lib64/libpython3.6m.so.1.0+0xfad33)
#50 0x00007f22b8482c02 (/lib64/libpython3.6m.so.1.0+0x208c02)
#51 0x00007f22b8484dbd PyRun_StringFlags (/lib64/libpython3.6m.so.1.0+0x20adbd)
#52 0x00007f22b848725c PyRun_SimpleStringFlags (/lib64/libpython3.6m.so.1.0+0x20d25c)
#53 0x00007f22c2b4e216 (/lib64/liblldb.so.12+0xb00216)
#54 0x00007f22c2662fbe (/lib64/liblldb.so.12+0x614fbe)
#55 0x00007f22c274512e (/lib64/liblldb.so.12+0x6f712e)
#56 0x00007f22c22ef2fe lldb::SBDebugger::RunCommandInterpreter(bool, bool) (/lib64/liblldb.so.12+0x2a12fe)
#57 0x000055dc126cd577 (/usr/bin/lldb+0xa577)
#58 0x000055dc126c9ba7 (/usr/bin/lldb+0x6ba7)
#59 0x00007f22b87f6d85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#60 0x000055dc126c9c1e (/usr/bin/lldb+0x6c1e)
[1] 984562 segmentation fault (core dumped) lldb
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWk1v4zgS_TXMhbBAkaI-DjkkdjzTi55F0BnsHAWKpGzNUKSXojLxHPa3L0jZjukYPU7H3VhsEPiDlF5VPVY9lmmzYehWWspbQO8BXdyw0a2NvVWsbwT7Q3ertbtpjNje_raWGjq77fQKOgM5UwqCHG1EkwzS1c4yLgEuAa5AjmCnIYMDt93G-defPy_uAZ7DT3AlHWQaSmuNhawxo4NuLT2SUqKppeic6rT0GL0Ro5JQGwfX7DnYXUvInLNdM7pwj7fMTb9R0klbC6m6fgA5SgBaAHS3e8zR7j-83RjFbDdA8IBB9QCqOYT_gdAbh7PZs7RDZ_R0ZRjbjcAUJyhJ_w5iZxGX4Q2udhRMw49btzYaftJOWsZd9yyn1xvrvU_grwbKl855ntx2IyHAxb9H_z6Qigs_AXAxXbMbg8bCubNqttjHTB6mf9j1G2MdHLYDIPenk8N2SOSL5KNjjZJ7twuAl-NgAV42nQZ4uQkeEz9x5v6ILIALkuRJCQEuhWzZqEIg_2AaYgoxwsS_TSkgd4gAckeQpwfQuQb0_qf5HJYJTZC_MEU0zTzMFyngz8xNM7M0REwXZ5zZRbo58H-YOZed4ZJf_UDD-B_eUG8GB63kUrsprxUbnL-U7FIIwmWn_ILgA0Gqa_LslaIkB3jJjZDJZhsum0OfxrBK_ctOQztqP73Hg9CzD3AZBvEcDlK1iTKcqeHg5JFZMudGD0ZJH9gR_h4ekPlULn7-PT57hmKXU1rSHeordQe3H31eex4jXn061CvpWsv6Hc9JW3t-zwXzXn_ynTt13enO1fWrN1Yy4S9KzgqB96PwOeZCnuUIZAj4RMwApoA-AJwDfLdLC7IA-N6LYOF1EBQLQOf-v5j78iF3_rUvEO8YIPOQYMswsgvwbi9MD17bALnbCxjARaxtuIBrNkBtjsUMF-djKM6q2PT4qYWffGYFYRxYLw9yZVo4sQpba_owz03fMy3g5MJei_1Ma5Qyf3Z6dUj4izTzddmO5e1bVGCy-T4dgEb7UMaXXUFPionXUm122QMw5maztX4POxqyfh0GgLHXToCx6rjUg_QDrbGwN1bCTrfG9sx1Rn9NVz8iqj7b_-9kdTb7It1o9Wx2uMVL0-BEp4NylWmotSOxCnfPAHn4p9EHzsrHafv8u9x3duubkZ7pkSm1hcowEVI6KKnvEPYK8dpQeMJ8PwJ_HwcHB7mCgdbh25qG_8Edf3pSXZOMrlPvSN-N5BCQxQlA4sdrLyN12ylZe2p9YQSP8IHfQ4F9Vd5V18zEVvt1Anh5kG8-XTMjeT97KfM6z2ahtmcrPSaDCajVOX-nsV_Cwj5two6q_Rbk1bx49S0w6Y1K66fI3Mfzl9T1IdRavjhpNVPJw4uT2leg368-h3ugaX6X3EHmIHopWoxZTsqyalBI4Dk0tlv5BF8cV_s1wy_OhN8ac261piSf1muYGJmedgCPnx_unh7gMDZ95yCDzbiCVoaccAaundsMfhvASy9Y42pIlHruE2NXAC-h3z86zdUo5LSnWDasod_ngxTsMvLJ-cZKjP3msKGgBIa_R2tWlvWQ2dXYS-28raM6ggATBNELQgh5npuqbVuGEPROeDByF_pZ_-LRdtoFU7_uZOj1Isv-rM3grGR92OR9--CCoPikPSyN6prPn__1yyzFgeV79NJk3txr0wIwSU_8EZRn5_z5MuqnbqWZ-plpoaSd-o9LTHrEyCQ-MSlTSi_A8ZdFOOQIh5OMZbxFsK6tHJyxsrbuLejGrX1aJoNJUIBNMW9jQrJj70pSMiYy-LidirD-SfpFCR3NKfS-EHqPnu7xU8REHD49MsAozVlOxA7u-qV1j16ynIjIgfw4wgLnGWcUWhXaz46p7q8z0fmu4og1yVm8FsVpUCwV8HH7yXe0e2-_a5AsjYMso2XMirIRGNaP209BT2qvfIutZn3Hp5X9rXPrp7BFXLiwrWwEjkxWpyaFSN8BJ0T6qoOYpCiGQ1JUGD5u58tRc79D1fNwSHEhfpWJCkf4aYyf8qoUnqGHZ6Zq_7D0H3cWU1t2sR2Gq1JEdnBcUAWpquxSuLaqqixCIzFaS5oSXexcUTUliuCyExJyVBaXc8pRWURw9BSOi_LjnFacizKyk5-yUFXlO1ioqhiuuC4L5Q9ioboqCxhdlQV8Wl_fiQV81frCJ_VVZIIQeOT03IiLN7-WCUIi9JNyKzPJL65ejJjkUfXi03KjQr5jxRoh4xXLf9CKFdfN2zfl9rG8rX4MC3En_NG8jfvYD-8LcY_6YU4J-UGcZlfNLPJmO_sYCz-ovkhx1cwqr5tZb8rrQ5xmbzat78Npll6T0wxfldPsTXl9jNPTprCoEL0Cp6JCNLJDr1qt2Zvy-hgLb5rC75RZ5VUzq_qe_Qs9qbYSc4Qv719KjqKPYDQ9bYdE4z81fxl1_eRsp1dLxVbDOxok0USfvejJNlYWmPK9ga7fKPlNZgSmPDITncTgJpM4zd_CKSWaAISnEx2EcJpHOFmEk-e4bc4s1glOnmZtIyMcGuEUGU3xBThtkeIYJ49wsGxxK6fzvHAm9nS_kM24Wkl7OCObT19DHZ2DA1w2xiiA53B6PnNmduIJZiluY0_2xUip4CnOuaBFEZ2nTN--TMf09-iF0SKqZlqeAFQN-ypA3rAYIC6sos1FSWFdq67h9eCYdXXPOv02Nu4DywMmYaKMFDBHp17xVH7VK54e8ULvU0AXEEJYlRnNMRzkqpfahQN8eNAlbqwM57XSF0f0xca5r17ePt6IWyIqUrEbeZvmVUZxRSi-Wd-2WdOSPCtzRlGapiXilHEhmjLNOGWiuuluMcIEVSlOM0IpThhhPG1QJUlaCVxykCHZs04dzqFvumEY5W2eowrfKNZINYQfr2Cs5Z8wTAKMAV3c2Ft_z6wZVwPIkOoG93qafeM6p-Tt7huax8X9_uckJz9kWRg5aIALB38z9g-4GCV05tzPVW5Gq27j4_NV59Zjk3DThxV63j_NNtb8LrkDeBncHQBehnD-GwAA__8nDfpC">