I’m trying to understand some recent coverity warnings, and I confess I’m a 
little stumped - so I figured I’d ask out there and see if anyone has a 
suggestion. This is in the PMIx repo, but it is reported as well in OMPI (down 
in opal/mca/pmix/pmix2x/pmix). The warnings all take the following form:

________________________________________________________________________________________________________
*** CID 145810:  Concurrent data access violations  (MISSING_LOCK)
/src/client/pmix_client.c: 451 in PMIx_Init()
445         /* wait for the data to return */
446         PMIX_WAIT_THREAD(&cb.lock);
447         rc = cb.status;
448         PMIX_DESTRUCT(&cb);
449     
450         if (PMIX_SUCCESS == rc) {
>>>    CID 145810:  Concurrent data access violations  (MISSING_LOCK)
>>>    Accessing "pmix_globals.init_cntr" without holding lock 
>>> "pmix_mutex_t.m_lock_pthread". Elsewhere, "pmix_globals_t.init_cntr" is 
>>> accessed with "pmix_mutex_t.m_lock_pthread" held 10 out of 11 times.
451             pmix_globals.init_cntr++;
452         } else {
453             PMIX_RELEASE_THREAD(&pmix_global_lock);
454             return rc;
455         }
456         PMIX_RELEASE_THREAD(&pmix_global_lock);

Now the odd thing is that the lock is in fact being held - it gets released 5 
lines lower down. However, the lock was taken nearly 100 lines above this point.

I’m therefore inclined to think that the lock somehow “slid” outside of 
Coverity’s analysis window and it therefore thought (erroneously) that the lock 
isn’t being held. Has anyone else seen such behavior?

Ralph

_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

Reply via email to