All 10k tests completed successfully. Nysal pinpointed the real problem
behind the deadlocks. :+1:

  George.


On Mon, Nov 9, 2015 at 1:13 PM, Ralph Castain <r...@open-mpi.org> wrote:

> Looking at it, I think I see what was happening. The thread would start,
> but then immediately see that the active flag was false and would exit.
> This left the server without any listening thread - but it wouldn’t detect
> this had happened. It was therefore a race between whether the thread
> checked the flag before the server set it.
>
> Thanks Nysal - I believe this should indeed fix the problem!
>
>
> On Nov 9, 2015, at 9:04 AM, George Bosilca <bosi...@icl.utk.edu> wrote:
>
> Clearly Nyal got a valid point there. I launched a stress test with Nysal
> suggestion in the code, and so far it's up to few hundreds iterations
> without deadlock. I would not claim victory yet, I launched a 10k cycle to
> see where we stand (btw this never passed before).
> I'll let you know the outcome.
>
>   George.
>
>
> On Mon, Nov 9, 2015 at 11:55 AM, Artem Polyakov <artpo...@gmail.com>
> wrote:
>
>>
>>
>> 2015-11-09 22:42 GMT+06:00 Artem Polyakov <artpo...@gmail.com>:
>>
>>> This is the very good point, Nysal!
>>>
>>> This is definitely a problem and I can say even more: avg. 3 from every
>>> 10 tasks was affected by this bug. Once the PR (
>>> https://github.com/pmix/master/pull/8) was applied I was able to run
>>> 100 testing tasks without any hangs.
>>>
>>> Here some more information on my symptoms. I was observing this without
>>> OMPI, just running pmix_client test binary from PMIx test suite with SLURM
>>> PMIx plugin.
>>> Periodicaly application was hanging. Investigation shows that not all
>>> processes are able to initialize correctly.
>>> Here is how such client's backtrace looks like:
>>>
>>
>> P.S. I think that this backtrace may be relevant to George's problem as
>> well. In my case not all of the processes was hanging in the
>> connect_to_server, most of them were able to move forward and reach Fence.
>> George, the backtrace that you've posted was the same on both processes
>> or it was the "random" one from one of them?
>>
>>
>>> (gdb) bt
>>> #0  0x00007f1448f1b7eb in recv () from
>>> /lib/x86_64-linux-gnu/libpthread.so.0
>>> #1  0x00007f144914c191 in pmix_usock_recv_blocking (sd=9,
>>> data=0x7fff367f7c64 "", size=4) at src/usock/usock.c:166
>>> #2  0x00007f1449152d18 in recv_connect_ack (sd=9) at
>>> src/client/pmix_client.c:837
>>> #3  0x00007f14491546bf in usock_connect (addr=0x7fff367f7d60) at
>>> src/client/pmix_client.c:1103
>>> #4  0x00007f144914f94c in connect_to_server (address=0x7fff367f7d60,
>>> cbdata=0x7fff367f7dd0) at src/client/pmix_client.c:179
>>> #5  0x00007f1449150421 in PMIx_Init (proc=0x7fff367f81d0) at
>>> src/client/pmix_client.c:355
>>> #6  0x0000000000401b97 in main (argc=9, argv=0x7fff367f83d8) at
>>> pmix_client.c:62
>>>
>>>
>>> The server-side debug has the following lines at the end of the file:
>>> [cn33:00482] pmix:server register client slurm.pmix.22.0:10
>>> [cn33:00482] pmix:server _register_client for nspace slurm.pmix.22.0
>>> rank 10
>>> [cn33:00482] pmix:server setup_fork for nspace slurm.pmix.22.0 rank 10
>>>
>>> in normal operation the following lines should appear after lines above:
>>> ....
>>> [cn33:00188] listen_thread: new connection: (26, 0)
>>> [cn33:00188] connection_handler: new connection: 26
>>> [cn33:00188] RECV CONNECT ACK FROM PEER ON SOCKET 26
>>> [cn33:00188] waiting for blocking recv of 16 bytes
>>> [cn33:00188] blocking receive complete from remote
>>> ....
>>>
>>> At the client side I see the following lines
>>> cn33:00491] usock_peer_try_connect: attempting to connect to server
>>> [cn33:00491] usock_peer_try_connect: attempting to connect to server on
>>> socket 10
>>> [cn33:00491] pmix: SEND CONNECT ACK
>>> [cn33:00491] sec: native create_cred
>>> [cn33:00491] sec: using credential 1000:1000
>>> [cn33:00491] send blocking of 54 bytes to socket 10
>>> [cn33:00491] blocking send complete to socket 10
>>> [cn33:00491] pmix: RECV CONNECT ACK FROM SERVER
>>> [cn33:00491] waiting for blocking recv of 4 bytes
>>> [cn33:00491] blocking_recv received error 11:Resource temporarily
>>> unavailable from remote - cycling
>>> [cn33:00491] blocking_recv received error 11:Resource temporarily
>>> unavailable from remote - cycling
>>> [... repeated many times ...]
>>>
>>> With the fix for the problem highlighted by Nysal all runs cleanly.
>>>
>>>
>>> 2015-11-09 10:53 GMT+06:00 Nysal Jan K A <jny...@gmail.com>:
>>>
>>>> In listen_thread():
>>>> 194     while (pmix_server_globals.listen_thread_active) {
>>>> 195         FD_ZERO(&readfds);
>>>> 196         FD_SET(pmix_server_globals.listen_socket, &readfds);
>>>> 197         max = pmix_server_globals.listen_socket;
>>>>
>>>> Is it possible that pmix_server_globals.listen_thread_active can be
>>>> false, in which case the thread just exits and will never call accept() ?
>>>>
>>>> In pmix_start_listening():
>>>> 147         /* fork off the listener thread */
>>>> 148         if (0 > pthread_create(&engine, NULL, listen_thread, NULL))
>>>> {
>>>> 149             return PMIX_ERROR;
>>>> 150         }
>>>> 151         pmix_server_globals.listen_thread_active = true;
>>>>
>>>> pmix_server_globals.listen_thread_active is set to true after the
>>>> thread is created, could this cause a race ?
>>>> listen_thread_active might also need to be declared as volatile.
>>>>
>>>> Regards
>>>> --Nysal
>>>>
>>>> On Sun, Nov 8, 2015 at 10:38 PM, George Bosilca <bosi...@icl.utk.edu>
>>>> wrote:
>>>>
>>>>> We had a power outage last week and the local disks on our cluster
>>>>> were wiped out. My tester was in there. But, I can rewrite it after SC.
>>>>>
>>>>>   George.
>>>>>
>>>>> On Sat, Nov 7, 2015 at 12:04 PM, Ralph Castain <r...@open-mpi.org>
>>>>> wrote:
>>>>>
>>>>>> Could you send me your stress test? I’m wondering if it is just
>>>>>> something about how we set socket options
>>>>>>
>>>>>>
>>>>>> On Nov 7, 2015, at 8:58 AM, George Bosilca <bosi...@icl.utk.edu>
>>>>>> wrote:
>>>>>>
>>>>>> I has to postpone this until after SC. However, I ran for 3 days a
>>>>>> stress test of UDS reproducing the opening and sending of data (what 
>>>>>> Ralph
>>>>>> said in his email) and I never could get a deadlock.
>>>>>>
>>>>>>   George.
>>>>>>
>>>>>>
>>>>>> On Sat, Nov 7, 2015 at 11:26 AM, Ralph Castain <r...@open-mpi.org>
>>>>>> wrote:
>>>>>>
>>>>>>> George was looking into it, but I don’t know if he has had time
>>>>>>> recently to continue the investigation. We understand “what” is 
>>>>>>> happening
>>>>>>> (accept sometimes ignores the connection), but we don’t yet know “why”.
>>>>>>> I’ve done some digging around the web, and found that sometimes you can 
>>>>>>> try
>>>>>>> to talk to a Unix Domain Socket too quickly - i.e., you open it and then
>>>>>>> send to it, but the OS hasn’t yet set it up. In those cases, you can 
>>>>>>> hang
>>>>>>> the socket. However, I’ve tried adding some artificial delay, and while 
>>>>>>> it
>>>>>>> helped, it didn’t completely solve the problem.
>>>>>>>
>>>>>>> I have an idea for a workaround (set a timer and retry after
>>>>>>> awhile), but would obviously prefer a real solution. I’m not even sure 
>>>>>>> it
>>>>>>> will work as it is unclear that the server (who is the one hung in 
>>>>>>> accept)
>>>>>>> will break free if the client closes the socket and retries.
>>>>>>>
>>>>>>>
>>>>>>> On Nov 6, 2015, at 10:53 PM, Artem Polyakov <artpo...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hello, is there any progress on this topic? This affects our PMIx
>>>>>>> measurements.
>>>>>>>
>>>>>>> 2015-10-30 21:21 GMT+06:00 Ralph Castain <r...@open-mpi.org>:
>>>>>>>
>>>>>>>> I’ve verified that the orte/util/listener thread is not being
>>>>>>>> started, so I don’t think it should be involved in this problem.
>>>>>>>>
>>>>>>>> HTH
>>>>>>>> Ralph
>>>>>>>>
>>>>>>>> On Oct 30, 2015, at 8:07 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hmmm…there is a hook that would allow the PMIx server to utilize
>>>>>>>> that listener thread, but we aren’t currently using it. Each daemon 
>>>>>>>> plus
>>>>>>>> mpirun will call orte_start_listener, but nothing is currently 
>>>>>>>> registering
>>>>>>>> and so the listener in that code is supposed to just return without
>>>>>>>> starting the thread.
>>>>>>>>
>>>>>>>> So the only listener thread that should exist is the one inside the
>>>>>>>> PMIx server itself. If something else is happening, then that would be 
>>>>>>>> a
>>>>>>>> bug. I can look at the orte listener code to ensure that the thread 
>>>>>>>> isn’t
>>>>>>>> incorrectly starting.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Oct 29, 2015, at 10:03 PM, George Bosilca <bosi...@icl.utk.edu>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Some progress, that puzzles me but might help you understand. Once
>>>>>>>> the deadlock appears, if I manually kill the MPI process on the node 
>>>>>>>> where
>>>>>>>> the deadlock was created, the local orte daemon doesn't notice and will
>>>>>>>> just keep waiting.
>>>>>>>>
>>>>>>>> Quick question: I am under the impression that the issue is not in
>>>>>>>> the PMIX server but somewhere around the listener_thread_fn in
>>>>>>>> orte/util/listener.c. Possible ?
>>>>>>>>
>>>>>>>>   George.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Oct 28, 2015 at 3:56 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Should have also clarified: the prior fixes are indeed in the
>>>>>>>>> current master.
>>>>>>>>>
>>>>>>>>> On Oct 28, 2015, at 12:42 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Nope - I was wrong. The correction on the client side consisted of
>>>>>>>>> attempting to timeout if the blocking recv failed. We then modified 
>>>>>>>>> the
>>>>>>>>> blocking send/recv so they would handle errors.
>>>>>>>>>
>>>>>>>>> So that problem occurred -after- the server had correctly called
>>>>>>>>> accept. The listener code is in
>>>>>>>>> opal/mca/pmix/pmix1xx/pmix/src/server/pmix_server_listener.c
>>>>>>>>>
>>>>>>>>> It looks to me like the only way we could drop the accept
>>>>>>>>> (assuming the OS doesn’t lose it) is if the file descriptor lies 
>>>>>>>>> outside
>>>>>>>>> the expected range once we fall out of select:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>         /* Spin accepting connections until all active listen
>>>>>>>>> sockets
>>>>>>>>>          * do not have any incoming connections, pushing each
>>>>>>>>> connection
>>>>>>>>>          * onto the event queue for processing
>>>>>>>>>          */
>>>>>>>>>         do {
>>>>>>>>>             accepted_connections = 0;
>>>>>>>>>             /* according to the man pages, select replaces the
>>>>>>>>> given descriptor
>>>>>>>>>              * set with a subset consisting of those descriptors
>>>>>>>>> that are ready
>>>>>>>>>              * for the specified operation - in this case, a read.
>>>>>>>>> So we need to
>>>>>>>>>              * first check to see if this file descriptor is
>>>>>>>>> included in the
>>>>>>>>>              * returned subset
>>>>>>>>>              */
>>>>>>>>>             if (0 == FD_ISSET(pmix_server_globals.listen_socket,
>>>>>>>>> &readfds)) {
>>>>>>>>>                 /* this descriptor is not included */
>>>>>>>>>                 continue;
>>>>>>>>>             }
>>>>>>>>>
>>>>>>>>>             /* this descriptor is ready to be read, which means a
>>>>>>>>> connection
>>>>>>>>>              * request has been received - so harvest it. All we
>>>>>>>>> want to do
>>>>>>>>>              * here is accept the connection and push the info
>>>>>>>>> onto the event
>>>>>>>>>              * library for subsequent processing - we don't want
>>>>>>>>> to actually
>>>>>>>>>              * process the connection here as it takes too long,
>>>>>>>>> and so the
>>>>>>>>>              * OS might start rejecting connections due to timeout.
>>>>>>>>>              */
>>>>>>>>>             pending_connection =
>>>>>>>>> PMIX_NEW(pmix_pending_connection_t);
>>>>>>>>>             event_assign(&pending_connection->ev,
>>>>>>>>> pmix_globals.evbase, -1,
>>>>>>>>>                          EV_WRITE, connection_handler,
>>>>>>>>> pending_connection);
>>>>>>>>>             pending_connection->sd =
>>>>>>>>> accept(pmix_server_globals.listen_socket,
>>>>>>>>>                                             (struct
>>>>>>>>> sockaddr*)&(pending_connection->addr),
>>>>>>>>>                                             &addrlen);
>>>>>>>>>             if (pending_connection->sd < 0) {
>>>>>>>>>                 PMIX_RELEASE(pending_connection);
>>>>>>>>>                 if (pmix_socket_errno != EAGAIN ||
>>>>>>>>>                     pmix_socket_errno != EWOULDBLOCK) {
>>>>>>>>>                     if (EMFILE == pmix_socket_errno) {
>>>>>>>>>                         PMIX_ERROR_LOG(PMIX_ERR_OUT_OF_RESOURCE);
>>>>>>>>>                     } else {
>>>>>>>>>                         pmix_output(0, "listen_thread: accept()
>>>>>>>>> failed: %s (%d).",
>>>>>>>>>                                     strerror(pmix_socket_errno),
>>>>>>>>> pmix_socket_errno);
>>>>>>>>>                     }
>>>>>>>>>                     goto done;
>>>>>>>>>                 }
>>>>>>>>>                 continue;
>>>>>>>>>             }
>>>>>>>>>
>>>>>>>>>             pmix_output_verbose(8, pmix_globals.debug_output,
>>>>>>>>>                                 "listen_thread: new connection:
>>>>>>>>> (%d, %d)",
>>>>>>>>>                                 pending_connection->sd,
>>>>>>>>> pmix_socket_errno);
>>>>>>>>>             /* activate the event */
>>>>>>>>>             event_active(&pending_connection->ev, EV_WRITE, 1);
>>>>>>>>>             accepted_connections++;
>>>>>>>>>         } while (accepted_connections > 0);
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Oct 28, 2015, at 12:25 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Looking at the code, it appears that a fix was committed for this
>>>>>>>>> problem, and that we correctly resolved the issue found by Paul. The
>>>>>>>>> problem is that the fix didn’t get upstreamed, and so it was lost the 
>>>>>>>>> next
>>>>>>>>> time we refreshed PMIx. Sigh.
>>>>>>>>>
>>>>>>>>> Let me try to recreate the fix and have you take a gander at it.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Oct 28, 2015, at 12:22 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Here is the discussion - afraid it is fairly lengthy. Ignore the
>>>>>>>>> hwloc references in it as that was a separate issue:
>>>>>>>>>
>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/09/18074.php
>>>>>>>>>
>>>>>>>>> It definitely sounds like the same issue creeping in again. I’d
>>>>>>>>> appreciate any thoughts on how to correct it. If it helps, you could 
>>>>>>>>> look
>>>>>>>>> at the PMIx master - there are standalone tests in the test/simple
>>>>>>>>> directory that fork/exec a child and just do the connection.
>>>>>>>>>
>>>>>>>>> https://github.com/pmix/master
>>>>>>>>>
>>>>>>>>> The test server is simptest.c - it will spawn a single copy of
>>>>>>>>> simpclient.c by default.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Oct 27, 2015, at 10:14 PM, George Bosilca <bosi...@icl.utk.edu>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Interesting. Do you have a pointer to the commit (or/and to the
>>>>>>>>> discussion)?
>>>>>>>>>
>>>>>>>>> I looked at the PMIX code, and I have identified few issues, but
>>>>>>>>> unfortunately none of them seem to fix the problem for good. However, 
>>>>>>>>> now I
>>>>>>>>> need more than 1000 runs to get a deadlock (instead of few tens).
>>>>>>>>>
>>>>>>>>> Looking with "netstat -ax" at the status of the UDS while the
>>>>>>>>> processes are deadlocked, I see 2 UDS with the same name: one from the
>>>>>>>>> server which is in LISTEN state, and one for the client which is 
>>>>>>>>> being in
>>>>>>>>> CONNECTING state (while the client already sent a message in the 
>>>>>>>>> socket and
>>>>>>>>> is now waiting in a blocking receive). This somehow suggest that the 
>>>>>>>>> server
>>>>>>>>> has not yet called accept on the UDS. Unfortunately, there are 3 
>>>>>>>>> threads
>>>>>>>>> all doing different flavors of even_base and select, so I have a hard 
>>>>>>>>> time
>>>>>>>>> tracking the path of the UDS on the server side.
>>>>>>>>>
>>>>>>>>> So in order to validate my assumption I wrote a minimalistic UDS
>>>>>>>>> client and server application and tried different scenarios. The 
>>>>>>>>> conclusion
>>>>>>>>> is that in order to see the same type of output from "netstat -ax" I 
>>>>>>>>> have
>>>>>>>>> to call listen on the server, connect on the client and do not call 
>>>>>>>>> accept
>>>>>>>>> on the server.
>>>>>>>>>
>>>>>>>>> With the same occasion I also confirmed that the UDS are holding
>>>>>>>>> the data sent so there is no need for further synchronization for the 
>>>>>>>>> case
>>>>>>>>> where the data is sent first. We only need to find out how the server
>>>>>>>>> forgets to call accept.
>>>>>>>>>
>>>>>>>>>   George.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Oct 27, 2015 at 7:52 PM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hmmm…this looks like it might be that problem we previously saw
>>>>>>>>>> where the blocking recv hangs in a proc when the blocking send tries 
>>>>>>>>>> to
>>>>>>>>>> send before the domain socket is actually ready, and so the send 
>>>>>>>>>> fails on
>>>>>>>>>> the other end. As I recall, it was something to do with the 
>>>>>>>>>> socketoptions -
>>>>>>>>>> and then Paul had a problem on some of his machines, and we backed 
>>>>>>>>>> it out?
>>>>>>>>>>
>>>>>>>>>> I wonder if that’s what is biting us here again, and what we need
>>>>>>>>>> is to either remove the blocking send/recv’s altogether, or figure 
>>>>>>>>>> out a
>>>>>>>>>> way to wait until the socket is really ready.
>>>>>>>>>>
>>>>>>>>>> Any thoughts?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Oct 27, 2015, at 4:11 PM, George Bosilca <bosi...@icl.utk.edu>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> It appear the branch solve the problem at least partially. I
>>>>>>>>>> asked one of my students to hammer it pretty badly, and he reported 
>>>>>>>>>> that
>>>>>>>>>> the deadlocks still occur. He also graciously provided some 
>>>>>>>>>> stacktraces:
>>>>>>>>>>
>>>>>>>>>> #0  0x00007f4bd5274aed in nanosleep () from /lib64/libc.so.6
>>>>>>>>>> #1  0x00007f4bd52a9c94 in usleep () from /lib64/libc.so.6
>>>>>>>>>> #2  0x00007f4bd2e42b00 in OPAL_PMIX_PMIX1XX_PMIx_Fence
>>>>>>>>>> (procs=0x0, nprocs=0, info=0x7fff3c561960,
>>>>>>>>>>     ninfo=1) at src/client/pmix_client_fence.c:100
>>>>>>>>>> #3  0x00007f4bd306e6d2 in pmix1_fence (procs=0x0, collect_data=1)
>>>>>>>>>> at pmix1_client.c:306
>>>>>>>>>> #4  0x00007f4bd57d5cc3 in ompi_mpi_init (argc=3,
>>>>>>>>>> argv=0x7fff3c561ea8, requested=3,
>>>>>>>>>>     provided=0x7fff3c561d84) at runtime/ompi_mpi_init.c:644
>>>>>>>>>> #5  0x00007f4bd5813399 in PMPI_Init_thread (argc=0x7fff3c561d7c,
>>>>>>>>>> argv=0x7fff3c561d70, required=3,
>>>>>>>>>>     provided=0x7fff3c561d84) at pinit_thread.c:69
>>>>>>>>>> #6  0x0000000000401516 in main (argc=3, argv=0x7fff3c561ea8) at
>>>>>>>>>> osu_mbw_mr.c:86
>>>>>>>>>>
>>>>>>>>>> And another process:
>>>>>>>>>>
>>>>>>>>>> #0  0x00007f7b9d7d8bdc in recv () from /lib64/libpthread.so.0
>>>>>>>>>> #1  0x00007f7b9b0aa42d in
>>>>>>>>>> opal_pmix_pmix1xx_pmix_usock_recv_blocking (sd=13, 
>>>>>>>>>> data=0x7ffd62139004 "",
>>>>>>>>>>     size=4) at src/usock/usock.c:168
>>>>>>>>>> #2  0x00007f7b9b0af5d9 in recv_connect_ack (sd=13) at
>>>>>>>>>> src/client/pmix_client.c:844
>>>>>>>>>> #3  0x00007f7b9b0b085e in usock_connect (addr=0x7ffd62139330) at
>>>>>>>>>> src/client/pmix_client.c:1110
>>>>>>>>>> #4  0x00007f7b9b0acc24 in connect_to_server
>>>>>>>>>> (address=0x7ffd62139330, cbdata=0x7ffd621390e0)
>>>>>>>>>>     at src/client/pmix_client.c:181
>>>>>>>>>> #5  0x00007f7b9b0ad569 in OPAL_PMIX_PMIX1XX_PMIx_Init
>>>>>>>>>> (proc=0x7f7b9b4e9b60)
>>>>>>>>>>     at src/client/pmix_client.c:362
>>>>>>>>>> #6  0x00007f7b9b2dbd9d in pmix1_client_init () at
>>>>>>>>>> pmix1_client.c:99
>>>>>>>>>> #7  0x00007f7b9b4eb95f in pmi_component_query
>>>>>>>>>> (module=0x7ffd62139490, priority=0x7ffd6213948c)
>>>>>>>>>>     at ess_pmi_component.c:90
>>>>>>>>>> #8  0x00007f7b9ce70ec5 in mca_base_select
>>>>>>>>>> (type_name=0x7f7b9d20e059 "ess", output_id=-1,
>>>>>>>>>>     components_available=0x7f7b9d431eb0,
>>>>>>>>>> best_module=0x7ffd621394d0, best_component=0x7ffd621394d8,
>>>>>>>>>>     priority_out=0x0) at mca_base_components_select.c:77
>>>>>>>>>> #9  0x00007f7b9d1a956b in orte_ess_base_select () at
>>>>>>>>>> base/ess_base_select.c:40
>>>>>>>>>> #10 0x00007f7b9d160449 in orte_init (pargc=0x0, pargv=0x0,
>>>>>>>>>> flags=32) at runtime/orte_init.c:219
>>>>>>>>>> #11 0x00007f7b9da4377a in ompi_mpi_init (argc=3,
>>>>>>>>>> argv=0x7ffd621397f8, requested=3,
>>>>>>>>>>     provided=0x7ffd621396d4) at runtime/ompi_mpi_init.c:488
>>>>>>>>>> #12 0x00007f7b9da81399 in PMPI_Init_thread (argc=0x7ffd621396cc,
>>>>>>>>>> argv=0x7ffd621396c0, required=3,
>>>>>>>>>>     provided=0x7ffd621396d4) at pinit_thread.c:69
>>>>>>>>>> #13 0x0000000000401516 in main (argc=3, argv=0x7ffd621397f8) at
>>>>>>>>>> osu_mbw_mr.c:86
>>>>>>>>>>
>>>>>>>>>>   George.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Oct 27, 2015 at 2:36 PM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I haven’t been able to replicate this when using the branch in
>>>>>>>>>>> this PR:
>>>>>>>>>>>
>>>>>>>>>>> https://github.com/open-mpi/ompi/pull/1073
>>>>>>>>>>>
>>>>>>>>>>> Would you mind giving it a try? It fixes some other race
>>>>>>>>>>> conditions and might pick this one up too.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Oct 27, 2015, at 10:04 AM, Ralph Castain <r...@open-mpi.org>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Okay, I’ll take a look - I’ve been chasing a race condition that
>>>>>>>>>>> might be related
>>>>>>>>>>>
>>>>>>>>>>> On Oct 27, 2015, at 9:54 AM, George Bosilca <bosi...@icl.utk.edu>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> No, it's using 2 nodes.
>>>>>>>>>>>   George.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Oct 27, 2015 at 12:35 PM, Ralph Castain <
>>>>>>>>>>> r...@open-mpi.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Is this on a single node?
>>>>>>>>>>>>
>>>>>>>>>>>> On Oct 27, 2015, at 9:25 AM, George Bosilca <
>>>>>>>>>>>> bosi...@icl.utk.edu> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I get intermittent deadlocks wit the latest trunk. The smallest
>>>>>>>>>>>> reproducer is a shell for loop around a small (2 processes) short 
>>>>>>>>>>>> (20
>>>>>>>>>>>> seconds) MPI application. After few tens of iterations the 
>>>>>>>>>>>> MPI_Init will
>>>>>>>>>>>> deadlock with the following backtrace:
>>>>>>>>>>>>
>>>>>>>>>>>> #0  0x00007fa94b5d9aed in nanosleep () from /lib64/libc.so.6
>>>>>>>>>>>> #1  0x00007fa94b60ec94 in usleep () from /lib64/libc.so.6
>>>>>>>>>>>> #2  0x00007fa94960ba08 in OPAL_PMIX_PMIX1XX_PMIx_Fence
>>>>>>>>>>>> (procs=0x0, nprocs=0, info=0x7ffd7934fb90,
>>>>>>>>>>>>     ninfo=1) at src/client/pmix_client_fence.c:100
>>>>>>>>>>>> #3  0x00007fa9498376a2 in pmix1_fence (procs=0x0,
>>>>>>>>>>>> collect_data=1) at pmix1_client.c:305
>>>>>>>>>>>> #4  0x00007fa94bb39ba4 in ompi_mpi_init (argc=3,
>>>>>>>>>>>> argv=0x7ffd793500a8, requested=3,
>>>>>>>>>>>>     provided=0x7ffd7934ff94) at runtime/ompi_mpi_init.c:645
>>>>>>>>>>>> #5  0x00007fa94bb77281 in PMPI_Init_thread
>>>>>>>>>>>> (argc=0x7ffd7934ff8c, argv=0x7ffd7934ff80, required=3,
>>>>>>>>>>>>     provided=0x7ffd7934ff94) at pinit_thread.c:69
>>>>>>>>>>>> #6  0x000000000040150f in main (argc=3, argv=0x7ffd793500a8) at
>>>>>>>>>>>> osu_mbw_mr.c:86
>>>>>>>>>>>>
>>>>>>>>>>>> On my machines this is reproducible at 100% after anywhere
>>>>>>>>>>>> between 50 and 100 iterations.
>>>>>>>>>>>>
>>>>>>>>>>>>   Thanks,
>>>>>>>>>>>>     George.
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> devel mailing list
>>>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>>>> Subscription:
>>>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>>>> Link to this post:
>>>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18280.php
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> devel mailing list
>>>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>>>> Subscription:
>>>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>>>> Link to this post:
>>>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18281.php
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> devel mailing list
>>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>>> Link to this post:
>>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18282.php
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> devel mailing list
>>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>>> Link to this post:
>>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18284.php
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> devel mailing list
>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>> Link to this post:
>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18292.php
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> devel mailing list
>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>> Link to this post:
>>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18294.php
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> devel mailing list
>>>>>>>>> de...@open-mpi.org
>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>> Link to this post:
>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18302.php
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> devel mailing list
>>>>>>>>> de...@open-mpi.org
>>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>> Link to this post:
>>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18309.php
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> devel mailing list
>>>>>>>> de...@open-mpi.org
>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>> Link to this post:
>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18320.php
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> devel mailing list
>>>>>>>> de...@open-mpi.org
>>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>> Link to this post:
>>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/10/18323.php
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> С Уважением, Поляков Артем Юрьевич
>>>>>>> Best regards, Artem Y. Polyakov
>>>>>>> _______________________________________________
>>>>>>> devel mailing list
>>>>>>> de...@open-mpi.org
>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>> Link to this post:
>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18334.php
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> devel mailing list
>>>>>>> de...@open-mpi.org
>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>> Link to this post:
>>>>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18335.php
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> devel mailing list
>>>>>> de...@open-mpi.org
>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>> Link to this post:
>>>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18336.php
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> devel mailing list
>>>>>> de...@open-mpi.org
>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>> Link to this post:
>>>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18337.php
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> devel mailing list
>>>>> de...@open-mpi.org
>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>> Link to this post:
>>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18340.php
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> devel mailing list
>>>> de...@open-mpi.org
>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>> Link to this post:
>>>> http://www.open-mpi.org/community/lists/devel/2015/11/18341.php
>>>>
>>>
>>>
>>>
>>> --
>>> С Уважением, Поляков Артем Юрьевич
>>> Best regards, Artem Y. Polyakov
>>>
>>
>>
>>
>> --
>> С Уважением, Поляков Артем Юрьевич
>> Best regards, Artem Y. Polyakov
>>
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post:
>> http://www.open-mpi.org/community/lists/devel/2015/11/18345.php
>>
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2015/11/18346.php
>
>
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2015/11/18347.php
>

Reply via email to