Author: Emre Kultursay Date: 2023-05-01T21:24:14-07:00 New Revision: 3cc0a562969b1183836ef17cce913644db76de9b
URL: https://github.com/llvm/llvm-project/commit/3cc0a562969b1183836ef17cce913644db76de9b DIFF: https://github.com/llvm/llvm-project/commit/3cc0a562969b1183836ef17cce913644db76de9b.diff LOG: Clear read_fd_set if EINTR received Leaving bits uncleared set causes callbacks to be triggered even though there are no events to process. Starting with D131160 we have a callback that makes blocking read calls over pipe which was causing the lldb-server main loop to become unresponsive / blocked on Android. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D144240 Added: Modified: lldb/source/Host/posix/MainLoopPosix.cpp Removed: ################################################################################ diff --git a/lldb/source/Host/posix/MainLoopPosix.cpp b/lldb/source/Host/posix/MainLoopPosix.cpp index b185c3d3b707..5b50b450433e 100644 --- a/lldb/source/Host/posix/MainLoopPosix.cpp +++ b/lldb/source/Host/posix/MainLoopPosix.cpp @@ -156,9 +156,12 @@ Status MainLoopPosix::RunImpl::Poll() { size_t sigset_len; } extra_data = {&kernel_sigset, sizeof(kernel_sigset)}; if (syscall(__NR_pselect6, nfds, &read_fd_set, nullptr, nullptr, nullptr, - &extra_data) == -1 && - errno != EINTR) - return Status(errno, eErrorTypePOSIX); + &extra_data) == -1) { + if (errno != EINTR) + return Status(errno, eErrorTypePOSIX); + else + FD_ZERO(&read_fd_set); + } return Status(); } _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
