On Thu, Mar 3, 2011 at 12:47 PM, Jim Schutt <[email protected]> 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 [email protected]
> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html