[Lldb-commits] [lldb] [lldb][windows] print an error if Python fails to initialize (PR #181160)
Charles Zablit via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 13 03:22:59 PST 2026
https://github.com/charles-zablit updated https://github.com/llvm/llvm-project/pull/181160
>From 442c48f4f3c75d17b2c41795df01d335e5bcd403 Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Thu, 12 Feb 2026 14:57:05 +0000
Subject: [PATCH 1/2] [lldb][windows] print an error if Python fails to
initialize
---
.../Python/ScriptInterpreterPython.cpp | 20 +++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 35a772c1454df..9af480c4113d9 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -120,14 +120,30 @@ struct InitializePythonRAII {
return spec.GetPath();
}();
if (!g_python_home.empty()) {
- PyConfig_SetBytesString(&config, &config.home, g_python_home.c_str());
+ PyStatus py_status =
+ PyConfig_SetBytesString(&config, &config.home, g_python_home.c_str());
+ if (py_status._type == PyStatus::_PyStatus_TYPE_ERROR) {
+ PyConfig_Clear(&config);
+ llvm::WithColor::error() << "Failed to set the Python config: '"
+ << py_status.err_msg << "'.\n";
+ return;
+ }
}
config.install_signal_handlers = 0;
- Py_InitializeFromConfig(&config);
+ PyStatus py_status = Py_InitializeFromConfig(&config);
PyConfig_Clear(&config);
+ if (py_status._type == PyStatus::_PyStatus_TYPE_ERROR) {
+ llvm::WithColor::error()
+ << "Python failed to initialize: '" << py_status.err_msg << "'.\n";
+ return;
+ }
#else
Py_InitializeEx(/*install_sigs=*/0);
+ if (!Py_IsInitialized()) {
+ llvm::WithColor::error() << "Python failed to initialize.\n";
+ return;
+ }
#endif
// The only case we should go further and acquire the GIL: it is unlocked.
>From 8ace7e584c325e90e0648b1dfdf10800d7f1492e Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Fri, 13 Feb 2026 12:22:44 +0100
Subject: [PATCH 2/2] remove private API usage
---
.../Python/ScriptInterpreterPython.cpp | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 9af480c4113d9..c954f167a22b8 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -120,22 +120,22 @@ struct InitializePythonRAII {
return spec.GetPath();
}();
if (!g_python_home.empty()) {
- PyStatus py_status =
+ PyStatus status =
PyConfig_SetBytesString(&config, &config.home, g_python_home.c_str());
- if (py_status._type == PyStatus::_PyStatus_TYPE_ERROR) {
+ if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
- llvm::WithColor::error() << "Failed to set the Python config: '"
- << py_status.err_msg << "'.\n";
+ llvm::WithColor::error()
+ << "Failed to set the Python config: '" << status.err_msg << "'.\n";
return;
}
}
config.install_signal_handlers = 0;
- PyStatus py_status = Py_InitializeFromConfig(&config);
+ PyStatus status = Py_InitializeFromConfig(&config);
PyConfig_Clear(&config);
- if (py_status._type == PyStatus::_PyStatus_TYPE_ERROR) {
+ if (PyStatus_Exception(status)) {
llvm::WithColor::error()
- << "Python failed to initialize: '" << py_status.err_msg << "'.\n";
+ << "Python failed to initialize: '" << status.err_msg << "'.\n";
return;
}
#else
More information about the lldb-commits
mailing list