This commit will apply cleanly to the v1.1 branch, and should
be moved over once I get someone to verify it.
The problem is outlined in the bug. The fix was to move the
setting of the app context index (idx) before we put it in the
GPR so that it is propogated to the gpr.
The reason this hasn't bitten us before is because we init
app->idx to 0, which is true most of the time. Except that is
when MPI_Comm_spawn_multiple in which we put in more than
one app context, thus care about correct indexing.
This was causing down the line memory corruption by overrunning
the mapping array. This commit also puts in a check to make
sure that we error out if we ever try to do that again.
This commit was SVN r10380.
done with the same values on 2 different types return the same value. The 2
types belong to 2 differents classes: contiguous and sparse. With this test
I simulate the behavior of the buffered send, where the sender send the
data from the user attached buffer (which is contiguous) and the receiver
receive it in a sparse type.
This commit was SVN r10372.
correctly compute the final checksum. This is not a bug in the case where
both the sender and the receiver execute EXACTLY the same checksum
computations but is definitively a problem if not (such as the buffered case).
This commit was SVN r10367.
with the last one was that the resized function only set the soft lb and ub
markers without actually moving the usefull data up to the correct
displacement. Using a struct instead solve the problem. Anyway, as defined
in the MPI standard we have to set the lower bound and the upper bound
of the new type to the correct values too.
This commit was SVN r10328.
- add more comments on the pack and unpack functions.
- remove all pack/unpack versions that are not used anymore.
- other various cleanups.
- update the safeguard macro (which compute theboundaries of the
datatype in order to protect us from accessing memory locations
outside of the data).
- for the contiguous (with or without gaps) pack and unpack correctly
compute the starting point.
This commit was SVN r10327.
- Added some basic flow control to limit number of posted sends.
- Merged endpoint send/recv lock into single endpoint lock.
- Set the LMR triplet length in the send path, not at allocation time.
This has to be done because upper layers might send less than the
amount allocated.
- Alter the tie-breaker if statement protecting the second call
to dat_ep_connect(). The logic was reversed compared to the tie-
breaker for the first dat_ep_connect(), making it possible for
3 or more processes to form a deadlock loop.
- Some asserts were added for debugging purposes.. leaving them
in place for now.
This commit was SVN r10317.
MPI_FILE_GET_INFO should return the info currently in use, not the one
used to create the file handle. ROMIO adds a bunch of keys, so you can
create a file handle with MPI_INFO_NULL and have MPI_FILE_GET_INFO return
something totatlly different.
This commit was SVN r10312.
opal_free_list_item_t and everyone was just treating them as
opal_list_itme_t structures, which meant that they were overwriting the
user_data memory anyway. So make an opal_free_lsit_item_t be just a
opal_list_item_t.
Also, opal_free_list_item_t wasn't a proper class, which made it slightly
less than nice to use, so fix that part up. Also update the
opal_free_list_t to use the class macros, so that it is more obvious we
actually do the right thing.
This commit was SVN r10304.
Sender can receive and complete PUT request before it gets completion on the first rndv packet. senreq struct may be reused for the next MPI_Send and unexpected completion mess up the things. I sometimes got SEGV and sometimes data corruption.
This commit was SVN r10301.