]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
common: seg fault in dapl_evd_wait with multi-thread application using CNO's.
authorArlin Davis <arlin.r.davis@intel.com>
Wed, 18 Nov 2009 17:43:38 +0000 (09:43 -0800)
committerArlin Davis <arlin.r.davis@intel.com>
Wed, 18 Nov 2009 17:43:38 +0000 (09:43 -0800)
If we are dealing with event streams besides a CQ event stream,
be conservative and set producer side locking.  Otherwise, no.
Check for CNO is missing, CNO is not considered CQ event stream.

Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/common/dapl_evd_util.c

index 02909e9ae73194e8feb9eff02556b800bc40a555..cc0aa17c6e0e7ff3d57e772075866265f3ec7c5a 100644 (file)
@@ -159,9 +159,11 @@ dapls_evd_internal_create(DAPL_IA * ia_ptr,
        /*
         * If we are dealing with event streams besides a CQ event stream,
         * be conservative and set producer side locking.  Otherwise, no.
+        * Note: CNO is not considered CQ event stream.
         */
        evd_ptr->evd_producer_locking_needed =
-           !(evd_flags & (DAT_EVD_DTO_FLAG | DAT_EVD_RMR_BIND_FLAG));
+           (!(evd_flags & (DAT_EVD_DTO_FLAG | DAT_EVD_RMR_BIND_FLAG)) ||
+            evd_ptr->cno_ptr);
 
        /* Before we setup any callbacks, transition state to OPEN.  */
        evd_ptr->evd_state = DAPL_EVD_STATE_OPEN;
@@ -646,8 +648,9 @@ dapli_evd_post_event(IN DAPL_EVD * evd_ptr, IN const DAT_EVENT * event_ptr)
        DAT_RETURN dat_status;
        DAPL_CNO *cno_to_trigger = NULL;
 
-       dapl_dbg_log(DAPL_DBG_TYPE_EVD, "%s: Called with event %s\n",
-                    __FUNCTION__, dapl_event_str(event_ptr->event_number));
+       dapl_dbg_log(DAPL_DBG_TYPE_EVD, "%s: %s evd %p state %d\n",
+                    __FUNCTION__, dapl_event_str(event_ptr->event_number), 
+                    evd_ptr, evd_ptr->evd_state);
 
        dat_status = dapls_rbuf_add(&evd_ptr->pending_event_queue,
                                    (void *)event_ptr);