Hello, I am debugging a crash with OMPI 1.3.3 BTL over Open-MX. It's crashing will trying to store incoming data in the OMPI receive buffer, but OMPI seems to have already freed the buffer even if the MX request is not complete yet. It looks like this is caused by mca_btl_mx_prepare_dst() posting the receive and then calling mx_forget() immediately. The OMPI r17452 by George introduced this. Commit log says "Improve the performance of the MX BTL. Correct the fake PUT protocol." I don't understand how this works.
mx_forget() is supposed to be used when you don't care anymore about a message or a request, not really for performance purpose. It should not help much in "normal" cases since you usually need to know when the receive request is completed before you can actually use the received data. And completion order is not guaranteed anyway, so it's hard to guess when a request will complete if mx_forget() disabled the actual completion notification. Are you calling mx_forget() because you have another way to know when the message will be received? If so, how? When does OMPI free the fragment that is passed to mx_irecv in mca_btl_mx_prepare_dst? thanks, Brice