| Index: runtime/bin/eventhandler_linux.cc
|
| diff --git a/runtime/bin/eventhandler_linux.cc b/runtime/bin/eventhandler_linux.cc
|
| index 1bf9378aac2a309bc04abd33fbefbdd58fcb3e4a..7b5bd707acd67685363c626192fab313885a7416 100644
|
| --- a/runtime/bin/eventhandler_linux.cc
|
| +++ b/runtime/bin/eventhandler_linux.cc
|
| @@ -314,6 +314,9 @@ intptr_t EventHandlerImplementation::GetPollEvents(intptr_t events,
|
| event_mask = (1 << kCloseEvent);
|
| sd->MarkClosedRead();
|
| }
|
| + } else {
|
| + // Assert we never get an EPOLLHUP on a non-pipe file-descriptor.
|
| + ASSERT(events != EPOLLHUP);
|
| }
|
|
|
| if ((events & EPOLLOUT) != 0) {
|
| @@ -324,6 +327,12 @@ intptr_t EventHandlerImplementation::GetPollEvents(intptr_t events,
|
| event_mask |= (1 << kOutEvent);
|
| }
|
| }
|
| +
|
| + if (events == (EPOLLHUP | EPOLLERR)) {
|
| + event_mask = (1 << kErrorEvent);
|
| + sd->MarkClosedWrite();
|
| + sd->MarkClosedRead();
|
| + }
|
| }
|
|
|
| return event_mask;
|
|
|