aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2014-09-18 19:03:32 +0000
committerDmitry Vyukov <dvyukov@google.com>2014-09-18 19:03:32 +0000
commit59dce3d4d0fc1ec10d2000041cc163d633c6a788 (patch)
treef3dbbdac3ccd2e4905a66c36278443b3d2758209 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
parentc0ae07e98cb60702d8bb989a57375434abae9275 (diff)
downloadllvm-59dce3d4d0fc1ec10d2000041cc163d633c6a788.zip
llvm-59dce3d4d0fc1ec10d2000041cc163d633c6a788.tar.gz
llvm-59dce3d4d0fc1ec10d2000041cc163d633c6a788.tar.bz2
tsan: more careful handling of signals
On some tests we see that signals are not delivered when a thread is blocked in epoll_wait. The hypothesis is that the signal is delivered right before epoll_wait call. The signal is queued as in_blocking_func is not set yet, and then the thread just blocks in epoll_wait forever. So double check pending signals *after* setting in_blocking_func. This way we either queue a signal and handle it in the beginning of a blocking func, or process the signal synchronously if it's delivered when in_blocking_func is set. llvm-svn: 218070
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp')
0 files changed, 0 insertions, 0 deletions