Updated the manual, corrected some terms and found a bug
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1970 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -11,7 +11,7 @@ using namespace std;
|
|||||||
using namespace fail;
|
using namespace fail;
|
||||||
|
|
||||||
char const * const results_csv = "l4sys.csv";
|
char const * const results_csv = "l4sys.csv";
|
||||||
char const *l4sys_output_result_strings[] = { "Unknown", "Done", "Incomplete", "Timeout", "Wrong output", "Error" };
|
char const *l4sys_output_result_strings[] = { "Unknown", "No effect", "Incomplete execution", "Crash", "Silent data corruption", "Error" };
|
||||||
char const *l4sys_output_experiment_strings[] = { "Unknown", "GPR Flip", "RAT Flip", "IDC Flip", "ALU Instr Flip" };
|
char const *l4sys_output_experiment_strings[] = { "Unknown", "GPR Flip", "RAT Flip", "IDC Flip", "ALU Instr Flip" };
|
||||||
char const *l4sys_output_register_strings[] = { "Unknown", "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI" };
|
char const *l4sys_output_register_strings[] = { "Unknown", "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI" };
|
||||||
|
|
||||||
|
|||||||
@ -448,6 +448,11 @@ bool L4SysExperiment::run() {
|
|||||||
// do the logging
|
// do the logging
|
||||||
logInjection();
|
logInjection();
|
||||||
} else if (exp_type == param->msg.RATFLIP) {
|
} else if (exp_type == param->msg.RATFLIP) {
|
||||||
|
/*
|
||||||
|
TODO: provide information on the affected register
|
||||||
|
in param->msg.register and on its destination in
|
||||||
|
param->msg.details
|
||||||
|
*/
|
||||||
ud_type_t which = UD_NONE;
|
ud_type_t which = UD_NONE;
|
||||||
unsigned rnd = 0;
|
unsigned rnd = 0;
|
||||||
Udis86 udis(injection_ip);
|
Udis86 udis(injection_ip);
|
||||||
|
|||||||
Binary file not shown.
@ -206,6 +206,101 @@ exactly one experiment and exits. To complete your campaign,
|
|||||||
you should use the \texttt{client.sh} script in the \texttt{scripts}
|
you should use the \texttt{client.sh} script in the \texttt{scripts}
|
||||||
subdirectory of Fail*.
|
subdirectory of Fail*.
|
||||||
|
|
||||||
|
\section{Format of the result file}
|
||||||
|
|
||||||
|
When the campaign is finished, the campaign server generates a report
|
||||||
|
file (by default called \texttt{l4sys.csv}) in a primitive CSV dialect.
|
||||||
|
The only syntax rules are that the columns are separated by commas,
|
||||||
|
that the respective data sets are separated by line breaks (\verb+\n+),
|
||||||
|
and that the cells do not contain line breaks or commas.
|
||||||
|
|
||||||
|
This section lists and describes the columns in the report generated by
|
||||||
|
the campaign server, from left to right.
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item \verb+exp_type+\\
|
||||||
|
Names the experiment that generated the return data.
|
||||||
|
If it is none of the following, a writing error occurred:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Unknown
|
||||||
|
\item GPR Flip
|
||||||
|
\item RAT Flip
|
||||||
|
\item IDC Flip
|
||||||
|
\item ALU Instr Flip
|
||||||
|
\end{itemize}
|
||||||
|
For \emph{Unknown}, a debug report should be provided.
|
||||||
|
If not, something went completely wrong, and you should
|
||||||
|
check the logs.
|
||||||
|
\item \verb+injection_ip+\\
|
||||||
|
The instruction pointer of the fault injection
|
||||||
|
in lowercase hexadecimal notation.
|
||||||
|
Note that the injection happens right \emph{before} this
|
||||||
|
instruction.
|
||||||
|
\item \verb+register+\\
|
||||||
|
When the fault injection experiment affects a general purpose register,
|
||||||
|
it is listed here. This column should have one of the following values;
|
||||||
|
if it does not, a writing error occurred:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Unknown
|
||||||
|
\item EAX
|
||||||
|
\item ECX
|
||||||
|
\item EDX
|
||||||
|
\item EBX
|
||||||
|
\item ESP
|
||||||
|
\item EBP
|
||||||
|
\item ESI
|
||||||
|
\item EDI
|
||||||
|
\end{enumerate}
|
||||||
|
\item \verb+instr_offset+\\
|
||||||
|
The offset of the executed instruction, relative to either all executed
|
||||||
|
instructions or to all listed instructions in case you applied
|
||||||
|
a filter (see above). This offset includes multiple runs of the same
|
||||||
|
instruction.
|
||||||
|
For example, this is useful when you have loops in you program and
|
||||||
|
need a rough idea how many runs your loop had executed until
|
||||||
|
the injection.
|
||||||
|
\item \verb+injection_bit+\\
|
||||||
|
The bit at which the injection was performed. This value is
|
||||||
|
only used in GPRFlip and IDCFlip. GPRFlip inverts the bit at
|
||||||
|
position \verb+injection_bit+ in the register, counted from the right.
|
||||||
|
IDCFlip inverts the bit at position \verb+injection_bit+
|
||||||
|
of the current instruction, counted from the left.
|
||||||
|
\item \verb+resulttype+\\
|
||||||
|
The result of the fault injection.
|
||||||
|
This column should have one of the following values;
|
||||||
|
if it does not, a writing error occurred:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Unknown
|
||||||
|
\item No effect
|
||||||
|
\item Incomplete execution
|
||||||
|
\item Crash
|
||||||
|
\item Silent data corruption
|
||||||
|
\item Error
|
||||||
|
\end{enumerate}
|
||||||
|
\item \verb+resultdata+\\
|
||||||
|
The meaning of this field can vary for each experiment. At the moment,
|
||||||
|
all of the experiments use it to store the last instruction
|
||||||
|
pointer of the emulator (in decimal notation).
|
||||||
|
This information can be used to determine when a fault
|
||||||
|
turned into a failure.
|
||||||
|
\item \verb+output+\\
|
||||||
|
The output on the EIA-232 serial line generated by the workload
|
||||||
|
program. Undisplayable or reserved characters are escaped in a
|
||||||
|
C conformant octal manner (e.g. \verb+\033+ for the Escape character).
|
||||||
|
\item \verb+details+\\
|
||||||
|
This column provides various details on the experiment run,
|
||||||
|
which may help to
|
||||||
|
trace errors or to reconstruct the injected fault.
|
||||||
|
ALUInstrFlip uses this column to
|
||||||
|
provide the opcode of the new instruction.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\section{Known bugs}
|
||||||
|
|
||||||
|
At the moment, RATFlip does not provide enough information
|
||||||
|
to reconstruct the injected fault
|
||||||
|
(see also the \texttt{TODO} in \texttt{experiment.cc}).
|
||||||
|
|
||||||
\section{To Be Continued}
|
\section{To Be Continued}
|
||||||
|
|
||||||
This is everything I consider important so far. If you still encounter
|
This is everything I consider important so far. If you still encounter
|
||||||
|
|||||||
Reference in New Issue
Block a user