Re: cosd multi-second stalls cause "wrongly marked me down"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Oh, SIGPIPE, my old nemesis. I should have guessed!

I think it's time to block SIGPIPE everywhere... It's much better to
get EPIPE than to use a signal handler for this.

regards,
Colin


On Thu, Mar 3, 2011 at 12:55 PM, Yehuda Sadeh Weinraub
<yehudasa@xxxxxxxxx> wrote:
> 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


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux