<meta http-equiv="Content-Type" content="text/html; charset=utf-8">This might be the struct alignment bug I tracked down a few months ago? (Alignment attribute in the wrong place.)<span></span><br><br>On Tuesday, July 26, 2016, Andreas Noack <<a href="mailto:andreasnoackjensen@gmail.com">andreasnoackjensen@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div style="font-size:12.8px">On my El Capitan macbook I get a segfault when running the program below with more than a single process but only when MPICH has been compiled with Clang.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I don't get that good debug info but here is some of what I got</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>(lldb) c</div><div>Process 61129 resuming</div><div>Process 61129 stopped</div><div>* thread #1: tid = 0x32c438, 0x00000003119d0432 libpmpi.12.dylib`MPID_Request_create + 244, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)</div><div>    frame #0: 0x00000003119d0432 libpmpi.12.dylib`MPID_Request_create + 244</div><div>libpmpi.12.dylib`MPID_Request_create:</div><div>->  0x3119d0432 <+244>: movaps %xmm0, 0x230(%rax)</div><div>    0x3119d0439 <+251>: movq   $0x0, 0x240(%rax)</div><div>    0x3119d0444 <+262>: movl   %ecx, 0x210(%rax)</div><div>    0x3119d044a <+268>: popq   %rbp</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">My version of Clang is</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>Apple LLVM version 7.3.0 (clang-703.0.31)</div><div>Target: x86_64-apple-darwin15.6.0</div><div>Thread model: posix</div><div>InstalledDir: /Library/Developer/CommandLineTools/usr/bin</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">and the bug has been confirmed by my colleague who is running Linux and compiling with Clang 3.8. The program runs fine with OpenMPI+Clang.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div>#include <mpi.h></div><div>#include <stdio.h></div><div>#include <stdlib.h></div><div><br></div><div>int main(int argc, char *argv[])</div><div>{</div><div>    MPI_Init(&argc, &argv);</div><div><br></div><div>    MPI_Comm comm = MPI_COMM_WORLD;</div><div>    uint64_t *A, *C;</div><div>    int rnk;</div><div><br></div><div>    MPI_Comm_rank(comm, &rnk);</div><div>    A = calloc(1, sizeof(uint64_t));</div><div>    C = calloc(2, sizeof(uint64_t));</div><div>    A[0] = rnk + 1;</div><div><br></div><div>    MPI_Allgather(A, 1, MPI_UINT64_T, C, 1, MPI_UINT64_T, comm);</div><div><br></div><div>    MPI_Finalize();</div><div>    return 0;</div><div>}</div><div><br></div><div><br><span style="font-size:small">Best regards</span><div style="font-size:small"><br></div><div style="font-size:small">Andreas Noack</div><div style="font-size:small">Postdoctoral Associate</div><div style="font-size:small">Computer Science and Artificial Intelligence Laboratory</div><div style="font-size:small">Massachusetts Institute of Technology</div></div></div></div></div>
</blockquote>