summaryrefslogtreecommitdiffstats
path: root/libutils
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2015-05-30 00:43:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-30 00:43:10 +0000
commit20432c237c082506cf7d45c377b778c94879b5ae (patch)
treefdce9fdd3b5a2d267063cb8465802292ba22881b /libutils
parent0a423d994a0dbd05924ae6cff702b5d4d7dd43f0 (diff)
parent18a574f715b767ee8a2f02903c883d571b42409f (diff)
downloadsystem_core-20432c237c082506cf7d45c377b778c94879b5ae.zip
system_core-20432c237c082506cf7d45c377b778c94879b5ae.tar.gz
system_core-20432c237c082506cf7d45c377b778c94879b5ae.tar.bz2
Merge "Work around spurious epoll notifications." into mnc-dev
Diffstat (limited to 'libutils')
-rw-r--r--libutils/Looper.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/libutils/Looper.cpp b/libutils/Looper.cpp
index e69784d..5b0ff3a 100644
--- a/libutils/Looper.cpp
+++ b/libutils/Looper.cpp
@@ -567,7 +567,12 @@ int Looper::removeFd(int fd, int seq) {
#endif
scheduleEpollRebuildLocked();
} else {
+ // Some other error occurred. This is really weird because it means
+ // our list of callbacks got out of sync with the epoll set somehow.
+ // We defensively rebuild the epoll set to avoid getting spurious
+ // notifications with nowhere to go.
ALOGE("Error removing epoll events for fd %d, errno=%d", fd, errno);
+ scheduleEpollRebuildLocked();
return -1;
}
}