Add thread state initialization to the thread where the interactive

interpreter is run (which is separate from the thread where
Py_Initialize is called, where this normally gets set up).

llvm-svn: 127191
This commit is contained in:
Caroline Tice 2011-03-07 23:24:28 +00:00
parent 58d489fc6e
commit 6258c53e12
1 changed files with 7 additions and 0 deletions

View File

@ -1384,10 +1384,16 @@ ScriptInterpreterPython::RunEmbeddedPythonInterpreter (lldb::thread_arg_t baton)
// The following call drops into the embedded interpreter loop and stays there until the // The following call drops into the embedded interpreter loop and stays there until the
// user chooses to exit from the Python interpreter. // user chooses to exit from the Python interpreter.
Py_BEGIN_ALLOW_THREADS
PyGILState_STATE gstate = PyGILState_Ensure();
run_string.Printf ("run_python_interpreter (%s)", script_interpreter->m_dictionary_name.c_str()); run_string.Printf ("run_python_interpreter (%s)", script_interpreter->m_dictionary_name.c_str());
PyRun_SimpleString (run_string.GetData()); PyRun_SimpleString (run_string.GetData());
run_string.Clear (); run_string.Clear ();
PyGILState_Release (gstate);
Py_END_ALLOW_THREADS
run_string.Printf ("run_one_line (%s, 'sys.stdin = save_stdin')", script_interpreter->m_dictionary_name.c_str()); run_string.Printf ("run_one_line (%s, 'sys.stdin = save_stdin')", script_interpreter->m_dictionary_name.c_str());
PyRun_SimpleString (run_string.GetData()); PyRun_SimpleString (run_string.GetData());
run_string.Clear(); run_string.Clear();
@ -1474,6 +1480,7 @@ ScriptInterpreterPython::Initialize ()
::setenv ("PYTHONPATH", pathon_path_env_cstr, 1); ::setenv ("PYTHONPATH", pathon_path_env_cstr, 1);
} }
PyEval_InitThreads ();
Py_Initialize (); Py_Initialize ();
PyObject *compiled_module = Py_CompileString (embedded_interpreter_string, PyObject *compiled_module = Py_CompileString (embedded_interpreter_string,