Commit Graph

26 Commits

Author SHA1 Message Date
6d4dfeb913 shutdown cleanups revisited
This change became necessary as we observed weird fail-client SIGSEGV
crashes with both Bochs and Gem5 backends and different experiments.

Some Fail* components are instantiated statically: the
SimulatorController instance "simulator", containing the
ListenerManager and the CoroutineManager, and the active
ExperimentFlow subclass(es)
(experiments/instantiate-experiment*.ah.in).  The experiment(s) is
registered as an active flow in the CoroutineManager at startup.

As plugins (which are ExperimentFlows themselves) are often created on
an experiment's stack, ExperimentFlows deregister themselves on
destruction (e.g., when leaving the plugin variable's scope).  The
core problem is, that the creation and destruction order of statically
instantiated objects depends on the link order; if the experiment is
destroyed after the CoroutineManager, its automatic self-deregistering
feature talks to the smoking ruins of the latter.

This change removes all static instantiations of ExperimentFlow and
replaces them with constructions on the heap.  Additionally it makes
sure that the CoroutineManager recognizes that a shutdown is in
progress, and refrains from touching potentially already destroyed
data structures when a (mistakenly globally instantiated)
ExperimentFlow deregisters in this case.

Change-Id: I8a7d42fb141222cd2cce6040ab1a01f9de61be24
2013-09-04 10:13:48 +02:00
b37a475dfd campaign-controlled experiments depend on fail-comm library
An experiment talking to a campaign server via the JobClient/JobServer
interface needs the FailControlMessage.proto compiler to run before the
experiment is compiled.  A dependency on fail-comm ensures this.
2013-03-19 22:21:42 +01:00
hsc
5135c79c05 TimerListener: microsecond granularity (ms is too coarse)
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1952 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-11-23 15:35:08 +00:00
hsc
163be81874 rampage: final experiment parameters, for the records
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1872 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-10-31 15:07:01 +00:00
hsc
a911ebb353 Revert "explicit aspect activation"
Unfortunately, this does not (yet) work as advertised.  I need to fight another
round of CMake battles before retrying.  Reverting to previous state for now.

This reverts r1753.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1767 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-10-19 09:45:00 +00:00
hsc
a29ad39f5e explicit aspect activation
ag++ is now called with a list of currently active aspect headers
(ag++ -a aspect1.ah -a aspect2.ah ...).  This resolves several problems at
once:
 -  Build directories may be positioned arbitrarily now, they need not be
    a subdirectory of the project anymore.
 -  Multiple build directories can coexist within the project tree.  Before
    this commit, the generated instantiate-*.ah aspect headers disturbed
    neighboring build trees.
 -  Due to this, the regression test should be runnable much more easily
    now.
 -  The build time was reduced by an average of about 10%.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1753 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-10-17 15:22:23 +00:00
hsc
65eb44a746 workaround for experiment.hpp including generated header
If an experiment's class definition (experiment.hpp) contains a member of
a generated type (which is the common case for protobuf messages), it needs
to include a generated header.  In order to instantiate the experiment in
a SimulatorController::initExperiments() hook aspect, the aspect needs to
include the experiment's class definition -- and indirectly the generated
protobuf header.  As the build system does not know about this dependency,
building SimulatorController.cc fails regularly, because the header is not
generated timely.

This commit works around this (currently only for the RAMpage experiment)
by delegating experiment instantiation to a separate compilation unit,
removing the need to include any headers in the instantiation aspect.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1691 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-25 15:52:45 +00:00
hsc
0783931bf6 RAMpage campaign: update for 2G experiments
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1679 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-23 17:28:13 +00:00
hsc
7ffd6611d3 RAMpage experiment: allow more than one empty test cycle
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1678 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-23 17:28:10 +00:00
hsc
d983aecf73 added missing dependencies on protobuf library
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1672 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-20 17:22:05 +00:00
hsc
6785b3199a RAMpage campaign: bugfix: detail description buffer too small
... for one single experiment with weird output.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1667 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-20 17:19:43 +00:00
hsc
74e75da8d6 RAMpage campaign: run one experiment for every 4k page
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1666 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-20 17:19:41 +00:00
hsc
f1bb6d9853 RAMpage experiment: result type IDs fixed
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1655 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 20:39:53 +00:00
hsc
d263b33019 RAMpage experiment: parameter messages use unsigned integers
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1654 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:22 +00:00
hsc
ec601e2891 RAMpage campaign: reuse already existing results
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1653 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:20 +00:00
hsc
7c48c3e35c RAMpage experiment: test whether the failing PFN was listed
+minor logging changes and comments

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1652 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:17 +00:00
hsc
8180047d01 RAMpage experiment: distinguish right/wrong PFN
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1651 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:14 +00:00
hsc
f2c7680d47 RAMpage experiment: measure experiment time
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1650 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:11 +00:00
hsc
dbd4216f56 RAMpage experiment: campaign
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1649 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:03:08 +00:00
hsc
5c967a73d4 RAMpage experiment: FI debug output
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1648 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-14 16:02:57 +00:00
hsc
c52988ea70 RAMpage experiment: basic client-side functionality complete
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1644 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-13 23:17:44 +00:00
hsc
55b94e9e17 RAMpage experiment: parameter message overhaul
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1643 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-13 21:27:16 +00:00
hsc
69934c7eef RAMpage experiment: output state machine in place
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1642 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-13 21:27:13 +00:00
hsc
4886d8250d RAMpage experiment now utilizes serial I/O and timers
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1640 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-13 20:08:45 +00:00
hsc
f795bf63c4 qemu: IOPortListener
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1622 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-12 16:05:18 +00:00
hsc
095adbc7e5 RAMpage FI experiment, WIP
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1621 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
2012-09-12 14:14:05 +00:00