I have no idea how they did it, but someone managed to write a test that circled around and around and eventually reached this point with a NULL pointer. So protect against that possibility.
This commit was SVN r32434.
Этот коммит содержится в:
родитель
846326af7f
Коммит
8ea576c870
@ -52,13 +52,22 @@ static void msg_match_recv(orte_rml_posted_recv_t *rcv, bool get_all);
|
|||||||
void orte_rml_base_post_recv(int sd, short args, void *cbdata)
|
void orte_rml_base_post_recv(int sd, short args, void *cbdata)
|
||||||
{
|
{
|
||||||
orte_rml_recv_request_t *req = (orte_rml_recv_request_t*)cbdata;
|
orte_rml_recv_request_t *req = (orte_rml_recv_request_t*)cbdata;
|
||||||
orte_rml_posted_recv_t *post = req->post, *recv;
|
orte_rml_posted_recv_t *post, *recv;
|
||||||
orte_ns_cmp_bitmask_t mask = ORTE_NS_CMP_ALL | ORTE_NS_CMP_WILD;
|
orte_ns_cmp_bitmask_t mask = ORTE_NS_CMP_ALL | ORTE_NS_CMP_WILD;
|
||||||
|
|
||||||
opal_output_verbose(5, orte_rml_base_framework.framework_output,
|
opal_output_verbose(5, orte_rml_base_framework.framework_output,
|
||||||
"%s posting recv",
|
"%s posting recv",
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
|
||||||
|
|
||||||
|
if (NULL == req) {
|
||||||
|
/* this can only happen if something is really wrong, but
|
||||||
|
* someone managed to get here in a bizarre test */
|
||||||
|
opal_output(0, "%s CANNOT POST NULL RML RECV REQUEST",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
post = req->post;
|
||||||
|
|
||||||
/* if the request is to cancel a recv, then find the recv
|
/* if the request is to cancel a recv, then find the recv
|
||||||
* and remove it from our list
|
* and remove it from our list
|
||||||
*/
|
*/
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user