================
Comment at: source/Plugins/Process/Linux/NativeProcessLinux.cpp:2135
@@ -2135,8 +2134,3 @@
NotifyThreadCreateStopped (tid);
- m_coordinator_up->RequestThreadResume (tid,
- [=](lldb::tid_t
tid_to_resume, bool supress_signal)
- {
-
std::static_pointer_cast<NativeThreadLinux> (new_thread_sp)->SetRunning ();
- return Resume
(tid_to_resume, LLDB_INVALID_SIGNAL_NUMBER);
- },
-
CoordinatorErrorHandler);
+ if (m_coordinator_up->IsPendingThreadStop())
+ {
----------------
It looks to me there might be a race - if you'll be calling this method when
TSC inside of ProcessEvent call between RequestStopOnAllRunningThreads() and
coordinator.SetPendingNotification() a thread might be mistakenly resumed. So,
you may to synchronize IsPendingThreadStop with ProcessEvent().
Can we make RequestThreadResume take additional boolean argument to check for
pending stopped state - so, effectively move this conditional logic into
EventRequestResume?
================
Comment at: source/Plugins/Process/Linux/ThreadStateCoordinator.h:152
@@ +151,3 @@
+ bool
+ IsPendingThreadStop() {
+ return GetPendingThreadStopNotification();
----------------
This method should be synchronized - GetPendingThreadStopNotification() is used
now only within TSC thread and that's why doesn't need synchronization. But if
you're going to call it from another thread GetPendingThreadStopNotification
should be protected by mutex.
http://reviews.llvm.org/D8906
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits