Hey all -
Just a quick heads up about 3 changes I'm planning on committing
tonight (unless someone speaks up to the contrary).
First, I noticed that while we support using Solaris threads to
launch / cancel / etc. threads, we don't use Solaris mutexes for the
back end to our opal_mutex_t. I added the code to do this, and
cleaned up the pthreads / spinlock code just a bit to make it
slightly easier to maintain.
Second, if the pthreads implementation in use supports error checking
mutexes and debugging is enabled, we will use error checking mutexes
instead of normal mutexes. Error checking mutexes are generally
slower than normal mutexes, but provide the ability to detect a
couple of situations we've run into in the past couple months:
calling lock from a thread that already has the lock and calling
unlock from a thread other than the one that locked the mutex. If
either situation is detected, the opal_mutex code will print a
warning and call abort(). With change #3, on Linux a stack trace
will also be displayed.
Third is moving the stacktrace init code from ompi to opal so that
opal and orte processes will also print a stack trace when a process
receives one of the registered signals. I also added SIGABRT to the
list, as it seemed useful to have a stack trace when we called abort().
Open MPI developer