llvm-project/lldb/source/Target
Greg Clayton 0fdd3ae54d ^C wasn't interrupting an expression during a long evaluation or deadlock.
The problem was that we have an IOHandler thread that services the IOHandler stack. The command interepter is on the top of the stack and it receives a "expression ..." command, and it calls the IOHandlerIsComplete() callback in the command interpereter delegate which runs an expression. This causes the IOHandlerProcessSTDIO to be pushed, but since we are running the code from the IOHandler thread, it won't get run. When CTRL+C is pressed, we do deliver the interrupt to the IOHandlerProcessSTDIO::Interrupt() function, but it was always writing 'i' to the interrupt pipe, even if we weren't actively reading from the debugger input and the pipes. This fix works around the issue by directly issuing the async interrupt to the process if the process is running.

A longer term more correct fix would to be run the IOHandler thread and have it just do the determination of the input and when complete input is received, run the code that handles that input on another thread and syncronize with that other thread to detect when more input is desired. That change is too big to make right now, so this fix will tide us over until we can get there.

<rdar://problem/16556228>

llvm-svn: 213196
2014-07-16 21:05:41 +00:00
..
ABI.cpp Fixed build warnings. 2012-10-30 23:56:14 +00:00
CMakeLists.txt Add lldb-gdbserver support for Linux x86_64. 2014-06-30 21:05:18 +00:00
CPPLanguageRuntime.cpp <rdar://problem/11398407> 2013-05-18 00:11:21 +00:00
ExecutionContext.cpp Merging the iohandler branch back into main. 2014-01-27 23:43:24 +00:00
JITLoader.cpp Moved JITLoader.cpp and JITLoaderList.cpp over into "source/Target" since the header files were in "include/lldb/Target". 2014-03-06 00:14:12 +00:00
JITLoaderList.cpp Create a Process::ModulesDidLoad() method to handle process-related tasks, as suggested by Jim Ingham. Make JITLoader instances use this to probe only new modules for relevant JIT symbols. Also re-enable the JITLoader hooks in Process. 2014-03-13 09:37:02 +00:00
LanguageRuntime.cpp Add enumerations for additional languages from DWARF spec updates. 2014-07-03 00:49:08 +00:00
Makefile
Memory.cpp Change ProcessGDBRemote::DoReadMemory to use the x packet to read 2014-05-06 04:34:52 +00:00
NativeRegisterContext.cpp Add lldb-gdbserver support for Linux x86_64. 2014-06-30 21:05:18 +00:00
NativeRegisterContextRegisterInfo.cpp Add lldb-gdbserver support for Linux x86_64. 2014-06-30 21:05:18 +00:00
ObjCLanguageRuntime.cpp Huge change to clean up types. 2013-07-11 22:46:58 +00:00
OperatingSystem.cpp <rdar://problem/13854277> 2013-05-10 21:47:16 +00:00
PathMappingList.cpp Start converting usages of off_t to other types. 2014-07-02 17:24:07 +00:00
Platform.cpp Revert "Fix broken tests due to new error output." 2014-07-09 16:31:49 +00:00
Process.cpp ^C wasn't interrupting an expression during a long evaluation or deadlock. 2014-07-16 21:05:41 +00:00
ProcessInfo.cpp Pull ProcessInfo and ProcessLaunchInfo out of Target/Process. 2014-06-30 00:30:53 +00:00
ProcessLaunchInfo.cpp Fixup Windows build breaks for the llgs upstream. 2014-06-30 23:51:35 +00:00
Queue.cpp Add a SBQueue::GetKind() method to retrieve the type of libdispatch queue (serial or concurrent). 2014-03-13 02:54:54 +00:00
QueueItem.cpp Correctly add the QueueID to a pending block's extended thread backtrace thread. 2014-03-10 08:42:03 +00:00
QueueList.cpp Add new Queue, QueueItem, Queuelist, SBQueue, SBQueueItem classes to represent 2013-12-13 00:29:16 +00:00
RegisterContext.cpp Replace uint32_t by lldb::RegisterKing in register context API. 2014-07-02 09:51:28 +00:00
SectionLoadHistory.cpp Fix typos. 2014-07-01 21:22:11 +00:00
SectionLoadList.cpp Fix typos. 2014-07-08 18:05:41 +00:00
StackFrame.cpp Fix typos. 2014-07-08 18:05:41 +00:00
StackFrameList.cpp Fix typos. 2014-07-08 18:05:41 +00:00
StackID.cpp sweep up -Wformat warnings from gcc 2014-04-04 04:06:10 +00:00
StopInfo.cpp If a hand-called function is interrupted by hitting a breakpoint, then 2014-07-08 01:07:32 +00:00
SystemRuntime.cpp Change the Mac OS X SystemRuntime plugin from using the placeholder 2014-02-05 05:44:54 +00:00
Target.cpp Fix typos. 2014-07-01 21:22:11 +00:00
TargetList.cpp Cleanup the iOS simulator code. 2014-07-10 23:33:37 +00:00
Thread.cpp If a hand-called function is interrupted by hitting a breakpoint, then 2014-07-08 01:07:32 +00:00
ThreadList.cpp Fix the behavior when hand-calling a function times out on one thread, 2014-04-08 21:33:21 +00:00
ThreadPlan.cpp sweep up -Wformat warnings from gcc 2014-04-04 04:06:10 +00:00
ThreadPlanBase.cpp Improve logging a bit by printing the exception or signal type description. 2014-02-27 19:35:12 +00:00
ThreadPlanCallFunction.cpp Fix the behavior when hand-calling a function times out on one thread, 2014-04-08 21:33:21 +00:00
ThreadPlanCallUserExpression.cpp If a hand-called function is interrupted by hitting a breakpoint, then 2014-07-08 01:07:32 +00:00
ThreadPlanRunToAddress.cpp Fix typos. 2014-07-01 21:22:11 +00:00
ThreadPlanShouldStopHere.cpp Get "ThreadPlanShouldStopHere" to handle auto-stepping through line number 0 code. 2014-03-17 23:03:34 +00:00
ThreadPlanStepInRange.cpp This commit reworks how the thread plan's ShouldStopHere mechanism works, so that it is useful not only 2014-03-13 02:47:14 +00:00
ThreadPlanStepInstruction.cpp Add the ability to provide a "count" option to the various "thread step-*" operations. Only 2014-07-08 19:28:57 +00:00
ThreadPlanStepOut.cpp This commit reworks how the thread plan's ShouldStopHere mechanism works, so that it is useful not only 2014-03-13 02:47:14 +00:00
ThreadPlanStepOverBreakpoint.cpp If ThreadPlanCallFunction hasn't set its notion of the "real stop info" yet, just return the current PrivateStopInfo. 2013-06-04 01:40:51 +00:00
ThreadPlanStepOverRange.cpp This commit reworks how the thread plan's ShouldStopHere mechanism works, so that it is useful not only 2014-03-13 02:47:14 +00:00
ThreadPlanStepRange.cpp Fix Windows build using portable types for formatting the log outputs 2014-03-03 15:39:47 +00:00
ThreadPlanStepThrough.cpp Revert change I didn't mean to check in. 2013-12-10 19:44:41 +00:00
ThreadPlanStepUntil.cpp Roll back the changes I made in r193907 which created a new Frame 2013-11-04 09:33:30 +00:00
ThreadPlanTracer.cpp cleanup unreferenced functions 2014-03-20 06:08:36 +00:00
ThreadSpec.cpp Resolve printf formatting warnings on Linux: 2012-11-29 21:49:15 +00:00
UnixSignals.cpp Change the default handling for SIGALRM and SIGCHLD to not notify. 2013-10-28 19:00:42 +00:00
UnwindAssembly.cpp Fix UnwindAssembly memory leak by defining and using a shared UnwindAssemblySP type. 2014-02-03 23:49:47 +00:00