Android: Ignore sigpipe signals. This prevents us from crashing on
android if stderr or stdout suffers and EPIPE.
Change-Id: I5ac124fdfdf3d158e0a7a853cd3516555ff1b18b
diff --git a/jni_android.go b/jni_android.go
index 15ac732..77a7e3a 100644
--- a/jni_android.go
+++ b/jni_android.go
@@ -9,6 +9,9 @@
import (
"fmt"
"unsafe"
+ "os"
+ "os/signal"
+ "syscall"
"v.io/v23/context"
"v.io/v23/namespace"
@@ -44,6 +47,11 @@
env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
jOpts := jutil.Object(uintptr(unsafe.Pointer(jOptions)))
+ // Don't allow broken stderr/out to kill our program due to
+ // sigpipe. Note that we just ignore all these signals.
+ ch := make(chan os.Signal)
+ signal.Notify(ch, syscall.SIGPIPE)
+
if err := Init(env); err != nil {
jutil.JThrowV(env, err)
return