Draft result filtering methodology section + expand wamr native call section

This commit is contained in:
2026-09-12 15:24:39 +02:00
parent f52ab00652
commit 2d2cd43dc5
12 changed files with 45 additions and 9 deletions
@@ -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.
@@ -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}
@@ -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}
@@ -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?
@@ -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}
@@ -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}

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Before

Width:  |  Height:  |  Size: 610 KiB

After

Width:  |  Height:  |  Size: 610 KiB

+5 -2
View File
@@ -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}
+13
View File
@@ -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
1 date wordcount
105 2026-09-12T13:27:44+02:00 10236
106 2026-09-12T13:28:26+02:00 10237
107 2026-09-12T13:58:35+02:00 10237
108 2026-09-12T14:31:54+02:00 10252
109 2026-09-12T14:32:24+02:00 10254
110 2026-09-12T15:01:16+02:00 10317
111 2026-09-12T15:01:42+02:00 10317
112 2026-09-12T15:01:56+02:00 10315
113 2026-09-12T15:02:10+02:00 10315
114 2026-09-12T15:02:50+02:00 10315
115 2026-09-12T15:06:17+02:00 10324
116 2026-09-12T15:11:33+02:00 10397
117 2026-09-12T15:15:52+02:00 10400
118 2026-09-12T15:19:31+02:00 10407
119 2026-09-12T15:22:01+02:00 10476
120 2026-09-12T15:22:34+02:00 10510