OMP and OMPI use OpenMP locks incorrectly
In sion_paropen_omp
and sion_paropen_ompi
, user defined locks based on OpenMP's omp_lock_t
are registered via sion_lock_register_lock_callbacks
. The lock instance is initialized in a global variable and while the access is "protected" against data races by a master
construct, no effort is made to protect against repeated initialization. (And also omp_destroy_lock
is never called.) As a consequence, any program that calls paropen_omp
or paropen_ompi
more than once does not conform to the OpenMP specification.