1
1

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.
Этот коммит содержится в:
Jeff Squyres 2013-04-25 20:54:25 +00:00
родитель 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;
}