Don't call ompi_request_test() if the request isn't likely to finish.
Otherwise, we end up recursively calling into the progress functions and corrupting a list that doesn't like to be corrupted. Refs trac:561 This commit was SVN r13138. The following Trac tickets were found above: Ticket 561 --> https://svn.open-mpi.org/trac/ompi/ticket/561
Этот коммит содержится в:
родитель
754042f1fc
Коммит
35c57457c6
@ -24,6 +24,7 @@
|
||||
#include "ompi/mca/osc/osc.h"
|
||||
#include "ompi/win/win.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/request/request.h"
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
extern "C" {
|
||||
@ -189,6 +190,10 @@ int ompi_osc_pt2pt_component_select(struct ompi_win_t *win,
|
||||
|
||||
int ompi_osc_pt2pt_progress(void);
|
||||
|
||||
int ompi_osc_pt2pt_request_test(ompi_request_t ** rptr,
|
||||
int *completed,
|
||||
ompi_status_public_t * status );
|
||||
|
||||
/*
|
||||
* Module interface function types
|
||||
*/
|
||||
|
@ -717,7 +717,7 @@ ompi_osc_pt2pt_component_fragment_cb(struct ompi_osc_pt2pt_buffer_t *pt2pt_buffe
|
||||
|
||||
|
||||
|
||||
static int
|
||||
int
|
||||
ompi_osc_pt2pt_request_test(ompi_request_t ** rptr,
|
||||
int *completed,
|
||||
ompi_status_public_t * status )
|
||||
|
@ -48,7 +48,7 @@ ompi_osc_pt2pt_progress_long(ompi_osc_pt2pt_module_t *module)
|
||||
int ret, completed;
|
||||
next = opal_list_get_next(item);
|
||||
|
||||
ret = ompi_request_test(&(longreq->req_pml_req), &completed, NULL);
|
||||
ret = ompi_osc_pt2pt_request_test(&(longreq->req_pml_req), &completed, NULL);
|
||||
/* BWB - FIX ME - error handling */
|
||||
if (completed > 0) {
|
||||
longreq->req_comp_cb(longreq);
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user