[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