If the library that implements the generalized request maintains its
own copy of the request handle, and not a pointer to the application's
handle, this should not be a problem. For example, an application
program calls MPI_REQUEST_FREE, which results in the application's
request handle being set to null. MPI_GREQUEST_COMPLETE will be called
by some other entity---the library that implements the GR. The
library's handle will not be set to null. It can call
MPI_GREQUEST_COMPLETE with this handle, only after which will the free_fn
be called and the request really be freed.
Rajeev