Commit Graph
32 Commits
Author SHA1 Message Date
Christian Dietrich f2e76bfd70 bochs-runner: pass on additional arguments to fail-client
Change-Id: Icae29d819e4cbebc26e441a6daf74f9abafdb3ad
2013-09-19 14:56:49 +02:00
Christian DietrichandGerrit Code Review ee6ffef828 Merge "experiments: new cored-voter experiment" 2013-09-18 16:07:14 +02:00
Christian Dietrich 844e15293d experiments: new cored-voter experiment
The experiment does support
- 1 bit faults in registers/memory/IP
- 2 bit faults in registers (all)
- n bit faults monte-carlo in registers

Change-Id: Ifdd7df6ec4bc88cfc75391b5e19e0d648fd0d087
2013-09-11 13:47:47 +02:00
Christian Dietrich 04e96b977c tools/import-trace: add --do-not-split option to RegisterImporter
The RegisterImporter splits each register into 1 byte chunks. The
--do-not-split flag prohibits this splitting. Be aware, that def/use
pruning won't work correctly in mixed-width cases (EAX/AX/AH/AL).

Change-Id: Ifa1930bdd9f317a6fd3ae50c4ff3cffc97504640
2013-09-11 10:30:01 +02:00
Christian Dietrich d26fc28fa4 cpn/database: include data_width in the fsppilot during prune step
During the prune step the data_width of the injected location was not
propagated before. It is now stored in fsppilot (database layout change!) and
sent in the fsppilot protobuf message.

Change-Id: I0562f6fc8957adea0f8a9fb63469ca5e3f4b7b2d
2013-09-11 10:27:04 +02:00
Christian Dietrich 6c9bb21ab3 import-trace: introduce RandomJumpImporter
The random jump importer defines trace events, that indicate all
possible jumps into a specific instruction range. The region where
jumps should start can be defined by a memory map given with
--jump-from. For each instruction declared in that memory range, all
possible jumps to a memory region specified by with --jump-to are
inserted. The target of the jump is saved in the data_address
field. So all database tools work as expected.

for each event E \in region(--jump-from):
    foreach Instruction in region(--jump-to):
         insert_trace(injection_instr = E.IP(), data_address = Instruction.addr)

Change-Id: Ie163968acae47fc6c946fc77774c47ee07950bab
2013-07-05 10:19:58 +02:00
Christian Dietrich f47d50b182 import-trace: introduce RegisterImporter
The RegisterImporter disassembles the binary and adds a trace event
for each byte read or written from register. The register number (Fail
Register Numbers are used) and the offset within the register are
encoded within the trace event.

Change-Id: I2d2fd720841fedeeff5f28b64f24ec5f6d2ea0c3
2013-07-05 10:19:58 +02:00
Christian Dietrich bedb9c2eb2 import-trace: introduce InstructionImporter
The InstructionImporter does disassemble the binary and generate read
traces for every instruction byte executed.

Change-Id: I6b8697c711c009e106ed733c74c6ff8f9bbf8ac5
2013-07-05 10:19:58 +02:00
Christian Dietrich 9843b520c1 dbcampaign: select multiple variants/benchmark pairs
The variant/benchmark selection now can use SQL LIKE syntax, all unfinished
pilots from all selected variants are sent to the clients. E.g.:

./cored-voter-server  -v x86-cored-voter -b simple-% -p basic

Will select the fsppilots in the variants:

- x86-cored-voter/simple-ip/basic
- x86-cored-voter/simple-instr/basic

The variant and benchmark information is now sent within the
fsppilot.

Change-Id: I287bfcddc478d0b79d89e156d6f5bf8188674532
2013-07-05 10:19:58 +02:00
Christian Dietrich 40f610b536 util: integrate LLVM-based Disassembler
The LLVM Disassembler infrastructure can be used to analyze many kinds
of ELF Binaries. For every instruction the used and defined registers
is available as well as information about the instruction itself.

Change-Id: I9cc89b6c116ceff7b5143a6f179ae31c4e994d2d
2013-07-05 10:19:57 +02:00
Christian Dietrich c74c8a2e30 dbutils: enable variant and benchmark selection with LIKE
This does enable % patterns in variant and benchmark selections, like
it is already implemented in the prune-tool.

Change-Id: I7497bfd588d6ffdf851d767bafc660f4872ae92f
2013-07-03 13:43:54 +02:00
Christian Dietrich 12aec4c1a4 import-trace: add --no-delete command line option
Change-Id: I1b100c2b11d28396b024478dc1d1af6118c644d6
2013-07-03 13:19:31 +02:00
Christian Dietrich be8d5edbc3 import-trace: reorder functionality in importer
BasicImporter is renamed to MemoryImporter. An alias for BasicImporter
in the cmdline interface will remain. The MemoryImporter does now only
handle memory and IP events. The simulation time, dynamic instruction
count and handling of open ECs is moved to Importer.

Change-Id: I04eb0fd4b52fbf5b0ca9ab97778a62130cb626ee
2013-07-03 13:19:12 +02:00
Christian Dietrich 81fe0ea628 import-trace: dropped DCiAOKernelImporter
This importer is so similar to the basic importer, that it can be
dropped. The current state was used in the SOBRES 2013 Paper.

Change-Id: Ibed1af6e1a72286500d42e83e594557d6dcf3803
2013-07-03 13:17:53 +02:00
Christian DietrichandGerrit Code Review cfa311979e Merge "sal/bochs: force eflags after writing" 2013-07-03 13:08:39 +02:00
Christian Dietrich 9b124fac8f sal/bochs: force eflags after writing
The correct flags accessor methods should be used to write the flags register,
since values (especially the arithmetic flags) might be cached.

Change-Id: I338927cfdd1f111966be539668914c9256b54c8f
2013-06-21 11:04:34 +02:00
Christian Dietrich d9c9b43102 dciao-kernelstructs: several experiment fixes.
The previous fault injection experiment was kind of bullshit. This one
is better in several ways:

- sanity check at injection time (correct IP)
- correct counting of kernel_transistions
- copy whole activation scheme

Change-Id: I014eea4d6fe103bc02ffd7bbca95dc56a1a4d9ea
2013-05-29 16:18:22 +02:00
Christian Dietrich 6789a313a9 DCiAOKernelImporter: different injection semantic.
Is now very similar to normal importer, and may be deleted in the future, but
at the moment, this should be merged, since it is the importer used in the
sobres-2013 paper.

This changes the MySQL Schema. instr1_absolute was introduced.

Change-Id: I1bc2919bd14c335beca6d586b7cc0f80767ad7d5
2013-05-29 16:17:03 +02:00
Christian DietrichandGerrit Code Review b720985f62 Merge changes I7607911c,I6241ea2d,Ib94d6370
* changes:
  experiments/kesorefs: convert to DatabaseCampaign
  ElfReader: Add support for getting a section iterator
  Typos in BochsController.hpp fixed
2013-04-28 12:55:14 +02:00
Christian Dietrich 923ba362fa experiments/kesorefs: convert to DatabaseCampaign
Change-Id: I7607911c28ffb2427681db241ac721f1ae2c002a
2013-04-28 12:52:17 +02:00
Christian Dietrich 2753a165ba ElfReader: Add support for getting a section iterator
Change-Id: I6241ea2de9da1a1e709fae6374df4fc06ef26aaa
2013-04-28 12:51:59 +02:00
Christian Dietrich c24ed774b0 experiments/dciao-kernelstructs: new database driven experiment for DCiAO
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
2013-04-03 10:39:51 +02:00
Christian Dietrich bd8636b0e8 bochs-experiment-runner: small wrapper for running fail-clients
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
2013-04-03 10:39:51 +02:00
Christian Dietrich 87b11968c7 DatabaseProtobufAdapter: remove invalid include
The include was an development artifact and caused compilation errors in most
cases.

Change-Id: I6ecf8c1faa52cf6f854112e19aa1f8556cf09930
2013-04-03 10:37:13 +02:00
Christian Dietrich f18cddc63c DatabaseCampaign: abstract campain for interaction with MySQL Database
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
2013-04-02 09:52:42 +02:00
Christian Dietrich 3a5dc285ab tools/prune-trace: fault-space pruning tool
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
2013-03-26 16:19:05 +01:00
Christian DietrichandGerrit Code Review 1e5581644c Merge "tools/import-trace: new tool to import traces into MySQL database" 2013-03-22 11:48:11 +01:00
Christian Dietrich e3c633c248 tools/import-trace: new tool to import traces into MySQL database
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
2013-03-22 11:41:25 +01:00
Christian DietrichandGerrit Code Review 4e8098a636 plugin/tracing: merge full-tracing plugin into generic version
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
2013-03-21 17:11:51 +01:00
Christian Dietrich b491fe8b7a experiment: generic tracing experiment 2013-03-11 15:29:26 +01:00
Christian Dietrich ad3c185b61 core/util: Added CommandLine interface (for bochs) 2013-03-11 15:29:26 +01:00
Christian Dietrich c1f32f5a98 ElfReader: add some convenience functions 2013-03-11 15:29:25 +01:00