[MPICH2-dev] problem with C++ binding library on IPF
Ryzhykh, Alexey
alexey.ryzhykh at intel.com
Fri Feb 10 07:56:34 CST 2006
Hi,
I am working at Intel Parallel System & Applications group
We faced the problem with using C++ binding library on IPF platforms.
We built mpich2 on Linux EL3.0 by GNU compiler version 3.2.3.
But MPI application was built on EL4.0 by GNU compiler 3.4.3
We got SIGSEGV on the call of static class function
MPI::File::Create_errhandler().
This function is declared in class File as:
static Errhandler Create_errhandler( Errhandler_fn* );
I found that the problem is due to differences in C++ ABI of g++ 3.2.3
and 3.2.4 compilers.
These compilers makes the call of Create_errhandler() in different
convention.
g++ 3.4.3 makes the call of the function with two arguments. First
implicit argument is address of object of class Errhandler.
The second is for dummy argument Errhandler_fn.
g++ 3.2.3 generates the call of this function with only one argument
for passing Errhandler_fn.
The address of Errhandler object is passed through register r8.
I can provide the simple test and detail assembler analysis if you
needed.
The problem disappears when mpich2 and application are built on the same
platform by the same gnu compiler.
The problem is not happen on x86 and x86_64 platforms.
I am interested in your opinion of this problem.
To have two versions of mpich2 compiled by gnu 3.2.3 and gnu 3.2.4 is
not convenient.
With best regards,
Alexey Ryzhykh,
---
Intel, Sarov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mcs.anl.gov/mailman/private/mpich2-dev/attachments/20060210/3d7ceece/attachment.htm>
More information about the mpich2-dev
mailing list