[Lldb-commits] [PATCH] D21296: [lldb] Fixed race condition on private state thread exit, take 2

Cameron via lldb-commits lldb-commits at lists.llvm.org
Mon Jun 13 09:24:25 PDT 2016


cameron314 created this revision.
cameron314 added reviewers: clayborg, labath, zturner.
cameron314 added a subscriber: lldb-commits.

This is the follow-up to D19122, which was accepted but subsequently reverted due to a bug it introduced (that I didn't see during local testing on Windows but which manifested quite often on Linux). That bug (a race between the Process object was being destroyed and the thread terminating, caused by the join not being done under certain conditions) is fixed in this version of the patch.

This patch fixes various races between the time the private state thread is signaled to exit and the time it actually exits (during which it no longer responds to events). Previously, this was consistently causing 2-second timeout delays on process detach/stop for us.

This also prevents crashes that were caused by the thread controlling its own owning pointer while the controller was using it (copying the thread wrapper is not enough to mitigate this, since the internal thread object was getting reset anyway). Again, we were seeing this consistently.

For what it's worth, I've run the test suite with this change (on Linux) without any regressions, and the number of reruns dropped from 15 to 0 for me (though that last part may be coincidence).

http://reviews.llvm.org/D21296

Files:
  include/lldb/Target/Process.h
  source/Target/Process.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21296.60536.patch
Type: text/x-patch
Size: 4271 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160613/0730c77c/attachment-0001.bin>


More information about the lldb-commits mailing list