Author: enrico
Date: Mon Feb  8 23:46:47 2016
New Revision: 260199

URL: http://llvm.org/viewvc/llvm-project?rev=260199&view=rev
Log:
Fix an issue where pressing CTRL+C in the interactive script interpreter causes 
LLDB to crash

This is because PyThreadState_Get() assumes a non-NULL thread state and crashes 
otherwise; but PyThreadState_GET is just a shortcut (in non-Python-debugging 
builds) for the global variable that holds the thread state

The behavior of CTRL+C is slightly more erratic than one would like. CTRL+C in 
the middle of execution of Python code will cause that execution to be 
interrupted (e.g. time.sleep(1000)), but a CTRL+C at the prompt will just cause 
a KeyboardInterrupt and not exit the interpreter - worse, it will only trigger 
the exception once one presses ENTER.

None of this is optimal, of course, but I don't have a lot of time to appease 
the Python deities with the proper spells right now, and fixing the crasher is 
already a good thing in and of itself


Modified:
    
lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp

Modified: 
lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp?rev=260199&r1=260198&r2=260199&view=diff
==============================================================================
--- 
lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp 
(original)
+++ 
lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp 
Mon Feb  8 23:46:47 2016
@@ -1019,7 +1019,7 @@ ScriptInterpreterPython::Interrupt()
 
     if (IsExecutingPython())
     {
-        PyThreadState *state = PyThreadState_Get();
+        PyThreadState *state = PyThreadState_GET();
         if (!state)
             state = GetThreadState();
         if (state)


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to