Project

General

Profile

Bug #1104

AMPI instances may change if migrated while suspended

Added by Sam White about 3 years ago. Updated almost 2 years ago.

Status:
Merged
Priority:
Low
Assignee:
Category:
AMPI
Target version:
Start date:
06/16/2016
Due date:
% Done:

0%


Description

getAmpiInstance() is used throughout AMPI to get a pointer to a local chare array element. An ampi thread can be migrated while suspended (look for calls to suspend, block, blockOnRecv, or yield), so this pointer needs to be refreshed after all cases where a thread suspends (for platforms where we migrate stacks without Isomalloc heaps).

The following commit fixes blockOnRecv for this, but we need to systematically check that functions that use block/suspend/yield or functions further up the stack (that use ampi::recv, ampi::probe, or {IReq,SReq,IATAReq}::wait) are always fetching a new instance pointer using a communicator after possibly blocking.

https://charm.cs.illinois.edu/gerrit/#/c/1272/

History

#1 Updated by Sam White almost 3 years ago

  • Subject changed from AMPI instances may change if migrated while suspend to AMPI instances may change if migrated while suspended

#2 Updated by Sam White almost 3 years ago

Fixes a couple newly created instances of this bug here: https://charm.cs.illinois.edu/gerrit/#/c/1812/

Still need to do a more systematic review of all places in AMPI where we suspend...

#3 Updated by Sam White over 2 years ago

  • Target version changed from 6.8.0 to 6.8.1
  • Priority changed from Normal to Low

I think we have fixed all or almost all instances of this bug, but it is definitely something to keep an eye on since it is an easy thing to break in AMPI when making changes.

#4 Updated by Sam White almost 2 years ago

  • Target version changed from 6.8.1 to 6.9.0

#5 Updated by Sam White almost 2 years ago

  • Target version changed from 6.9.0 to 6.8.1
  • Status changed from New to Merged

The above patches have fixed all known instances of this.

Also available in: Atom PDF