Hi,
I'm trying to compile OpenMPI 1.0.2 on a Sparc/Solaris machine
with Sun Studio 11 compilers in 64 bit addressing mode.
The options I've used to configure OpenMPI are:
CC = cc
CXX = CC
F77 = f90
FC = f90
CFLAGS = -g -xarch=v9b
CXXFLAGS = -g -xarch=v9b
FFLAGS = -I. -dalign -xarch=v9b
FCFLAGS = -I. -dalign -xarch=v9b
Configuring and compiling OpenMPI works fine.
But then a simple MPI program crashes with SIGBUS somewhere
in MPI_Init with a message:
Signal:10 info.si_errno:0(Error 0) si_code:1(BUS_ADRALN)
Failing at addr:ffffffff56400aac
*** End of error message ***
Here is the output of a debugging session with dbx:
$ dbx a.out
=> run
Reading mca_paffinity_solaris.so
Reading mca_ns_proxy.so
Reading mca_ns_replica.so
Reading mca_rml_oob.so
Reading mca_oob_tcp.so
Reading mca_gpr_null.so
Reading mca_gpr_proxy.so
Reading mca_gpr_replica.so
Reading mca_sds_env.so
Reading mca_sds_pipe.so
Reading mca_sds_seed.so
Reading mca_sds_singleton.so
Reading mca_sds_slurm.so
Reading mca_rmgr_proxy.so
Reading mca_rmgr_urm.so
Reading mca_rds_hostfile.so
Reading mca_rds_resfile.so
Reading mca_ras_dash_host.so
Reading mca_ras_hostfile.so
Reading mca_ras_localhost.so
Reading mca_ras_slurm.so
Reading mca_rmaps_round_robin.so
Reading mca_pls_daemon.so
Reading mca_pls_fork.so
Reading mca_pls_proxy.so
Reading mca_pls_rsh.so
Reading mca_pls_slurm.so
Reading mca_iof_proxy.so
Reading mca_iof_svc.so
Reading mca_allocator_basic.so
Reading mca_allocator_bucket.so
Reading mca_rcache_rb.so
Reading mca_mpool_sm.so
Reading libmca_common_sm.so.0.0.0
Reading mca_pml_ob1.so
Reading mca_pml_teg.so
Reading mca_bml_r2.so
Reading mca_btl_self.so
Reading mca_btl_sm.so
Reading mca_btl_tcp.so
Reading mca_ptl_self.so
Reading mca_ptl_sm.so
Reading mca_ptl_tcp.so
Reading mca_coll_basic.so
Reading mca_coll_self.so
Reading mca_coll_sm.so
t@1 (l@1) signal BUS (invalid address alignment) in
mca_allocator_bucket_alloc_align at line 206 in file
"allocator_bucket_alloc.c"
206 chunk = segment_header->first_chunk = first_chunk;
=> where
current thread: t@1
=>[1] mca_allocator_bucket_alloc_align(mem = 0x10014e6b0, size = 96U,
alignment = 128U, registration = (nil)), line 206 in
"allocator_bucket_alloc.c"
[2] mca_allocator_bucket_alloc_wrapper(allocator = 0x10014e6b0, size
= 96U, align = 128U, registration = (nil)), line 102 in "allocator_bucket.c"
[3] mca_mpool_sm_alloc(mpool = 0x10017deb0, size = 96U, align = 128U,
flags = 0, registration = (nil)), line 62 in "mpool_sm_module.c"
[4] mca_btl_sm_add_procs_same_base_addr(btl = 0xffffffff77815548,
nprocs = 1U, procs = 0x100170df0, peers = 0x100170dd0, reachability =
0xffffffff7fffd768), line 472 in "btl_sm.c"
[5] mca_bml_r2_add_procs(nprocs = 1U, procs = 0x100170df0,
bml_endpoints = 0x100170e10, reachable = 0xffffffff7fffd768), line 218
in "bml_r2.c"
[6] mca_pml_ob1_add_procs(procs = 0x100170d90, nprocs = 1U), line 130
in "pml_ob1.c"
[7] ompi_mpi_init(argc = 1, argv = 0xffffffff7fffdc78, requested = 0,
provided = 0xffffffff7fffd994), line 445 in "ompi_mpi_init.c"
[8] PMPI_Init(argc = 0xffffffff7fffdbbc, argv = 0xffffffff7fffdbb0),
line 71 in "pinit.c"
[9] main(argc = 1, argv = 0xffffffff7fffdc78), line 25 in "mpi_rank.c"
=> print segment_header
segment_header = 0xffffffff56000aac
=> print sizeof( segment_header->first_chunk)
sizeof(segment_header->first_chunk) = 8
=> print &segment_header->first_chunk
&segment_header->first_chunk = 0xffffffff56000aac
=> print mem_options->get_mem_fn
mem_options->get_mem_fn = 0xffffffff78303428 =
&mca_common_sm_mmap_seg_alloc()
BTW: there is no any problems with 32-bit installation
of OpenMPI on Sparc.
Regards
Alex Spiegel