On Thu, Mar 3, 2011 at 12:47 PM, Jim Schutt <jaschut@xxxxxxxxxx> wrote: > Has something maybe changed in signal handling recently? > > Maybe SIGPIPE used to be blocked, and sendmsg() would > return -EPIPE, but now it's not blocked and not handled? > > This bit in linux-2.6.git/net/core/stream.c is what made > me wonder, but maybe it's a red herring: > > int sk_stream_error(struct sock *sk, int flags, int err) > { > if (err == -EPIPE) > err = sock_error(sk) ? : -EPIPE; > if (err == -EPIPE && !(flags & MSG_NOSIGNAL)) > send_sig(SIGPIPE, current, 0); > return err; > } It was actually just changed at 35c4a9ffeadfe202b247c8e23719518a874f54e6, so if you're on latest master then it might be it. You can try reverting that commit, or can try this: index da22c7c..6f746d4 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -1991,7 +1991,7 @@ int SimpleMessenger::Pipe::do_sendmsg(int sd, struct msghdr *msg, int len, bool assert(l == len); } - int r = ::sendmsg(sd, msg, more ? MSG_MORE : 0); + int r = ::sendmsg(sd, msg, MSG_NOSIGNAL | (more ? MSG_MORE : 0)); if (r == 0) dout(10) << "do_sendmsg hmm do_sendmsg got r==0!" << dendl; if (r < 0) { Yehuda > > -- Jim > > > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html