Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] SIGPIPE handling?
From: Ralph Castain (rhc_at_[hidden])
Date: 2010-12-01 16:24:20


I can schedule it into the 1.5 series, but I don't think it will make 1.5.1 (too close to release). Have to ask...

On Dec 1, 2010, at 2:12 PM, Jesse Ziser wrote:

> Sorry, one more question: I don't completely understand the version numbering, but can/will this fix go into 1.5.1 at some point? I notice that the trunk is labeled as 1.7.
>
> Thanks again
>
> Jesse Ziser wrote:
>> It turned out I was using development version 1.5.0. After going back to the release version, I found that there was another problem on my end, which had nothing to do with OpenMPI. So thanks for the help; all is well. (And sorry for the belated reply.)
>> Ralph Castain wrote:
>>> After digging around a little, I found that you must be using the OMPI devel trunk as no release version contains this code. I also looked to see why it was done, and found that the concern was with an inadvertent sigpipe that can occur internal to OMPI due to a race condition.
>>>
>>> So I modified the trunk a little. We will ignore the first few sigpipe errors we get, but will then abort with an appropriate error.
>>>
>>> HTH
>>> Ralph
>>>
>>> On Nov 24, 2010, at 5:08 PM, Jesse Ziser wrote:
>>>
>>>> Hello,
>>>>
>>>> I've noticed that OpenMPI does not seem to detect when something downstream of it fails. Specifically, I think it does not handle SIGPIPE or pass it down to its young, but it still prints an error message every time it occurs.
>>>>
>>>> For example, running a command like this:
>>>>
>>>> mpirun -np 1 ./mpi-cat </dev/zero | dd bs=1 count=1 >/dev/null
>>>>
>>>> (where mpi-cat is just a simple program that initializes MPI and then copies its input to its output) hangs after the dd quits, and produces an eternity of repetitions of this error message:
>>>>
>>>> [[35845,0],0] reports a SIGPIPE error on fd 13
>>>>
>>>> I am unsure whether this is the intended behavior, but it certainly seems unfortunate from my persepective. Is there any way to make it exit nicely, preferably with a single error, whenever what it's trying to write to doesn't exist anymore? I think I could even submit a patch to make it quit on SIGPIPE, if it is agreed that that makes sense.
>>>>
>>>> Here's the source for my mpi-cat example:
>>>>
>>>> #include <stdio.h>
>>>>
>>>> #include <mpi.h>
>>>>
>>>> int main (int iArgC, char *apArgV [])
>>>> {
>>>> int iRank;
>>>>
>>>> MPI_Init (&iArgC, &apArgV);
>>>>
>>>> MPI_Comm_rank (MPI_COMM_WORLD, &iRank);
>>>>
>>>> if (iRank == 0)
>>>> {
>>>> while(1)
>>>> if(putchar(getchar()) < 0)
>>>> break;
>>>> }
>>>>
>>>> MPI_Finalize ();
>>>>
>>>> return (0);
>>>> }
>>>>
>>>>
>>>> Thank you,
>>>>
>>>> Jesse Ziser
>>>> Applied Research Laboratories:
>>>> The University of Texas at Austin
>>>> _______________________________________________
>>>> users mailing list
>>>> users_at_[hidden]
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>
>>>
>>> _______________________________________________
>>> users mailing list
>>> users_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users