Merge "Handle socket creation error in context init"
diff --git a/rsContext.cpp b/rsContext.cpp
index da4262f..3be600e 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -497,7 +497,10 @@
 bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) {
     pthread_mutex_lock(&gInitMutex);
 
-    mIO.init();
+    if (!mIO.init()) {
+        ALOGE("Failed initializing IO Fifo");
+        return false;
+    }
     mIO.setTimeoutCallback(printWatchdogInfo, this, 2e9);
 
     if (sc) {
diff --git a/rsFifoSocket.cpp b/rsFifoSocket.cpp
index 5475f92..af61380 100644
--- a/rsFifoSocket.cpp
+++ b/rsFifoSocket.cpp
@@ -36,7 +36,6 @@
 }
 
 bool FifoSocket::init(bool supportNonBlocking, bool supportReturnValues, size_t maxDataSize) {
-    // TODO: (b/27870945) Handle socketpair errors.
     int ret = socketpair(AF_UNIX, SOCK_STREAM, 0, sv);
     return (ret == 0);
 }
diff --git a/rsThreadIO.cpp b/rsThreadIO.cpp
index ceec54a..e041877 100644
--- a/rsThreadIO.cpp
+++ b/rsThreadIO.cpp
@@ -37,9 +37,8 @@
 ThreadIO::~ThreadIO() {
 }
 
-void ThreadIO::init() {
-    mToClient.init();
-    mToCore.init();
+bool ThreadIO::init() {
+    return mToClient.init() && mToCore.init();
 }
 
 void ThreadIO::shutdown() {
diff --git a/rsThreadIO.h b/rsThreadIO.h
index 23c5d42..cfae09d 100644
--- a/rsThreadIO.h
+++ b/rsThreadIO.h
@@ -31,7 +31,7 @@
     ThreadIO();
     ~ThreadIO();
 
-    void init();
+    bool init();
     void shutdown();
 
     size_t getMaxInlineSize() {