27f3d417ca
The problem is that the waiting thread is cycling using OMPI_LAZY_WAIT_FOR_COMPLETION so it can exercise opal_progress. This probably isn't as critical for the modex step, but definitely necessary for the barrier at the end of mpi_init. The problem this creates is that the lazy macro exits as soon as "active" becomes false, and then we destruct the lock. However, wakeup_thread sets "active" to false - and then calls the condition broadcast to wakeup any waiting threads. So there is a race condition between that broadcast and the lock destruct. Add OPAL_ACQUIRE_OBJECT and OPAL_POST_OBJECT memory barriers to help protect against thread race conditions on some platforms Signed-off-by: Ralph Castain <rhc@open-mpi.org> |
||
---|---|---|
.. | ||
pmix | ||
autogen.subdirs | ||
common_sym_whitelist.txt | ||
configure.m4 | ||
help-pmix-pmix3x.txt | ||
Makefile.am | ||
pmix3x_client.c | ||
pmix3x_component.c | ||
pmix3x_local.c | ||
pmix3x_server_north.c | ||
pmix3x_server_south.c | ||
pmix3x.c | ||
pmix3x.h |