diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2014-09-18 19:03:32 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2014-09-18 19:03:32 +0000 |
commit | 59dce3d4d0fc1ec10d2000041cc163d633c6a788 (patch) | |
tree | f3dbbdac3ccd2e4905a66c36278443b3d2758209 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp | |
parent | c0ae07e98cb60702d8bb989a57375434abae9275 (diff) | |
download | llvm-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