Correctly shutdown when DoDestroy is called with an active exception.
authorZachary Turner <zturner@google.com>
Wed, 3 Dec 2014 22:04:18 +0000 (22:04 +0000)
committerZachary Turner <zturner@google.com>
Wed, 3 Dec 2014 22:04:18 +0000 (22:04 +0000)
commitc6a6653ebb59a40f1701bd757540cdaf1108c969
treefba6553f28bbb3e1fb79ea0297e6029051f775bb
parentbbc017851815da300ce9d6315204a73d68754a1c
Correctly shutdown when DoDestroy is called with an active exception.

Previously if we got a DoDestroy while stopped at a breakpoint, we
would detach and then say the process had exited.  This is completely
wrong, as it resulted in the python script incorrectly assuming that
the process had actually exited and trying to delete the image, when
in fact it had done no such thing.

The fix employed here is that when we get a DoDestroy, we do 3 steps:

1) initiate a termination sequence on the process
2) If we were stopped handling an exception of any kind, mask it and
   let the program resume, causing the program to see the termination
   request and exit on its own.
3) Let the program exit normally, and close all of our handles before
   returning control back to DoDestroy.

This fixes Bug 21722 and Bug 21723.

llvm-svn: 223272
lldb/source/Plugins/Process/Windows/DebuggerThread.cpp
lldb/source/Plugins/Process/Windows/DebuggerThread.h
lldb/source/Plugins/Process/Windows/ForwardDecl.h
lldb/source/Plugins/Process/Windows/ProcessWindows.cpp