Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] function fgets hangs a mpi program when it is used ompi-ps command
From: Matheus Bersot Siqueira Barros (matheusbersotsb_at_[hidden])
Date: 2010-09-23 14:21:52


Jeff and Ralph,

Thank you for your reply.

1) I'm not running on machines with OpenFabrics.

2) In my example, ompi-ps prints a maximum 82 bytes per line. Even so, I
augment to 300 bytes per line to be sure that it is not the problem.

char mystring [300];
...
fgets (mystring , 300 , pFile);

2) When I run ps, it shows just two process: ps and bash.
PID TTY TIME CMD
1961 pts/5 00:00:00 bash
2154 pts/5 00:00:00 ps

But when I run ps -a -l, it appears my program(test.run) and other
processes. I put below just the information related to my program.

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1841 1840 0 80 0 - 18054 pipe_w pts/0 00:00:00 test.run
0 S 1000 1842 1840 0 80 0 - 18053 poll_s pts/0 00:00:00 test.run
0 S 1000 1843 1840 0 80 0 - 18053 poll_s pts/0 00:00:00 test.run
0 S 1000 1844 1840 0 80 0 - 18053 poll_s pts/0 00:00:00 test.run

pipe_s = wait state on read/write against a pipe.

So, with that command I concluded that one mpi process is waiting for the
read of a pipe.

The problem still persists.

Thanks,
Matheus.

On Wed, Sep 22, 2010 at 11:24 AM, Ralph Castain <rhc_at_[hidden]> wrote:

> Printouts of less than 100 bytes would be unusual...but possible
>
>
> On Wed, Sep 22, 2010 at 8:15 AM, Jeff Squyres <jsquyres_at_[hidden]> wrote:
>
>> Are you running on machines with OpenFabrics devices (that Open MPI is
>> using)?
>>
>> Is ompi-ps printing 100 bytes or more?
>>
>> What does ps show when your program is hung?
>>
>>
>>
>> On Sep 17, 2010, at 3:13 PM, Matheus Bersot Siqueira Barros wrote:
>>
>> > Open MPI Version = 1.4.2
>> > OS = Ubuntu 10.04 LTS and CentOS 5.3
>> >
>> > When I run the mpi program below in the terminal, the function fgets
>> hangs.
>> > How do I know it? I do a printf before and later the call of fgets and
>> only the message "before fgets()" is showed.
>> >
>> > However, when I run the same program at Eclipse 3.6 with CDT
>> 7.0.0.201006141710 or using gdb it runs normally.
>> > If you change the command in the function popen to another one(for
>> instance: "ls -l"), it will run correctly.
>> >
>> > I use the following commands to compile and run the program:
>> >
>> > compile : mpicc teste.c -o teste.run
>> >
>> > run : mpirun -np 4 ./teste.run
>> >
>> >
>> > Does anyone know why the program behaves like that?
>> >
>> > Thanks in advance,
>> >
>> > Matheus Bersot.
>> >
>> > MPI_PROGRAM:
>> >
>> > #include <stdio.h>
>> > #include "mpi.h"
>> >
>> > int main(int argc, char *argv[])
>> > {
>> > int rank, nprocs;
>> > FILE * pFile = NULL;
>> > char mystring [100];
>> >
>> > MPI_Init(&argc,&argv);
>> > MPI_Comm_size(MPI_COMM_WORLD,&nprocs);
>> > MPI_Comm_rank(MPI_COMM_WORLD,&rank);
>> >
>> > if(rank == 0)
>> > {
>> > pFile = popen ("ompi-ps" , "r");
>> > if (pFile == NULL) perror ("Error opening file");
>> > else {
>> > while(!feof(pFile))
>> > {
>> > printf("before fgets()\n");
>> > fgets (mystring , 100 , pFile);
>> > printf("after fgets()\n");
>> > puts (mystring);
>> > }
>> > pclose (pFile);
>> > }
>> > }
>> >
>> > MPI_Finalize();
>> > return 0;
>> > }
>> > _______________________________________________
>> > users mailing list
>> > users_at_[hidden]
>> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>>
>> --
>> Jeff Squyres
>> jsquyres_at_[hidden]
>> For corporate legal information go to:
>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>>
>> _______________________________________________
>> 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
>

-- 
-----------------------------------------------------------------
"In moments of crisis, only the inspiration is more important than
knowledge."
(Albert Einstein)