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 <r...@open-mpi.org> wrote:

> Printouts of less than 100 bytes would be unusual...but possible
>
>
> On Wed, Sep 22, 2010 at 8:15 AM, Jeff Squyres <jsquy...@cisco.com> 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
>> > us...@open-mpi.org
>> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>>
>> --
>> Jeff Squyres
>> jsquy...@cisco.com
>> For corporate legal information go to:
>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>>
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>



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

Reply via email to