Index: chrome/common/ipc_channel_posix.cc |
diff --git a/chrome/common/ipc_channel_posix.cc b/chrome/common/ipc_channel_posix.cc |
index 5080dd60a5833bf6d27f5eb08a8cdc77c363a5a2..a9a81a0f67737a513cc873aa16ef26a770c54a04 100644 |
--- a/chrome/common/ipc_channel_posix.cc |
+++ b/chrome/common/ipc_channel_posix.cc |
@@ -607,6 +607,13 @@ bool Channel::ChannelImpl::ProcessOutgoingMessages() { |
msg->file_descriptor_set()->CommitAll(); |
if (bytes_written < 0 && errno != EAGAIN) { |
+#if defined(OS_MACOSX) |
+ // On OSX writing to a pipe with no listener returns EPERM. |
+ if (errno == EPERM) { |
+ Close(); |
+ return false; |
+ } |
+#endif // OS_MACOSX |
LOG(ERROR) << "pipe error: " << strerror(errno); |
return false; |
} |