It seems the change suggested by Nysal also allows me to run into the next 
problem ;-)

Mark

> On 09 Nov 2015, at 20:19 , George Bosilca <bosi...@icl.utk.edu> wrote:
> 
> 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
> 
> _______________________________________________
> 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/18348.php

Reply via email to