Change NotificationQueue assert -> CHECK
authorRanjeeth Dasineni <ranjeeth@fb.com>
Sat, 17 Oct 2015 00:22:49 +0000 (17:22 -0700)
committerfacebook-github-bot-1 <folly-bot@fb.com>
Sat, 17 Oct 2015 01:20:18 +0000 (18:20 -0700)
Summary: If the eventFd goes bad, NotificationQueue consumers can cause their event loop to spin indefinitely.  If libevent gets POLLERR on the fd, it calls handlerReady, which triggers a read.  The read will fail, but the callback is never uninstalled.  I'm not sure it would be easy to recover gracefully from this, so crash hard instead.

Reviewed By: yfeldblum, pgriess

Differential Revision: D2550270

fb-gh-sync-id: c9575fbda778b3625da6d9db6b0542b8263f230a

folly/io/async/NotificationQueue.h

index 32cda2564e56e28ac7fc64e75b059c48ca05fd7e..129096f6c3dbef498b09b4bec39d004a6464f20d 100644 (file)
@@ -506,7 +506,7 @@ class NotificationQueue {
     if (rc < 0) {
       // EAGAIN should pretty much be the only error we can ever get.
       // This means someone else already processed the only available message.
-      assert(errno == EAGAIN);
+      CHECK_EQ(errno, EAGAIN);
       return false;
     }
     assert(value == 1);