*/
#define BT_LOG_TAG "PLUGIN-PY"
-#include <babeltrace/lib-logging-internal.h>
+#include "logging.h"
#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/compiler-internal.h>
} python_state = PYTHON_STATE_NOT_INITED;
static PyObject *py_try_load_plugin_module_func = NULL;
+static bool python_was_initialized_by_us;
static
void print_python_traceback_warn(void)
{
PyObject *py_bt2_py_plugin_mod = NULL;
const char *dis_python_env;
+#ifndef __MINGW32__
sighandler_t old_sigint = signal(SIGINT, SIG_DFL);
+#endif
if (python_state != PYTHON_STATE_NOT_INITED) {
goto end;
}
if (!Py_IsInitialized()) {
+ BT_LOGI_STR("Python interpreter is not initialized: initializing Python interpreter.");
Py_InitializeEx(0);
+ python_was_initialized_by_us = true;
BT_LOGI("Initialized Python interpreter: version=\"%s\"",
Py_GetVersion());
+ } else {
+ BT_LOGI("Python interpreter is already initialized: version=\"%s\"",
+ Py_GetVersion());
}
py_bt2_py_plugin_mod = PyImport_ImportModule("bt2.py_plugin");
python_state = PYTHON_STATE_FULLY_INITIALIZED;
end:
+#ifndef __MINGW32__
if (old_sigint != SIG_ERR) {
(void) signal(SIGINT, old_sigint);
}
+#endif
print_python_traceback_warn();
pyerr_clear();
__attribute__((destructor)) static
void fini_python(void) {
- if (Py_IsInitialized()) {
+ if (Py_IsInitialized() && python_was_initialized_by_us) {
if (py_try_load_plugin_module_func) {
Py_DECREF(py_try_load_plugin_module_func);
py_try_load_plugin_module_func = NULL;