As initially reported by Eric Chamberland in
http://www.open-mpi.org/community/lists/users/2013/04/21689.php, the assert in opal_datatype_is_contiguous_memory_layout() is not always correct -- he supplied a test case where it was not valid, essentially: 1. Call MPI_Type_create_indexed_block(0, ..., &newtype) and commit newtype 1. Call MPI_Type_create_resized(newtype, 0, nonzero_value, &resized) and commit resized 1. Call MPI_File_set_view with resized This will eventually call opal_datatype_is_contiguous_memory_layout(), and the assert will fail. After some consultation with George, it was determined that the assert() is basically good, but it needs to also check for (count != 0). This commit was SVN r28398.
Этот коммит содержится в:
родитель
b73f25e839
Коммит
5bf9fffacd
@ -217,7 +217,7 @@ opal_datatype_is_contiguous_memory_layout( const opal_datatype_t* datatype, int3
|
||||
{
|
||||
if( !(datatype->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS) ) return 0;
|
||||
if( (count == 1) || (datatype->flags & OPAL_DATATYPE_FLAG_NO_GAPS) ) return 1;
|
||||
assert( (OPAL_PTRDIFF_TYPE)datatype->size != (datatype->ub - datatype->lb) );
|
||||
assert( (OPAL_PTRDIFF_TYPE)datatype->size != (datatype->ub - datatype->lb) && count != 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user