[lldb-dev] thread state question on Ctrl-C
Todd Fiala
tfiala at google.com
Thu Sep 11 08:41:38 PDT 2014
Hey guys,
When we hit Ctrl-C in lldb while debugging a multithreaded inferior with 5
threads, at a low level we'll end up stopping all 5 threads. It looks like
our expectation is that one of the 5 threads gets marked with a stop
reason, while the other 4 threads in this case would simply report they are
stopped for no reason (gdb-remote T00 stop reason). Is that correct?
Right now in llgs I believe I'm doing this in a non-compliant way. I am
marking all threads as stopped with the stop reason for an interrupt. This
seems to translate to lldb thinking it needs multiple restarts to get it
going again.
Related - if I do a qThreadStopInfo gdb-remote command and the thread is
*not* stopped, that is an error that gets an E response. But if it is
stopped but not for any user-visible reason, that is a T00 response. Is
that correct?
The difference between MacOSX/debugserver and Linux/llgs is visible in the
test/tools/lldb-gdbserver/TestGdbRemote_qThreadStopInfo.py test if you log
the stop signals returned by the qThreadStopInfo that loops over all
threads. MacOSX is only marking one with a stop reason of non-zero,
whereas Linux/llgs is marking all threads with the SIGSTOP stop reason.
That particular test isn't checking that aspect, but obviously I want to
add a test that verifies we're handling the stop reason marking correctly
on the llgs side.
Thanks!
--
Todd Fiala | Software Engineer | tfiala at google.com | 650-943-3180
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140911/c2b9c86e/attachment.html>
More information about the lldb-dev
mailing list