It turned out that memchecker break our usage of weak symbols. The problem is that the definition of the weak symbol should always appear before the first use of the function. There are two MPI functions that are used in the memchecker.h file: MPI_Type_get_contents and MPI_Type_get_envelope. The memchecker.h header get included before we get a chance to define the #pragma weak, and the symbols are incorrectly marked in the resulting object file.

Additionally, I remember that we decided not to use any MPI level functions inside the Open MPI library. I guess the correct way of doing this is to use directly the functions provided by the datatype engine ompi_ddt_get_args once with which set to zero (to retrieve the values i.e. similar to MPI_Type_get_envelope) and once with "which" set to one (to retrieve the content i.e. similar to MPI_Type_get_content).

Moreover, there is a better way to have the memchecker_call function implemented by taking advantage of the data-type engine. It will make memchecker really dependent of Open MPI ... but I guess not more than it is right now :) Ping me if you are interested in exploring this option.

  Thanks,
    george.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to