Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] Spawn problem
From: Tim Prins (tprins_at_[hidden])
Date: 2008-04-04 11:07:57


Hi Joao,

Thanks for the bug report! You do not have to call free/disconnect
before MPI_Finalize. If you do not, they will be called automatically.
Unfortunately, there was a bug in the code that did the free/disconnect
automatically. This is fixed in r18079.

Thanks again,

Tim

Joao Vicente Lima wrote:
> Really MPI_Finalize is crashing and calling MPI_Comm_{free,disconnect} works!
> I don't know if the free/disconnect must appear before a MPI_Finalize
> for this case (spawn processes) .... some suggest ?
>
> I use loops in spawn:
> - first for testing :)
> - and second because certain MPI applications don't know in advance
> the number of childrens needed to complete his work.
>
> The spawn works is creat ... I will made other tests.
>
> thanks,
> Joao
>
> On Mon, Mar 31, 2008 at 3:03 AM, Matt Hughes
> <matt.c.hughes+ompi_at_[hidden]> wrote:
>> On 30/03/2008, Joao Vicente Lima <joao.lima.mail_at_[hidden]> wrote:
>> > Hi,
>> > sorry bring this again ... but i hope use spawn in ompi someday :-D
>>
>> I believe it's crashing in MPI_Finalize because you have not closed
>> all communication paths between the parent and the child processes.
>> For the parent process, try calling MPI_Comm_free or
>> MPI_Comm_disconnect on each intercomm in your intercomm array before
>> calling finalize. On the child, call free or disconnect on the parent
>> intercomm before calling finalize.
>>
>> Out of curiosity, why a loop of spawns? Why not increase the value of
>> the maxprocs argument, or if you need to spawn different executables,
>> or use different arguments for each instance, why not
>> MPI_Comm_spawn_multiple?
>>
>> mch
>>
>>
>>
>>
>>
>> >
>> > The execution of spawn in this way works fine:
>> > MPI_Comm_spawn ("./spawn1", MPI_ARGV_NULL, 2, MPI_INFO_NULL, 0,
>> > MPI_COMM_SELF, &intercomm, MPI_ERRCODES_IGNORE);
>> >
>> > but if this code go to a for I get a problem :
>> > for (i= 0; i < 2; i++)
>> > {
>> > MPI_Comm_spawn ("./spawn1", MPI_ARGV_NULL, 1,
>> > MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm[i], MPI_ERRCODES_IGNORE);
>> > }
>> >
>> > and the error is:
>> > spawning ...
>> > child!
>> > child!
>> > [localhost:03892] *** Process received signal ***
>> > [localhost:03892] Signal: Segmentation fault (11)
>> > [localhost:03892] Signal code: Address not mapped (1)
>> > [localhost:03892] Failing at address: 0xc8
>> > [localhost:03892] [ 0] /lib/libpthread.so.0 [0x2ac71ca8bed0]
>> > [localhost:03892] [ 1]
>> > /usr/local/mpi/ompi-svn/lib/libmpi.so.0(ompi_dpm_base_dyn_finalize+0xa3)
>> > [0x2ac71ba7448c]
>> > [localhost:03892] [ 2] /usr/local/mpi/ompi-svn/lib/libmpi.so.0 [0x2ac71b9decdf]
>> > [localhost:03892] [ 3] /usr/local/mpi/ompi-svn/lib/libmpi.so.0 [0x2ac71ba04765]
>> > [localhost:03892] [ 4]
>> > /usr/local/mpi/ompi-svn/lib/libmpi.so.0(PMPI_Finalize+0x71)
>> > [0x2ac71ba365c9]
>> > [localhost:03892] [ 5] ./spawn1(main+0xaa) [0x400ac2]
>> > [localhost:03892] [ 6] /lib/libc.so.6(__libc_start_main+0xf4) [0x2ac71ccb7b74]
>> > [localhost:03892] [ 7] ./spawn1 [0x400989]
>> > [localhost:03892] *** End of error message ***
>> > --------------------------------------------------------------------------
>> > mpirun noticed that process rank 0 with PID 3892 on node localhost
>> > exited on signal 11 (Segmentation fault).
>> > --------------------------------------------------------------------------
>> >
>> > the attachments contain the ompi_info, config.log and program.
>> >
>> > thanks for some check,
>> >
>> > Joao.
>> >
>>
>>
>>> _______________________________________________
>> > 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