diff --git a/chapters/04_methodology/04_02_farm_model.tex b/chapters/04_methodology/04_02_farm_model.tex index a348314..26bff7a 100644 --- a/chapters/04_methodology/04_02_farm_model.tex +++ b/chapters/04_methodology/04_02_farm_model.tex @@ -94,6 +94,7 @@ where \(\mathbf{1}\{o_{c,b} = o\}\) is the indicator function, which equals one In terms of \Gls{fail}'s database, this corresponds to summing \code{t.time2 - t.time1 + 1} after joining the trace intervals to their \gls{pilot} results and grouping them by outcome. The join accounts for the individual injected bits, so no additional factor for the bit width is required in the sum. } +\todo[inline]{Don't put this in a footnote, put it in controlling what data gets extracted from the experiments} Weighted outcome totals are reported separately for each fault category, execution mode and injection location (memory, registers or instruction-pointer). Outcome shares describe the composition of each variant's fault space, while absolute totals show differences in vulnerability caused by executaion duration and memory footprint. diff --git a/chapters/04_methodology/04_03_result_filtering.tex b/chapters/04_methodology/04_03_result_filtering.tex index be86bfe..f1fd37f 100644 --- a/chapters/04_methodology/04_03_result_filtering.tex +++ b/chapters/04_methodology/04_03_result_filtering.tex @@ -6,4 +6,10 @@ \section{Result Filtering}\label{sec:resultfiltering} +To analyse specific facets of a system under fault-injection, parts of the observed outcomes and generated measures can be excluded from evaluations. +Experiments in this thesis aim to characterize program behavior under transient fault conditions regarding its execution mode, so additional overhead caused by, e.g., \Gls{wamr} runtime components is included in the analysis. +Overhead introduced solely by fault-injection instrumentation is excluded, it is an artifact of the measurement process. + +\todo[inline]{Depending on what I do in the evaluations, this needs expansion} + \end{document} diff --git a/chapters/05_experiment_setup/05_03_workload_structure.tex b/chapters/05_experiment_setup/05_03_workload_structure.tex index 1b9b39d..a53d023 100644 --- a/chapters/05_experiment_setup/05_03_workload_structure.tex +++ b/chapters/05_experiment_setup/05_03_workload_structure.tex @@ -71,9 +71,12 @@ To circumvent this, \Gls{wamr}'s native function invocation mechanism can be use This registration populates a lookup table that maps the native function pointers to their names, so that \Gls{aot} programs can call \Gls{wamr}'s internal \code{aot\_invoke\_native} and interpreted programs can call \code{wasm\_interp\_call\_func\_native} to invoke those functions. This indirection happens implicitly, on the application level no special steps need to be taken, functions can be called by their registered names. - To be compatible with the native function registration mechanism, functions need to accept the \Gls{wasm} execution environment as an argument (see \autoref{lst:wamrnativefunctions}). +It is important to consider that this native call mechanism introduces additional overhead that provides additional attack surface during fault-injection. +The return from the \code{fail\_start\_trace} call, the entry into the \code{fail\_stop\_trace} call and the entireties of any other marker calls within the traced region are susceptible to faults unintended in the experiment design: the source code instrumentation should only steer the fault-injection process, not interact with the workload execution itself. +How to counteract this limitation is described later, in \autoref{sec:resultfiltering} and \autoref{sec:resultextractionandqueries}. + \subsubsection{Wasm Module Instantiation and Execution}\label{sssec:wamrmoduleexecution} To load the workload's \Gls{wasm} module and run it, a series of steps need to be executed: @@ -85,12 +88,12 @@ To load the workload's \Gls{wasm} module and run it, a series of steps need to b \item Call the exported entry function (\code{wasm\_runtime\_call\_wasm}) \end{enumerate} -In this thesis, compiled \Gls{wasm} modules are converted to C-style arrays using \code{xxd} and embedded into the program's source text. -This way, file access can be avoided and the module is loaded by simply passing a pointer to the correct function. -A simplified module call sequence is shown in \autoref{lst:wamrmodulecall}. - \begin{codeblock}[label=lst:wamrmodulecall]{Calling a \Gls{wasm} module from C.}{C++} \inputminted{cpp}{listings/wamrmodulecall.cpp} \end{codeblock} +In this thesis, compiled \Gls{wasm} modules are converted to C-style arrays using \code{xxd} and embedded into the program's source text. +This way, file access can be avoided and the module is loaded by simply passing a pointer to the correct function. +A simplified module call sequence is shown in \autoref{lst:wamrmodulecall}. + \end{document} diff --git a/chapters/05_experiment_setup/05_06_results_filtering.tex b/chapters/05_experiment_setup/05_06_results_filtering.tex index b82e5be..5b70003 100644 --- a/chapters/05_experiment_setup/05_06_results_filtering.tex +++ b/chapters/05_experiment_setup/05_06_results_filtering.tex @@ -4,7 +4,7 @@ \begin{document} -\section{Controlling What Data Gets Extracted From The Experiments} +\section{Result Extraction and Database Queries}\label{sec:resultextractionandqueries} \begin{itemize} \item What queries are run? diff --git a/chapters/0A_compilation_options/0A_00_compilation_options.tex b/chapters/0A_compilation_options/0A_00_compilation_options.tex new file mode 100644 index 0000000..6436621 --- /dev/null +++ b/chapters/0A_compilation_options/0A_00_compilation_options.tex @@ -0,0 +1,10 @@ +%! TeX program = lualatex +%! TeX root = ../../thesis.tex +\documentclass[../../thesis.tex]{subfiles} + +\begin{document} + +% \addchap{Compilation Options}\label{ch:compilationoptions} +\chapter{Compilation Options}\label{ch:compilationoptions} + +\end{document} diff --git a/chapters/0A_results/0A_00_results.tex b/chapters/0B_results/0B_00_results.tex similarity index 76% rename from chapters/0A_results/0A_00_results.tex rename to chapters/0B_results/0B_00_results.tex index 01a4817..371ed14 100644 --- a/chapters/0A_results/0A_00_results.tex +++ b/chapters/0B_results/0B_00_results.tex @@ -4,7 +4,7 @@ \begin{document} -% \addchap{Examples}\label{ch:examples} +% \addchap{Experiment Results}\label{ch:experimentresults} \chapter{Experiment Results}\label{ch:experimentresults} \end{document} diff --git a/chapters/0B_sanity/0B_00_sanity_checks.tex b/chapters/0C_sanity/0C_00_sanity_checks.tex similarity index 100% rename from chapters/0B_sanity/0B_00_sanity_checks.tex rename to chapters/0C_sanity/0C_00_sanity_checks.tex diff --git a/chapters/0B_sanity/figures/example.svg b/chapters/0C_sanity/figures/example.svg similarity index 100% rename from chapters/0B_sanity/figures/example.svg rename to chapters/0C_sanity/figures/example.svg diff --git a/chapters/0B_sanity/figures/heatmap2.svg b/chapters/0C_sanity/figures/heatmap2.svg similarity index 100% rename from chapters/0B_sanity/figures/heatmap2.svg rename to chapters/0C_sanity/figures/heatmap2.svg diff --git a/chapters/0B_sanity/listings/example.cpp b/chapters/0C_sanity/listings/example.cpp similarity index 100% rename from chapters/0B_sanity/listings/example.cpp rename to chapters/0C_sanity/listings/example.cpp diff --git a/thesis.tex b/thesis.tex index df9ddf7..fd8ac17 100644 --- a/thesis.tex +++ b/thesis.tex @@ -55,10 +55,13 @@ \appendix % \pagenumbering{Roman} -\subfile{chapters/0A_results/0A_00_results.tex} +\subfile{chapters/0A_compilation_options/0A_00_compilation_options.tex} \cleardoublepage% -\subfile{chapters/0B_sanity/0B_00_sanity_checks.tex} +\subfile{chapters/0B_results/0B_00_results.tex} +\cleardoublepage% + +\subfile{chapters/0C_sanity/0C_00_sanity_checks.tex} \cleardoublepage% \end{document} diff --git a/wordcounts.csv b/wordcounts.csv index 77d7353..bca8598 100644 --- a/wordcounts.csv +++ b/wordcounts.csv @@ -105,3 +105,16 @@ date,wordcount 2026-09-12T13:27:44+02:00,10236 2026-09-12T13:28:26+02:00,10237 2026-09-12T13:58:35+02:00,10237 +2026-09-12T14:31:54+02:00,10252 +2026-09-12T14:32:24+02:00,10254 +2026-09-12T15:01:16+02:00,10317 +2026-09-12T15:01:42+02:00,10317 +2026-09-12T15:01:56+02:00,10315 +2026-09-12T15:02:10+02:00,10315 +2026-09-12T15:02:50+02:00,10315 +2026-09-12T15:06:17+02:00,10324 +2026-09-12T15:11:33+02:00,10397 +2026-09-12T15:15:52+02:00,10400 +2026-09-12T15:19:31+02:00,10407 +2026-09-12T15:22:01+02:00,10476 +2026-09-12T15:22:34+02:00,10510