grequestx: retain request object until it is removed from the list
Signed-off-by: Joseph Schuchart <schuchart@hlrs.de>
Этот коммит содержится в:
родитель
b3f0bc5490
Коммит
4a39a34bab
@ -47,6 +47,7 @@ static int grequestx_progress(void) {
|
||||
OPAL_THREAD_LOCK(&lock);
|
||||
if (REQUEST_COMPLETE(&request->greq_base)) {
|
||||
opal_list_remove_item(&requests, &request->greq_base.super.super);
|
||||
OBJ_RELEASE(request);
|
||||
completed++;
|
||||
}
|
||||
}
|
||||
@ -73,6 +74,11 @@ int ompi_grequestx_start(
|
||||
}
|
||||
((ompi_grequest_t *)*request)->greq_poll.c_poll = gpoll_fn;
|
||||
|
||||
/* prevent the request from being destroyed upon completion,
|
||||
* we first have to remove it from the list of active requests
|
||||
*/
|
||||
OBJ_RETAIN(((ompi_grequest_t *)*request));
|
||||
|
||||
if (!requests_initialized) {
|
||||
OBJ_CONSTRUCT(&requests, opal_list_t);
|
||||
OBJ_CONSTRUCT(&lock, opal_mutex_t);
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user