The dciao-kernelstructs experiment does a trace imported by the
DCiAOKernelImporter:
bin/import-trace -t trace.pb -i DCiAOKernelImporter --elf-file app.elf
Pruned by the basic method:
bin/prune-trace
and does CiAO fault injection experiments, where the results are
stored in the database.
Change-Id: I485dc2e5097b3ebaf354241f474ee3d317213707
The wrapper builds a temporary bochsrc and sets an FAIL_STATEDIR
environment variable to a temporary directory. FAIL_ELF_PATH is also
set in regard to the command line interface.
Change-Id: I647c6eb3a91ae22847958ca30ede6e09519fba04
This allows the commandline parameter parser to modify argc, as it finds
arguments for the Fail* client. Additionally argv is correctly null
terminated when removing arguments.
This fixes a bug introduced in eb17e9ef82.
Change-Id: Iabe84530790ecb7c587b0af139127015aad868d5
The DatabaseCampaign interacts with the MySQL tables that are created
by the import-trace and prune-trace tools. It does offer all
unfinished experiment pilots from the database to the
fail-clients. Those clients send back a (by the experiment) defined
protobuf message as a result. The custom protobuf message does have to
need the form:
import "DatabaseCampaignMessage.proto";
message ExperimentMsg {
required DatabaseCampaignMessage fsppilot = 1;
repeated group Result = 2 {
// custom fields
required int32 bitoffset = 1;
optional int32 result = 2;
}
}
The DatabaseCampaignMessage is the pilot identifier from the
database. For each of the repeated result entries a row in a table is
allocated. The structure of this table is constructed (by protobuf
reflection) from the description of the message. Each field in the
Result group becomes a column in the result table. For the given
example it would be:
CREATE TABLE result_ExperimentMessage(
pilot_id INT,
bitoffset INT NOT NULL,
result INT,
PRIMARY_KEY(pilot_id)
)
Change-Id: I28fb5488e739d4098b823b42426c5760331027f8
This allows us to generate prerequisites (traces, state snapshots, memory
maps) in parallel, and without the previous shell script hacks.
Change-Id: I05a0321a794b4033d05eed20f5bffbd1e910cf1b
Without --with-all-libs (as documented in doc/how-to-build.txt), at least
the "nogui" GUI does not work anymore -- the default for headless
experiments.
(Note the UNDEFINED->UNDEF enum rename; this was necessary due to a vga.h
include side-effect in bochs/gui/svga.cc.)
Change-Id: I1bc3208e905783505a35bbc48ff29f00eef599d6
This tool creates the fault-space pruning pilot and group
entries. Those are used by the generic campaign to do fault
experiments.
Currently prune-trace only implements conventional def/use pruning
(--prune-method "basic").
Change-Id: I1dfb431e3b1d3cd2ee891a49a3b6ac01210be11f
It doesn't make sense to override database, hostname or username parameters
coming from ~/.my.cnf with arbitrary own defaults. Instead allow
libmysqlclient to use the builtin default parameter mechanism.
See <https://dev.mysql.com/doc/refman/5.1/en/option-files.html> for what a
~/.my.cnf may look like; example:
[client]
user=hsc
password=secret42
database=fail_demo
Change-Id: I90aadc04375c624d5e906557c8bd4049e5caa17c
Imported and adapted FindProtobuf.cmake from cmake 2.8.9 into the project to
make it build on Debian 6 again.
Change-Id: I4eda087b1757073224defc643dab86d0bd162409
The import tool does support the following import strategies:
- BasicImporter: generates def-use equivalence classes for read and
write memory accesses
- DCiAOKernelImporter: generates equivalence classes for read access in
the ciao kernel space.
Change-Id: I8960561d3e14dcf5dffa3ff7a59b61a5e8f7e719
After each simulator break, T32Tracer retrieves the latest (16)
trace records from the T32. Memory address and value can now
be evaluated easily from the trace record.
TODO:Nevertheless we still have to traverse the trace to
find the instruction causing the access.
After each simulator break, T32Tracer retrieves the latest (16)
trace records from the T32. Memory address and value can now
be evaluated easily from the trace record.
TODO:Nevertheless we still have to traverse the trace to
find the instruction causing the access.
The full-tracing plugin was used in the DSN paper. It additionally
traces the data that was accessed/written on a memory access and the
contents of some CPU registers.
Change-Id: I61f5230699009ce523aba341985b98148160556d
The T32 can simulate bare instruction sets without periphery.
For the Cortex-M3 we have complete NVIC model including Systick Timer.
Currently a simple CiAO can run on the simulator.
TODO:
- Let memlogger log all memory accesses.
- Interact with FailT32 for a complete simulation/FI
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.