llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: Ebuka Ezike (da-viper)

<details>
<summary>Changes</summary>

The simple readline does not handling signals properly and easily crashes lldb. 
Especially the more common ones:
  `SIGINT` -&gt; keyboard interrupt.
 `SIGTSTP` -&gt; stop typed at terminal with `fg`.
  and `SINWINCH` -&gt; window size change).

Use the normal readline on linux for python version greater than 3.8 because 
the bug no longer exist since commit 
(https://github.com/python/cpython/commit/7105319ada2e663659020cbe9fdf7ff38f421ab2)
 in 3.9.

---
Full diff: https://github.com/llvm/llvm-project/pull/220642.diff


1 Files Affected:

- (modified) lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h 
(+10-3) 


``````````diff
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h 
b/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h
index c9976e79c9d9e..b1ba334444680 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h
@@ -11,17 +11,24 @@
 
 #include "lldb/Host/Config.h"
 
+// No need to hack into Python's readline module if libedit isn't used.
 #if LLDB_ENABLE_LIBEDIT && defined(__linux__)
 // NOTE: Since Python may define some pre-processor definitions which affect 
the
 // standard headers on some systems, you must include Python.h before any
 // standard headers are included.
-#include "Python.h"
+#include <Python.h>
 
-// no need to hack into Python's readline module if libedit isn't used.
-//
+// The symbol conflict bug was fixed in python 3.9 here
+// https://github.com/python/cpython/issues/82815 commit
+// 
https://github.com/python/cpython/commit/7105319ada2e663659020cbe9fdf7ff38f421ab2
+// and backported to 3.8 point release (don't know the exact version).
+// TODO: remove LLDB_USE_LIBEDIT_READLINE_COMPACT_MODULE when
+// LLDB_MINIMUM_PYTHON_VERSION is greater than 3.8.
+#if PY_VERSION_HEX < 0x03090000
 #define LLDB_USE_LIBEDIT_READLINE_COMPAT_MODULE 1
 
 PyMODINIT_FUNC initlldb_readline(void);
+#endif // PY_VERSION_HEX < 0x03090000
 
 #endif
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/220642
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to