Hello! The man page has rdma_destroy_qp as: #include <rdma/rdma_cma.h> void rdma_destroy_qp (struct rdma_cm_id *id); Note the void return type. Yet the return value section states: Return Value Returns 0 on success, or -1 on error. If an error occurs, errno will be set to indicate the failure reason. Indeed the implementation is written as: void rdma_destroy_qp(struct rdma_cm_id *id) { ibv_destroy_qp(id->qp); id->qp = NULL; ucma_destroy_cqs(id); } I believe rdma_destroy_qp should return an int which propagates the return value of calling ibv_destroy_qp. As a workaround, I just call ibv_destroy_qp directly. Omar