84b79dbf59
A bus error occurs in sm OSC under the following conditions. - sparc64 or any other architectures which need strict alignment. - `MPI_WIN_POST` or `MPI_WIN_START` is called for a window created by sm OSC. - The communicator size is odd and greater than 3. The lines 283-285 in current `ompi/mca/osc/sm/osc_sm_component.c` has the following code. ```c module->global_state = (ompi_osc_sm_global_state_t *) (module->segment_base); module->node_states = (ompi_osc_sm_node_state_t *) (module->global_state + 1); module->posts[0] = (uint64_t *) (module->node_states + comm_size); ``` The size of `ompi_osc_sm_node_state_t` is multiples of 4 but not multiples of 8. So if `comm_size` is odd, `module->posts[0]` does not aligned to 8. This causes a bus error when accessing `module->posts[i][j]`. This patch fixes the alignment of `module->posts[0]` by setting `module->posts[0]` first. |
||
---|---|---|
.. | ||
attribute | ||
class | ||
communicator | ||
contrib | ||
datatype | ||
debuggers | ||
dpm | ||
errhandler | ||
etc | ||
file | ||
group | ||
include | ||
info | ||
mca | ||
message | ||
mpi | ||
mpiext | ||
op | ||
patterns | ||
peruse | ||
proc | ||
request | ||
runtime | ||
tools | ||
win | ||
Makefile.am |