Bug #700: Make the user-facing CkExit() function idempotent77/2377/5
commit67aa76d3b7e425b58954c334b320cf90e763411b
authorPhil Miller <mille121@illinois.edu>
Mon, 10 Apr 2017 22:20:21 +0000 (10 17:20 -0500)
committerMichael Robson <mprobson@illinois.edu>
Thu, 13 Apr 2017 17:26:43 +0000 (13 12:26 -0500)
tree0c2a3d46045ec97d4794769939a07406173c5a1d
parent400488388a0f073f880b0d94bfc7de80e029db14
Bug #700: Make the user-facing CkExit() function idempotent

User code could get into trouble by having multiple dynamic calls to
CkExit(). This could arise in applications like state-space search,
where any object finding one of many solutions might call it. It could
also arise in other structures as well. When this happened, modules
that ran analysis and cleanup code at shutdown would be
short-circuited, and unpredictable results would ensue.

The CkExit() call itself was made idempotent by setting and checking a
flag indicating that the exit process was already in progress. Rather
than calling the same user-facing CkExit() again, modules with
exit-time operations now use a separate function, CkContinueExit(), to
advance the exit process.

Change-Id: I61652ae52b2059ea302c085c1391b4cecf9dd019
doc/charm++/utilities.tex
src/ck-core/init.C
src/ck-core/init.h
src/ck-cp/controlPoints.C
src/ck-cp/controlPoints.h
src/ck-perf/trace-Tau.C
src/ck-perf/trace-controlPoints.C
src/ck-perf/trace-projections.C
src/ck-perf/trace-simple.C
src/ck-perf/trace-summary.C
src/ck-pics/picsautoperf.C