Compare commits
23
Commits
1f4249b7e9
...
00bb9380b2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00bb9380b2
|
||
|
|
e936f0a8d8
|
||
|
|
aad8942361
|
||
|
|
b2e2c67b4c
|
||
|
|
13c3808ef8
|
||
|
|
b1bf0fe5ba
|
||
|
|
e2fb4f7651
|
||
|
|
c121089311
|
||
|
|
85fd335f07
|
||
|
|
710cbf42ed
|
||
|
|
af500a6691
|
||
|
|
ab3da7b971
|
||
|
|
43e421a1fd
|
||
|
|
c3a06b4e43
|
||
|
|
446f82205a
|
||
|
|
e57f246904
|
||
|
|
3fa872d922
|
||
|
|
ef81fcee56
|
||
|
|
914325fdbe
|
||
|
|
5d1c2d1eef
|
||
|
|
e8891233d8
|
||
|
|
3f44dbbad3
|
||
|
|
8e5b1697ad
|
+1
-1
@@ -1,4 +1,3 @@
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,visualstudiocode,sublimetext,latex
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,visualstudiocode,sublimetext,latex
|
||||
|
||||
@@ -45,6 +44,7 @@
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
**/build
|
||||
|
||||
## Build tool directories for auxiliary files
|
||||
# latexrun
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
$pdf_mode = 1;
|
||||
$pdflatex =
|
||||
q{lualatex -shell-escape -interaction=nonstopmode %O %S 2>&1 | perl -pe 's/(^!.*)/\e[1;31m$1\e[0m/; s/([Ww]arning)/\e[1;33m$1\e[0m/'};
|
||||
$out_dir = ".out";
|
||||
$aux_dir = ".aux";
|
||||
$bibtex = "biber %O %S";
|
||||
$pdf_previewer = "zathura %O %S";
|
||||
|
||||
# Color output: https://tex.stackexchange.com/questions/617572/is-it-possible-to-make-latexmk-ouput-with-color
|
||||
{
|
||||
no warnings 'redefine';
|
||||
use Term::ANSIColor;
|
||||
|
||||
my $old_warn_running = \&main::warn_running;
|
||||
|
||||
sub color_warn_running {
|
||||
print STDERR color('green');
|
||||
$old_warn_running->(@_);
|
||||
print STDERR color('reset');
|
||||
}
|
||||
|
||||
my $old_failure = \&main::failure;
|
||||
|
||||
sub color_failure {
|
||||
print STDERR color('bold red');
|
||||
$old_failure->(@_);
|
||||
print STDERR color('reset');
|
||||
}
|
||||
|
||||
my $old_failure_msg = \&main::failure_msg;
|
||||
|
||||
sub color_failure_msg {
|
||||
print STDERR color('bold red');
|
||||
$old_failure_msg->(@_);
|
||||
print STDERR color('reset');
|
||||
}
|
||||
|
||||
if ( -t STDERR ) {
|
||||
*main::warn_running = \&color_warn_running;
|
||||
*main::failure = \&color_failure;
|
||||
*main::failure_msg = \&color_failure_msg;
|
||||
}
|
||||
}
|
||||
|
||||
# https://tex.stackexchange.com/questions/1226/how-to-make-latexmk-use-makeglossaries
|
||||
add_cus_dep( 'glo', 'gls', 0, 'run_makeglossaries' );
|
||||
add_cus_dep( 'acn', 'acr', 0, 'run_makeglossaries' );
|
||||
|
||||
sub run_makeglossaries {
|
||||
my ( $base_name, $path ) =
|
||||
fileparse( $_[0] ); #handle -outdir param by splitting path and file, ...
|
||||
pushd $path; # ... cd-ing into folder first, then running makeglossaries ...
|
||||
|
||||
if ($silent) {
|
||||
system "makeglossaries -q '$base_name'"; #unix
|
||||
# system "makeglossaries", "-q", "$base_name"; #windows
|
||||
}
|
||||
else {
|
||||
system "makeglossaries '$base_name'"; #unix
|
||||
# system "makeglossaries", "$base_name"; #windows
|
||||
}
|
||||
|
||||
popd; # ... and cd-ing back again
|
||||
}
|
||||
|
||||
push @generated_exts, 'glo', 'gls', 'glg';
|
||||
push @generated_exts, 'acn', 'acr', 'alg';
|
||||
$clean_ext .= ' %R.ist %R.xdy';
|
||||
@@ -1,18 +1,18 @@
|
||||
LATEXMK := "latexmk -pdflatex=lualatex -pdf -shell-escape -interaction=nonstopmode"
|
||||
LATEXMK := "latexmk -pvc"
|
||||
|
||||
build:
|
||||
#!/usr/bin/env bash
|
||||
ROOT="$PWD"
|
||||
FILE=$(find . -type f \( -path './chapters/*' -name '*.tex' ! -name 'template.tex' \) -o -name 'thesis.tex' | sed 's|^\./||' | sort | fzf)
|
||||
DIR=$(dirname "$FILE")
|
||||
BASE=$(basename "$FILE" .tex)
|
||||
kitty -e sh -c "cd '$DIR' && {{ LATEXMK }} -outdir=build -pvc -view=none '$BASE.tex'" > /dev/null 2>&1 &
|
||||
while [ ! -f "$DIR/build/$BASE.pdf" ]; do sleep 0.5; done
|
||||
if command -v inotifywait > /dev/null; then
|
||||
inotifywait -qq -e close_write "$DIR/build/$BASE.pdf"
|
||||
else
|
||||
sleep 2
|
||||
fi
|
||||
zathura "$DIR/build/$BASE.pdf" > /dev/null 2>&1 &
|
||||
kitty -e sh -c "cd '$DIR' && BIBINPUTS='$ROOT:' {{ LATEXMK }} '$BASE.tex'" > /dev/null 2>&1 &
|
||||
|
||||
clean:
|
||||
find . -type d \( -name build -o -name svg-inkscape \) -exec rm -rf {} +
|
||||
find . -type d \( -name build -o -name svg-inkscape -o -name .aux -o -name .out \) -exec rm -rf {} +
|
||||
|
||||
format:
|
||||
lualatex -ini -jobname=thesis "&lualatex" mylatexformat.ltx thesis.tex
|
||||
|
||||
clean-format:
|
||||
rm thesis.fmt thesis.log thesis.tex.bbl thesis.tex.blg
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
%! TeX program = lualatex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter*{Abstract}\label{ch:abstract}
|
||||
\addcontentsline{toc}{chapter}{\nameref{ch:abstract}}
|
||||
|
||||
As semiconductor node sizes shrink, transient hardware faults pose a growing risk to computing systems, especially in environments where reliability is critical.
|
||||
\Gls{wasm}, a binary-code format developed for the web, is increasingly used in embedded systems through standalone runtimes such as the \Gls{wamr}.
|
||||
This thesis investigates \Gls{wamr}'s compatibility with hardening techniques for transient hardware faults through systematic single-bit fault injection on a simulated IA-32 CPU using the \Gls{fail} fault-injection framework.
|
||||
|
||||
The interpreter and \Gls{aot} execution modes of \Gls{wamr} are compared under fault conditions and software-based hardening techniques are evaluated at two levels: (I) the language/application level, by hardening source programs before compilation to Wasm, and (II) the runtime level, by hardening \Gls{wamr} itself.
|
||||
|
||||
\todo[inline]{Copied from proposal}
|
||||
|
||||
\end{document}
|
||||
@@ -1,8 +1,38 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter{Introduction}\label{ch:introduction}
|
||||
|
||||
As semiconductor node sizes shrink, transient hardware faults pose a growing risk to computing systems, especially in environments where reliability is critical.
|
||||
\Gls{wasm}, a binary code format developed for the web, is increasingly used in embedded systems through standalone runtimes such as the \Gls{wamr}~\autocite{wamr}.
|
||||
This thesis investigates \Gls{wamr}'s compatibility with hardening techniques for transient hardware faults through systematic single-bit fault injection on a simulated IA-32 CPU using the \Gls{fail} \gls{fi} framework.
|
||||
|
||||
The interpreter and \gls{aot} execution modes of \Gls{wamr} are compared under fault conditions and software-based hardening techniques are evaluated at two levels: (I) the language/application level, by hardening source programs before compilation to \Gls{wasm}, and (II) the runtime level, by hardening \Gls{wamr} itself.
|
||||
|
||||
\todo[inline]{Abstract from expose, needs to be rewritten}
|
||||
|
||||
Transient hardware faults can manifest in different types of errors such as \glspl{sdc} or \glspl{due}.
|
||||
This work focuses on \glspl{sdc} specifically as they can propagate silently through subsequent data-/program-flow without causing detectable system failures, thus producing trusted but incorrect results.
|
||||
As \Gls{wasm} is adopted beyond the web, the resilience of \Gls{wasm} runtimes against these types of failures becomes a relevant question.
|
||||
|
||||
\Gls{wamr}~\autocite{wamr} is designed for lightweight standalone execution of \Gls{wasm} modules.
|
||||
It supports interpretation (with and without \gls{jit} compilation) and \gls{aot} compilation, trading memory footprint and portability for performance.
|
||||
Besides platform independence, the \Gls{wasm} specification mandates additional safety features such as memory-isolated program execution and bounds-checked memory access.
|
||||
This raises the question of how fault resilience compares between executing a (hardened) program natively or introducing \Gls{wamr} as an additional abstraction layer to the execution environment.
|
||||
|
||||
To answer these questions, this thesis uses the \Gls{fail} \gls{fi} framework~\autocite{schirmeierFAILVersatileFaultInjection2012} that allows injecting bit-level faults into a simulated CPU using the Bochs IA-32 emulator~\autocite{bochs}.
|
||||
\Gls{fail} is able to exhaustively cover the fault-space of possible bit flips by applying fault-similarity pruning to reduce the size of the fault-space and smart-hopping to accelerate single experiment simulations~\autocite{schirmeierEfficientFaultInjectionbasedAssessment}.
|
||||
|
||||
To mitigate \Glspl{sdc}, software-based fault tolerance techniques are evaluated.
|
||||
\Glspl{anbcode}~\autocite{forinVitalCodedMicroprocessor1990} are a method of encoding and verifying data- and program-flow integrity during execution.
|
||||
\Gls{replication}~\autocite{polednaReplicaDeterminismDistributed1994} improves fault resilience by executing multiple independent copies of computations and using majority voting to detect or correct errors.
|
||||
Both techniques can be applied either at the application level, by hardening the program before compilation to \Gls{wasm}, or at the runtime level, by hardening \Gls{wamr} itself to transparently improve fault resilience.
|
||||
|
||||
The central objective is to analyze the effects of transient faults on \Gls{wamr} and assess the effectiveness of hardening techniques across execution modes.
|
||||
|
||||
\todo[inline]{Introduction from expose, needs to be rewritten}
|
||||
|
||||
\end{document}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter{Related Work}\label{ch:relatedwork}
|
||||
|
||||
Related work is for similar work (e.g., Wasm with software-based mitigation).
|
||||
In a wider sense also hardening papers for e.g., Python could be considered.
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter{Experiment Design}\label{ch:experimentdesign}
|
||||
\chapter{Background}\label{ch:background}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,51 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\section{WebAssembly}\label{sec:wasm}
|
||||
|
||||
The open \Acrfull{wasm} standard defines a portable virtual instruction set architecture, binary code format and text format for execution inside a virtual (stack) machine~\autocite{wasm3spec}.
|
||||
\Gls{wasm} instructions operate on an operand stack instead of registers: values are pushed and consumed through stack operations, similar to Java's virtual machine.
|
||||
It is developed and maintained by the World Wide Web Consortium (W3C)\footnote{\url[2026-07-01]{https://w3.org/}} to support high-performance applications in web-based environments.
|
||||
While the initial implementations of \Gls{wasm} runtime environments were confined to web browsers\footnote{In 2016, experimental \Gls{wasm} runtimes were implemented in Firefox, Google Chrome and Microsoft Edge: \url[2026-07-01]{https://hacks.mozilla.org/2016/03/a-webassembly-milestone/}}, \Gls{wasm} does not make any web-specific assumptions, so many different standalone runtimes like \textquote{Wasmtime}\footnote{\url[2026-07-01]{https://github.com/bytecodealliance/wasmtime/}} or the \Acrfull{wamr} (see \autoref{sec:wamr}) have emerged since.
|
||||
|
||||
Besides instructions or execution behavior, two file formats are defined by the \Gls{wasm} standard: the \Gls{wasm} \textquote{Binary Format} \iffalse{}(see \autoref{lst:wasmexample})\fi for space-efficient representation and fast transmission, and the Lisp-like \Gls{wasm} \textquote{Text Format} for human readability (see \autoref{lst:watexample}).
|
||||
Both formats are equivalent, they represent the same underlying content differently for alternate purposes.
|
||||
|
||||
% \begin{codeblock}[label=lst:wasmexample]{\Gls{wasm} Binary Format}{.wasm}
|
||||
% \inputminted{hex}{\subfix{listings/wat_example.hex}}
|
||||
% \end{codeblock}
|
||||
|
||||
\begin{codeblock}[label=lst:watexample]{\Gls{wasm} Text Format}{.wat}
|
||||
\inputminted{wat}{\subfix{listings/wat_example.wat}}
|
||||
\end{codeblock}
|
||||
|
||||
% TODO: Info on wat (module, type, func, memory, global, export)
|
||||
\autoref{lst:watexample} shows a minimal \Gls{wasm} module in text format.
|
||||
The \code{module} declaration groups all definitions of the compilation unit.
|
||||
A \code{type} declares the shared function signature, the \code{func} then references this type and provides its implementation.
|
||||
The module uses two pages of \code{memory} and defines the stack pointer as a mutable \code{global}.
|
||||
At the end, the \textquote{memory} and \textquote{main} function are exported, so the host environment can invoke the module and access its state.
|
||||
Not visible in the above example are \code{import} statements, which allow the \Gls{wasm} program to access functions, variables or memory from the host environment.
|
||||
|
||||
In a typical workflow, a program written in a high-level language like C or Rust gets compiled to the \Gls{wasm} binary format using an LLVM-based toolchain, the binary is then executed in a web-based or standalone runtime environment.
|
||||
The binaries mainly consist of \textit{values}, \textit{instructions}, \textit{functions} and \textit{memory}, bundled into \textit{modules}. % TODO: This is already visible in the watexample...
|
||||
To execute a program, the module is loaded from its binary format representation, \textit{decoded}, \textit{validated}, \textit{instantiated} and lastly, \textit{invoked}.
|
||||
|
||||
During runtime, \Gls{wasm} provides memory safety, control flow integrity and independent execution (sandboxing)\footnote{\url[2026-07-01]{https://webassembly.org/docs/security/}}.
|
||||
Memory safety is achieved through a bounds-checked linear memory with an inaccessible call stack\footnote{The call stack is not part of \Gls{wasm}'s linear memory but the execution environment: \url[2026-07-01]{https://bytecodealliance.github.io/wamr.dev/blog/the-wamr-memory-model/}}, preventing arbitrary memory accesses and buffer overflows.
|
||||
The linear memory is a contiguous and growable byte array that is shared between the module and host.
|
||||
Control flow integrity stems from structured control flow: branches target verifiable positions and function calls are index-based and verified against the function table\footnote{\url[2026-07-01]{https://clang.llvm.org/docs/ControlFlowIntegrity.html}}.
|
||||
Additionally, the running program cannot observe its (immutable) source code to prevent control flow hijacking.
|
||||
Sandboxing is enforced by isolating each module's state: a module can only interact with the outside world through explicitly imported functions and resources provided by its host runtime.
|
||||
|
||||
Its safety features, portability, language/hardware independence and well-definedness make \Gls{wasm} an interesting platform even for resource-constrained and security-critical systems.
|
||||
|
||||
% \subsection{\Glsdesc*{wasm} Binary Format}\label{ssec:wasmbinaryformat}
|
||||
% \subsection{\Glsdesc*{wasm} Text Format}\label{ssec:wasmtextformat}
|
||||
% \subsection{\Glsdesc*{wasm} Memories}\label{ssec:wasmmemories}
|
||||
% \subsection{\Glsdesc*{wasm} Control Flow}\label{ssec:wasmcontrolflow}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,29 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\section{WebAssembly Micro Runtime}\label{sec:wamr}
|
||||
|
||||
\Acrfull{wamr}~\autocite{wamr} is a lightweight standalone \Gls{wasm} runtime by the \textquote{Bytecode Alliance}\footnote{\url[2026-07-02]{https://bytecodealliance.org/}}, designed for embedded devices.
|
||||
|
||||
\Gls{wamr} includes three main components: The runtime libraries required to load and execute \Gls{wasm} modules (the decode, validate, instantiate, invoke process mentioned in \autoref{sec:wasm}) are called \textquote{\Gls{vmcore}}.
|
||||
\Gls{vmcore} can be embedded in C/C++ host applications.
|
||||
A standalone version of \Gls{vmcore} is provided by the \textquote{\gls{iwasm}} program.
|
||||
It acts as the host application and allows running \code{.wasm} files directly from the command-line.
|
||||
The last component is \textquote{\gls{wamrc}}, a compiler transforming \code{.wasm} to \Gls{aot} compiled native code, necessary when not using one of \Gls{wamr}'s interpreter implementations.
|
||||
|
||||
\Gls{wasm} modules can be executed in five different running modes using \Gls{vmcore}\footnote{\url[2026-07-01]{https://bytecodealliance.github.io/wamr.dev/blog/introduction-to-wamr-running-modes/}}:
|
||||
\begin{itemize}
|
||||
\item \sansbf{\Gls{aot}} mode sacrifices platform-independence for performance and runtime size efficiency. The \Gls{wasm} module is compiled to platform-native code with \Gls{wasm}-specific scaffolding to retain \Gls{wasm}'s security features.
|
||||
\item \sansbf{Classic Interpreter} is \Gls{wamr}'s slow reference implementation of a \Gls{wasm} interpreter, mainly targeted towards debugging purposes.
|
||||
\item \sansbf{Fast Interpreter} provides a speed boost over the classic interpreter by using a custom internal intermediate representation of \Gls{wasm} opcodes.
|
||||
\item \sansbf{LLVM \Gls{jit}} achieves the highest performance (excluding \Gls{aot} mode) by utilizing the LLVM framework for compilation.
|
||||
\item \sansbf{Fast \Gls{jit}} improves startup time over the LLVM \Gls{jit} by utilizing a lighweight compiler instead of LLVM, but trades some runtime performance.
|
||||
\end{itemize}
|
||||
In \Gls{aot} mode the \Gls{wasm} module is invoked by jumping into its native code, the interpreted modes follow a traditional opcode fetch, decode, execute loop.
|
||||
|
||||
Of those five modes, this thesis is concerned with \Gls{aot} mode and the classic interpreter for analyzability reasons: \Gls{aot} mode is most similar to native execution without the additional \Gls{wasm} layer. The classic interpreter allows a simpler understanding of fault effects than the fast interpreter or \Glspl{jit} as no different code representations are involved.
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,22 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\section{Fault-Injection Leveraged}\label{sec:fail}
|
||||
|
||||
\begin{itemize}
|
||||
\item FAIL*~\autocite{schirmeierFAILOpenVersatile2015} architecture
|
||||
\item FAIL*Bochs backend, how does FAIL* inject
|
||||
\item FAIL*'s generic-experiment
|
||||
\item How to perform a FAIL* experiment
|
||||
\end{itemize}
|
||||
|
||||
\Gls{fail}~\autocite{schirmeierFAILOpenVersatile2015} is an emulation-based vulnerability analysis tool.
|
||||
It provides a toolset to perform \gls{fi} experiments to analyze the vulnerability of software to transient hardware faults.
|
||||
In contrast to other \gls{fi} tools, \Gls{fail} enables deep simulator state access while simultaneously supporting multiple simulator backends, like BOCHS~\autocite{bochs} or gem5\footnote{\url[2026-07-02]{https://www.gem5.org/}}. % TODO: Give examples for other FI frameworks
|
||||
|
||||
% FAIL components/structure/architecture
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,5 @@
|
||||
0000000 6100 6d73 0001 0000 0501 6001 0100 037f
|
||||
0000010 0102 0500 0103 0200 0806 7f01 4101 8880
|
||||
0000020 0b04 1107 0602 656d 6f6d 7972 0002 6d04
|
||||
0000030 6961 006e 0a00 0106 0004 2a41 000b
|
||||
000003d
|
||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
(module $wat_example.wasm
|
||||
(type (;0;) (func (result i32)))
|
||||
(func $main (type 0) (result i32)
|
||||
i32.const 42)
|
||||
(memory (;0;) 2)
|
||||
(global $__stack_pointer (mut i32) (i32.const 66560))
|
||||
(export "memory" (memory 0))
|
||||
(export "main" (func $main)))
|
||||
@@ -1,11 +1,64 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter{Experiment Setup}\label{ch:experimentsetup}
|
||||
|
||||
\subfile{04_01_wamr_baremetal.tex}
|
||||
\subfile{04_02_wasm_host_program.tex}
|
||||
\section{Execution Environment}
|
||||
\begin{itemize}
|
||||
\item Baremetal execution in BOCHS
|
||||
\end{itemize}
|
||||
|
||||
\section{\Gls{wamr} Modifications}\label{sec:wamrmodifications}
|
||||
\begin{itemize}
|
||||
\item Cross-compiler issues
|
||||
\item Which platform functions?
|
||||
\item WAMR exception handler marker?
|
||||
\end{itemize}
|
||||
|
||||
\section{Wasm Host Program}
|
||||
\begin{itemize}
|
||||
\item WAMR setup
|
||||
\item WAMR memory allocators
|
||||
\item Calling \code{FAIL\_MARKER}s (native functions)
|
||||
\end{itemize}
|
||||
|
||||
\section{Experiment Types}
|
||||
\begin{itemize}
|
||||
\item C only
|
||||
\item WAMR AOT
|
||||
\item WAMR interpreter
|
||||
\end{itemize}
|
||||
|
||||
\section{Controlling What Gets Injected/Memory Isolation}
|
||||
\begin{itemize}
|
||||
\item --catch-write-textsegment (does NOT prevent injections into the textsegment!)
|
||||
\item --catch-outerspace
|
||||
\end{itemize}
|
||||
|
||||
\section{Missing FAIL\_MARKERs for AOT experiments}
|
||||
\begin{itemize}
|
||||
\item AOT Addressauflösung/Def-Use chain theory
|
||||
\item Somehow caught by --catch-write-textsegment or --catch-outerspace because stuff was linked to .text?
|
||||
\item Optimization theory
|
||||
\begin{itemize}
|
||||
\item Does the target program contain the expected instructions?
|
||||
\item Does FAIL* treat the variables as not live? (volatile, fail\_stop\_trace(sum))
|
||||
\item Trying more complex programs, as -O0 always writes intermediate results to memory
|
||||
\item Swap fail\_marker\_positive and fail\_marker\_negative
|
||||
\end{itemize}
|
||||
\item Does the pruner clear those injections for some reason?
|
||||
\item Does the disassembler not disassemble the .text subsections?
|
||||
\item Is the TracingPlugin broken? (GDB -> No, but FAIL* doesn't trace register accesses)
|
||||
\item Solution: Gap in the .elf symbol space (addresses that are not covered by some symbol). FAIL needs this to disassemble the Wasm AOT code to find the register accesses. FAIL also needs to find this AOT code, so it can't be relocated -> Needs --xip
|
||||
\end{itemize}
|
||||
|
||||
\section{Target Programs}
|
||||
\begin{itemize}
|
||||
\item Toy examples
|
||||
\item TacleBench~\autocite{TACLeBench,seidlerTACLeBenchWasmConverter2026}
|
||||
\end{itemize}
|
||||
|
||||
\end{document}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
%! TeX program = lualatex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\section{WAMR Baremetal Platform}\label{sec:wamrbaremetal}
|
||||
|
||||
\begin{itemize}
|
||||
\item Cross-compiler issues
|
||||
\item Which platform functions?
|
||||
\end{itemize}
|
||||
|
||||
\end{document}
|
||||
@@ -1,14 +0,0 @@
|
||||
%! TeX program = lualatex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\section{Wasm Host Program}\label{sec:wasmhost}
|
||||
|
||||
\begin{itemize}
|
||||
\item WAMR setup
|
||||
\item Calling \code{FAIL\_MARKER}s
|
||||
\item WAMR exception handler marker?
|
||||
\end{itemize}
|
||||
|
||||
\end{document}
|
||||
@@ -1,4 +1,5 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
@@ -1,8 +1,61 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\chapter{Discussion}\label{ch:discussion}
|
||||
|
||||
\section{Research Questions}
|
||||
|
||||
\subsection{How do transient hardware faults affect the correctness of programs executed in \Gls{wamr} in comparison to native execution?}
|
||||
|
||||
\Gls{wamr} provides additional abstractions and safety features over native execution but brings increased complexity and a larger memory footprint.
|
||||
This question evaluates how these differences affect the rate of silent data corruption and if the increased fault surface outweighs the safety gains.
|
||||
The analysis distinguishes different experiment results such as correct execution, \gls{sdc} and \gls{due} to characterize the impact of \Gls{wamr} on system behavior under fault.
|
||||
Additionally, the distribution of faults is examined to determine particularly vulnerable code paths in \Gls{wamr}.
|
||||
|
||||
\subsection{How does the resilience of \Gls{wamr} differ between interpreter mode and \gls{aot} execution mode?}
|
||||
|
||||
\Gls{wamr} supports both \gls{aot} compilation and interpreted execution of \Gls{wasm} modules.
|
||||
\Gls{aot} mode executes a \Gls{wasm} module pre-compiled to native code.
|
||||
\Gls{wamr} sets up an execution environment that provides \Gls{wasm}-specific benefits such as isolated execution or checked memory access before jumping into native code.
|
||||
In contrast, interpreter mode executes \Gls{wasm} bytecode directly using one of \Gls{wamr}'s interpreter implementations.
|
||||
This question compares both modes under identical \gls{fi} campaigns to determine if the interpreters' additional runtime checks and safety mechanisms provide a more resilient execution environment than \gls{aot} mode.
|
||||
|
||||
\subsection{To what extent can source program hardening techniques applied to the source code reduce \gls{sdc}?}
|
||||
|
||||
This question evaluates application-level hardening such as software \gls{replication} and \glspl{anbcode} before compilation to \Gls{wasm}.
|
||||
Techniques include the \Gls{cored}~\autocite{ulbrichEliminatingSinglePoints2012} approach, where programs are executed repeatedly before masking errors using the \glsdisp{anbcode}{ANB-coded} majority voter.
|
||||
The effectiveness of the tested methods is measured in terms of \gls{sdc} reduction in comparison to the non-hardened variants.
|
||||
Further considerations include the difference between detectable and correctable errors and the possibility of combining different hardening techniques.
|
||||
|
||||
\subsection{To what extent can the intermediate \Gls{wasm} program be hardened to reduce \gls{sdc}?}
|
||||
|
||||
Instead of hardening the source program by modifying its source code, hardening techniques can be applied to the intermediate \Gls{wasm} bytecode representation.
|
||||
This allows exploiting properties of the source program that are not accessible in its source representation, such as \Gls{wasm}'s operand stack or its restricted control flow.
|
||||
The bytecode level also allows a more fine-grained approach to methods like software-based replication, as individual instructions can be replicated.
|
||||
|
||||
\subsection{How effectively can hardening techniques be applied directly to the WAMR runtime's interpreter execution mode?}
|
||||
|
||||
In contrast to application-level hardening, this question investigates modifying the \Gls{wamr} runtime itself to improve reliability.
|
||||
This could offer advantages since it eliminates the need to harden each program on the application level individually, but could be unfeasible to implement or introduce high performance penalties.
|
||||
Key components of the interpreter loop, such as the opcode dispatch mechanism or arithmetic operations, could be hardened.
|
||||
Additionally, other critical runtime components that contribute disproportionately to fault propagation are to be identified.
|
||||
The evaluation focuses on the feasibility of hardening the \Gls{wamr} runtime, its impact on \gls{sdc} rates, and its runtime cost.
|
||||
|
||||
\subsection{How effectively can hardening techniques be applied directly to the WAMR runtime's ahead-of-time execution mode?}
|
||||
|
||||
To implement the safety features required by the \Gls{wasm} specification, \gls{wamr}'s \gls{aot} compiler (\textquote{\gls{wamrc}}) instruments the resulting native code with \textquote{glue}-code, for example to guard memory accesses or implement function lookups.
|
||||
Since transparently hardening \gls{aot} execution by modifying the compiler itself is out of scope for this thesis, this glue-code could be targeted instead.
|
||||
The hardening potential of this approach is compared to the hardening of the interpreter execution mode in the previous research question.
|
||||
|
||||
\subsection{How do the runtime overheads of application- and runtime-level hardening compare?}
|
||||
|
||||
Fault tolerance mechanisms introduce computational overhead, which is especially important in resource-constrained environments.
|
||||
This question compares the performance impact of application-level and runtime-level hardening to determine trade-offs between resilience and efficiency.
|
||||
Performance is evaluated in the context of embedded/resource-restrained systems, where constraints might limit the ability to use certain hardening strategies.
|
||||
|
||||
\todo[inline]{Taken from expose for reference}
|
||||
|
||||
\end{document}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% \addchap{Examples}\label{ch:examples}
|
||||
\chapter{Examples}\label{ch:examples}
|
||||
|
||||
See if everything works:
|
||||
\todo[inline]{Sanity check so everything looks correct}
|
||||
|
||||
This is \code{inline code}.
|
||||
This is a reference to \Gls{fail}.
|
||||
@@ -13,6 +15,8 @@ This is another reference to \Gls{fail}.
|
||||
This is a citation~\autocite{polednaReplicaDeterminismDistributed1994}.
|
||||
This is a reference to \autoref{ch:introduction}.
|
||||
This is a formula: \( \sum\limits_{f=1}^{\infty}\frac{o}{r}\cdot m_{u} + l^{a} \).
|
||||
This is \textbf{bold text that is slightly bold}, so underwhelming.
|
||||
In contrast, \sansbf{this text is very strong}, very cool\footnote{very cool}.
|
||||
|
||||
\begin{codeblock}[label=lst:examplelisting]{This is a listing}{C++}
|
||||
\inputminted{cpp}{\subfix{listings/example.cpp}}
|
||||
@@ -26,4 +30,6 @@ This is a formula: \( \sum\limits_{f=1}^{\infty}\frac{o}{r}\cdot m_{u} + l^{a} \
|
||||
\caption{This is a figure.}\label{fig:examplefigure}
|
||||
\end{figure}
|
||||
|
||||
\lipsum%
|
||||
|
||||
\end{document}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
%! TeX program = lualatex
|
||||
%! TeX root = ../../thesis.tex
|
||||
\documentclass[../../thesis.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+55
-12
@@ -6,12 +6,20 @@
|
||||
% Acronyms
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% \newacronym{acpi}{ACPI}{Advanced Configuration and Power Interface}
|
||||
% \newacronym[
|
||||
% text={text in the glossary (uses text in the document if omitted)},
|
||||
% plural={plural text in the document (uses text if omitted)},
|
||||
% description={description in the glossary (uses description in the document if omitted)},
|
||||
% ]{key}{text in the document}{description in the document}
|
||||
|
||||
\newacronym{aot}{AoT}{Ahead-of-Time}
|
||||
\newacronym{fi}{FI}{Fault Injection}
|
||||
\newacronym{fail}{FAIL*}{Fault Injection Leveraged}
|
||||
\newacronym{sdc}{SDC}{Silent Data Corruption}
|
||||
\newacronym[description={Ahead-of-Time Compilation}]{aot}{AOT}{ahead-of-time}
|
||||
% \newacronym[description={Classic Interpreter}]{cint}{CI}{classic interpreter}
|
||||
\newacronym{fail}{FAIL*}{Fault-Injection Leveraged}
|
||||
\newacronym[description={Fault-Injection}]{fi}{FI}{fault-injection}
|
||||
% \newacronym[description={Fast Interpreter}]{fint}{FI}{fast interpreter}
|
||||
\newacronym[description={Detected Unrecoverable Error}]{due}{DUE}{detected unrecoverable error}
|
||||
\newacronym[description={Just-in-Time Compiler}]{jit}{JIT}{just-in-time}
|
||||
\newacronym[description={Silent Data Corruption}]{sdc}{SDC}{silent data corruption}
|
||||
\newacronym{wamr}{WAMR}{WebAssembly Micro Runtime}
|
||||
\newacronym{wasm}{Wasm}{WebAssembly}
|
||||
|
||||
@@ -19,12 +27,47 @@
|
||||
% Glossary Entries
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% \newglossaryentry{apic timer}{%
|
||||
% name={APIC Timer},
|
||||
% description={A hardware timer that can trigger periodic interrupts by using a counter, integrated in the local APIC}
|
||||
% \newglossaryentry{key}{%
|
||||
% name={text in the glossary},
|
||||
% text={text in the document (uses name if omitted)},
|
||||
% plural={plural text in the document (uses text if omitted)},
|
||||
% description={description in the glossary},
|
||||
% }
|
||||
|
||||
% \newglossaryentry{fail}{%
|
||||
% name={FAIL*},
|
||||
% description={Fault Injection Leveraged, a \Gls{fi} framework}
|
||||
% }
|
||||
\newglossaryentry{ancode}{%
|
||||
name={AN-Code},
|
||||
text={AN-code},
|
||||
description={Arithmetic coding scheme protecting against operand errors}
|
||||
}
|
||||
\newglossaryentry{anbcode}{%
|
||||
name={ANB-Code},
|
||||
text={ANB-code},
|
||||
description={Arithmetic coding scheme protecting against operand and operator errors}
|
||||
}
|
||||
\newglossaryentry{anbdcode}{%
|
||||
name={ANBD-Code},
|
||||
text={ANBD-code},
|
||||
description={Arithmetic coding scheme protecting against operand, operator and operation errors}
|
||||
}
|
||||
\newglossaryentry{cored}{%
|
||||
name={Combined Redundancy},
|
||||
first={Combined Redundancy (CoRed)},
|
||||
description={Hardening technique utilizing \Gls{replication} in combination with an \glsdisp{anbcode}{ANB-coded} majority voter},
|
||||
}
|
||||
\newglossaryentry{iwasm}{%
|
||||
name={iwasm},
|
||||
description={\Gls{wamr}'s standalone binary that provides a command-line interface to load and execute \Gls{wasm} modules}
|
||||
}
|
||||
\newglossaryentry{replication}{%
|
||||
name={Replication},
|
||||
text={replication},
|
||||
description={Hardening technique utilizing replicated hardware or execution in combination with a majority voter}
|
||||
}
|
||||
\newglossaryentry{vmcore}{%
|
||||
name={VMcore},
|
||||
description={\Gls{wamr}'s runtime libraries for \Gls{wasm} module loading and execution}
|
||||
}
|
||||
\newglossaryentry{wamrc}{%
|
||||
name={wamrc},
|
||||
description={\Gls{wamr}'s \gls{aot} compiler for \Gls{wasm}}
|
||||
}
|
||||
|
||||
+119
-94
@@ -1,33 +1,29 @@
|
||||
% Language
|
||||
\usepackage[american]{babel}
|
||||
% \usepackage[T1]{fontenc} % Silbentrennung bei Sonderzeichen
|
||||
% \usepackage[utf8]{inputenc}
|
||||
|
||||
% Layout
|
||||
\usepackage[left=3.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry} % Typical margin
|
||||
\usepackage{titling}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{setspace} % Line stretch
|
||||
|
||||
% Bibliography
|
||||
\usepackage[backend=biber,urldate=iso,date=iso,seconds=true]{biblatex}
|
||||
\usepackage[backend=biber,style=alphabetic,urldate=iso,date=iso,seconds=true]{biblatex}
|
||||
\setcounter{biburlnumpenalty}{7000} % linebreaks after numbers
|
||||
\bibliography{references,zotero}
|
||||
\usepackage[nottoc,notlof,notlot]{tocbibind} % Include bibliography in ToC, nottoc disables the "Contents" entry for the ToC itself
|
||||
|
||||
% Figures
|
||||
\usepackage{graphicx} % Required for inserting images
|
||||
\usepackage{subcaption} % Mehrere Figuren in einer
|
||||
\usepackage{float} % [H] floating/positioning von Figuren
|
||||
\usepackage[bottom]{footmisc} % Bottom not below footnote
|
||||
|
||||
% Math
|
||||
\usepackage{amsmath,amsthm} % Don't load amssymb with concmath-otf
|
||||
\usepackage{mathtools} % Extension of amsmath
|
||||
% \usepackage{upgreek} % For non italic greek (vectors/matrices)
|
||||
\usepackage{unicode-math}
|
||||
\usepackage{lualatex-math}
|
||||
\usepackage[font=small,labelfont=bf,labelsep=endash,margin=1cm,hypcap]{caption}
|
||||
\usepackage[margin=1cm,hypcap]{subcaption} % Mehrere Figuren in einer
|
||||
\usepackage{floatbytocbasic} % float for komascript
|
||||
% \usepackage[bottom,multiple]{footmisc} % Bottom not below footnote
|
||||
\usepackage{flafter}
|
||||
\usepackage{placeins} % \FloatBarrier to flush floats
|
||||
|
||||
% Tables
|
||||
\usepackage{tabularx}
|
||||
\usepackage{booktabs}
|
||||
% \usepackage{tabularx}
|
||||
% \usepackage{tablefootnote}
|
||||
% \usepackage{makecell}
|
||||
% \usepackage{color,colortbl}
|
||||
@@ -37,30 +33,59 @@
|
||||
\usepackage{algpseudocode}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{tikz}
|
||||
\usepackage{listings} % For lstinputlisting ChkTeX
|
||||
\usetikzlibrary{shadings, backgrounds}
|
||||
\usepackage[minted]{tcolorbox}
|
||||
\tcbuselibrary{skins} % breakable
|
||||
|
||||
% Math
|
||||
\usepackage{amsmath,amsthm} % Don't load amssymb with concmath-otf
|
||||
\usepackage{mathtools} % Extension of amsmath
|
||||
\mathtoolsset{showonlyrefs}
|
||||
\usepackage{xpatch}
|
||||
\makeatletter
|
||||
\xpretocmd\HyRef@autoref{\noeqref{#2}}{}{} % showonlyrefs mit \autoref
|
||||
\makeatother
|
||||
|
||||
% lua-uni-stage-tables.lua:141: attempt to perform arithmetic on a string value (local 'key')
|
||||
\csname endofdump\endcsname
|
||||
|
||||
\usepackage{unicode-math}
|
||||
\usepackage{lualatex-math}
|
||||
|
||||
% Typography
|
||||
\usepackage[babel,final,protrusion=true,expansion=true,tracking=false,kerning=false,spacing=false]{microtype}
|
||||
\usepackage{fontspec}
|
||||
% \usepackage{fontspec}
|
||||
\usepackage{concmath-otf}
|
||||
\setmonofont{MonoLisa Alt}[Scale=MatchLowercase]
|
||||
|
||||
% Pagestyle
|
||||
\KOMAoptions{%
|
||||
chapterprefix,
|
||||
appendixprefix,
|
||||
headsepline,
|
||||
% footsepline,
|
||||
% cleardoublepage=current, % linenumbers and headers on interleaf pages
|
||||
% cleardoublepage=plain, % linenumbers on interleaf pages
|
||||
footnotes=multiple, % TODO: Doesn't work, maybe because of hyperref?
|
||||
}
|
||||
|
||||
% Various stuff
|
||||
\usepackage[page]{appendix} % [toc]
|
||||
\usepackage{lipsum}
|
||||
\usepackage[inkscapelatex=false]{svg} % Don't touch fonts
|
||||
\usepackage{comment}
|
||||
% \usepackage{comment}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage{luatodonotes}
|
||||
\usepackage[minNoteWidth=1.0cm]{luatodonotes}
|
||||
\usepackage{siunitx}
|
||||
\sisetup{detect-all}
|
||||
\usepackage[l2tabu,orthodox]{nag}
|
||||
\usepackage{etoolbox} % For \ifstrequal
|
||||
% \usepackage{etoolbox} % For \ifstrequal
|
||||
\usepackage[autostyle]{csquotes} % Correct quotation marks with \textquote{}
|
||||
\usepackage{silence} % Silence warnings
|
||||
\usepackage[intoc]{nomencl} % Nomenclature
|
||||
\usepackage[luatex,hidelinks]{hyperref} % Load late
|
||||
\usepackage[acronym,automake,nonumberlist,nogroupskip]{glossaries} % Load after hyperref, toc
|
||||
% \usepackage[intoc]{nomencl} % Nomenclature
|
||||
\usepackage[luatex,colorlinks]{hyperref} % Load late, hidelinks
|
||||
\usepackage{bookmark} % Needed for hyperref with scrbook
|
||||
\usepackage[acronym,automake=immediate,nonumberlist,nogroupskip,toc]{glossaries} % Load after hyperref, toc
|
||||
\usepackage{xurl} % xurl does url-line-breaks in contrast to url
|
||||
|
||||
% Multi-file
|
||||
@@ -68,22 +93,18 @@
|
||||
|
||||
% Settings
|
||||
\setstretch{1.25}
|
||||
\bibliography{references}
|
||||
\clubpenalty=10000
|
||||
\widowpenalty=10000
|
||||
\displaywidowpenalty=10000
|
||||
% \floatstyle{boxed}
|
||||
% \restylefloat{figure}
|
||||
\sisetup{detect-all}
|
||||
\tcbuselibrary{skins} % breakable
|
||||
\usetikzlibrary{shadings, backgrounds}
|
||||
\setlength{\headheight}{14pt}
|
||||
|
||||
\mathtoolsset{showonlyrefs}
|
||||
\usepackage{xpatch}
|
||||
\makeatletter
|
||||
\xpretocmd\HyRef@autoref{\noeqref{#2}}{}{} % showonlyrefs mit \autoref
|
||||
\makeatother
|
||||
% Allow more (and larger) floats on text pages
|
||||
\renewcommand{\topfraction}{0.9} % use up to ..% of space on top
|
||||
\renewcommand{\bottomfraction}{0.8} % use up to ..% of space on bottom
|
||||
\setcounter{topnumber}{4} % place up to .. on top
|
||||
\setcounter{bottomnumber}{1} % place up to .. on bottom
|
||||
\setcounter{totalnumber}{4} % place up to .. total
|
||||
\renewcommand{\textfraction}{0.07} % allow down to ..% of text
|
||||
\renewcommand{\floatpagefraction}{0.7} % fill at least ..% of float pages (must be less than \topfraction)
|
||||
|
||||
\makeatletter\newcommand{\tcb@cnt@codeblockautorefname}{Listing}\makeatother
|
||||
|
||||
@@ -93,23 +114,20 @@
|
||||
% \WarningFilter{latexfont}{Font shape `TS1/zi4/m/it' undefined}
|
||||
% \WarningFilter{latexfont}{Some font shapes were not available}
|
||||
|
||||
\fancypagestyle{plain}{%
|
||||
\fancyhf{}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\fancyfoot[RO,LE]{\thepage}
|
||||
}
|
||||
|
||||
\fancypagestyle{report}{%
|
||||
\fancyhf{}
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
\fancyfoot[RO,LE]{\thepage}
|
||||
\fancyhead[LO,RE]{\slshape \leftmark\/}
|
||||
}
|
||||
|
||||
% Macros
|
||||
\let\oldurl\url%
|
||||
\let\url\undefined%
|
||||
\newcommand{\url}[2][\PackageError{Thesis}{URL requires 2 arguments: \url[date]{address}, e.g.\ \url[07/27/2024]{https://github.com}}{}]{\oldurl{#2} (visited on #1)}
|
||||
\newcommand{\url}[2][\PackageError{Thesis}{URL requires 2 arguments: \url[date]{address}, e.g.\ \url[2024-07-27]{https://github.com}}{}]{\oldurl{#2} (visited on #1)}
|
||||
|
||||
\let\oldref\ref%
|
||||
\let\ref\undefined%
|
||||
\newcommand{\ref}[1]{\PackageError{Thesis}{REF:\ Use \autoref{label} instead}{}}
|
||||
|
||||
\let\oldcite\cite%
|
||||
\let\cite\undefined%
|
||||
\newcommand{\cite}[1]{\PackageError{Thesis}{CITE:\ Use \autocite{ref} instead}{}}
|
||||
|
||||
\newcommand{\sansbf}[1]{{\usekomafont{disposition}#1}}
|
||||
|
||||
\renewcommand{\author}[1]{\gdef\theauthor{#1}}
|
||||
\renewcommand{\title}[1]{\gdef\thetitle{#1}}
|
||||
@@ -124,6 +142,9 @@
|
||||
\newcommand{\advisors}[1]{\gdef\theadvisors{#1}}
|
||||
\newcommand{\dean}[1]{\gdef\thedean{#1}}
|
||||
|
||||
% Hyphenation
|
||||
\hyphenation{Web-Assembly}
|
||||
|
||||
% Default start and end for each subfile (the main.tex is also a subfile!)
|
||||
\AtBeginDocument{%
|
||||
% Capitalize all the section names (has to be placed after \begin{document})
|
||||
@@ -148,71 +169,75 @@
|
||||
pdfcreator={LuaLaTeX}
|
||||
}
|
||||
|
||||
% Macros
|
||||
% \renewcommand{\ref}[1]{\autoref{#1}}
|
||||
\let\oldref\ref%
|
||||
\let\ref\undefined%
|
||||
\newcommand{\ref}[1]{\PackageError{Thesis}{REF:\ Use \autoref{label} instead}{}}
|
||||
% Only compile title/glossaries/toc with the main document
|
||||
\ifSubfilesClassLoaded{}{%
|
||||
\pagestyle{empty}
|
||||
\pagenumbering{gobble}
|
||||
\input{titlepage}
|
||||
\cleardoublepage%
|
||||
|
||||
\let\oldcite\cite%
|
||||
\let\cite\undefined%
|
||||
\newcommand{\cite}[1][\PackageError{Thesis}{CITE:\ Use \autocite{ref} instead}{}]
|
||||
\frontmatter%
|
||||
\pagestyle{plain}
|
||||
\pagenumbering{Roman}
|
||||
\tableofcontents%
|
||||
\cleardoublepage%
|
||||
|
||||
% Visualize "overfull-hbox"
|
||||
\overfullrule=2cm
|
||||
\todototoc\listoftodos%
|
||||
\cleardoublepage%
|
||||
|
||||
% \pagestyle{empty}
|
||||
% \pagenumbering{gobble}
|
||||
|
||||
% Starting pages
|
||||
\frontmatter%
|
||||
\input{titlepage}
|
||||
\cleardoublepage%
|
||||
|
||||
% \pagestyle{plain}
|
||||
% \pagenumbering{Roman}
|
||||
|
||||
% \tableofcontents{\thispagestyle{plain}}
|
||||
\tableofcontents%
|
||||
\cleardoublepage%
|
||||
|
||||
% \pagestyle{report}
|
||||
|
||||
\setacronymstyle{short-long}
|
||||
\printglossary[type=\acronymtype]
|
||||
\cleardoublepage%
|
||||
\printglossary%
|
||||
\setacronymstyle{long-short}
|
||||
\printacronyms%
|
||||
\cleardoublepage%
|
||||
\printglossary%
|
||||
\cleardoublepage%
|
||||
}
|
||||
|
||||
\mainmatter%
|
||||
% \pagenumbering{arabic}
|
||||
\pagestyle{headings}
|
||||
\pagenumbering{arabic}
|
||||
}
|
||||
\AtEndDocument{
|
||||
% \pagestyle{empty}
|
||||
% \pagenumbering{gobble}
|
||||
\backmatter%
|
||||
\pagestyle{plain}
|
||||
\pagenumbering{Roman}
|
||||
|
||||
\let\url\undefined%
|
||||
\let\url\oldurl%
|
||||
\let\cite\undefined%
|
||||
\let\cite\oldcite%
|
||||
|
||||
% Allow wider inter-word-spacing to prevent overfull hboxes in the bibliography
|
||||
\sloppy%
|
||||
\printbibliography[heading=bibintoc]
|
||||
% \printbibliography%
|
||||
\endsloppy%
|
||||
\cleardoublepage%
|
||||
|
||||
\listoffigures%
|
||||
\cleardoublepage%
|
||||
% Only compile lists/declaration with the main document
|
||||
\ifSubfilesClassLoaded{}{%
|
||||
\phantomsection%
|
||||
\addcontentsline{toc}{chapter}{Lists}
|
||||
|
||||
\listofalgorithms%
|
||||
% \addcontentsline{toc}{chapter}{List of Algorithms}
|
||||
\cleardoublepage%
|
||||
\listoffigures%
|
||||
\addcontentsline{toc}{section}{List of Figures}
|
||||
\cleardoublepage%
|
||||
|
||||
\tcblistof[\chapter*]{listings}{List of Listings}
|
||||
% \addcontentsline{toc}{chapter}{List of Listings}
|
||||
\cleardoublepage%
|
||||
\listofalgorithms%
|
||||
\addcontentsline{toc}{section}{List of Algorithms}
|
||||
\cleardoublepage%
|
||||
|
||||
\listoftables%
|
||||
\cleardoublepage%
|
||||
\tcblistof[\chapter*]{listings}{List of Listings}
|
||||
\addcontentsline{toc}{section}{List of Listings}
|
||||
\cleardoublepage%
|
||||
|
||||
\includepdf[pages=-]{declaration.pdf}
|
||||
\listoftables%
|
||||
\addcontentsline{toc}{section}{List of Tables}
|
||||
\cleardoublepage%
|
||||
|
||||
\phantomsection%
|
||||
\addcontentsline{toc}{chapter}{Statutory Declaration}
|
||||
\includepdf[pages=-]{declaration_signed.pdf}
|
||||
}
|
||||
}
|
||||
|
||||
% Colors
|
||||
|
||||
+42
-32
@@ -1,33 +1,43 @@
|
||||
@article{polednaReplicaDeterminismDistributed1994,
|
||||
title = {Replica Determinism in Distributed Real-Time Systems: {{A}} Brief
|
||||
Survey},
|
||||
shorttitle = {Replica Determinism in Distributed Real-Time Systems},
|
||||
author = {Poledna, Stefan},
|
||||
date = {1994-05},
|
||||
journaltitle = {Real-Time Systems},
|
||||
shortjournal = {Real-Time Syst},
|
||||
volume = {6},
|
||||
number = {3},
|
||||
pages = {289--316},
|
||||
issn = {0922-6443, 1573-1383},
|
||||
doi = {10.1007/BF01088629},
|
||||
url = {http://link.springer.com/10.1007/BF01088629},
|
||||
urldate = {2026-03-26},
|
||||
abstract = {Replication of entities is a convenient technique to achieve
|
||||
fault-tolerance. The problem of replica determinism thereby is to
|
||||
assure, that replicated entities show consistent behavior in the
|
||||
absence of failures. Possible sources for replica non-determinism
|
||||
as well as basic requirements and strategies to enforce replica
|
||||
determinism axe presented. The problem of replica determinism
|
||||
enforcement under real-time constraints is surveyed in the
|
||||
context of the communication problem for distributed systems.
|
||||
Furthermore the close interdependence between replica determinism
|
||||
on the one side and synchronization strategies, handling of
|
||||
failures and redundancy preservation on the other side is
|
||||
reviewed. The impact of synchronous or asynchronous approaches on
|
||||
replication strategies is also discussed.},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/DB8GU2TK/Poledna - 1994 -
|
||||
Replica determinism in distributed real-time systems A brief
|
||||
survey.pdf},
|
||||
@inproceedings{TACLeBench,
|
||||
author = {Heiko Falk and Sebastian Altmeyer and Peter Hellinckx and Bj{\"o}rn
|
||||
Lisper and Wolfgang Puffitsch and Christine Rochange and Martin
|
||||
Schoeberl and Rasmus Bo S{\o}rensen and Peter W{\"a}gemann and Simon
|
||||
Wegener},
|
||||
title = {{TACLeBench}: A Benchmark Collection to Support Worst-Case Execution
|
||||
Time Research},
|
||||
booktitle = {16th International Workshop on Worst-Case Execution Time Analysis
|
||||
(WCET 2016)},
|
||||
year = {2016},
|
||||
editor = {Martin Schoeberl},
|
||||
volume = {55},
|
||||
series = {OpenAccess Series in Informatics (OASIcs)},
|
||||
pages = {2:1--2:10},
|
||||
address = {Dagstuhl, Germany},
|
||||
publisher = {Schloss Dagstuhl--Leibniz-Zentrum f\"ur Informatik},
|
||||
}
|
||||
|
||||
@software{seidlerTACLeBenchWasmConverter2026,
|
||||
title = {{{TACLeBench Wasm Converter}}},
|
||||
author = {Seidler, Maximilian and W\"agemann, Peter and Kapitza, R\"udiger},
|
||||
date = {2026-02-17},
|
||||
url = {https://gitos.rrze.fau.de/i4/openaccess/tacle-bench-wasm-converter},
|
||||
organization = {Friedrich-Alexander-Universit\"at Erlangen-N\"urnberg (FAU)},
|
||||
}
|
||||
|
||||
@software{wamr,
|
||||
title = {{WebAssembly Micro Runtime}},
|
||||
author = {{WAMR Contributors}},
|
||||
date = {},
|
||||
organization = {Bytecode Alliance},
|
||||
url = {https://bytecodealliance.github.io/wamr.dev/},
|
||||
urldate = {2026-03-28},
|
||||
}
|
||||
|
||||
@software{bochs,
|
||||
title = {{Bochs IA-32 Emulator Project}},
|
||||
author = {Lawton, Kevin and {BOCHS Contributors}},
|
||||
date = {},
|
||||
organization = {},
|
||||
url = {https://bochs.sourceforge.io/},
|
||||
urldate = {2026-03-28},
|
||||
}
|
||||
|
||||
+10
-11
@@ -1,16 +1,12 @@
|
||||
%! TeX program = lualatex
|
||||
\documentclass[a4paper,11pt,twoside]{book} % Add final to silence TODOs
|
||||
\documentclass[a4paper,11pt,twoside,overfullrule]{scrbook} % Add final to silence TODOs
|
||||
|
||||
\input{preamble.tex}
|
||||
\input{glossary.tex}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\subfile{chapters/examples/examples.tex}
|
||||
\cleardoublepage%
|
||||
|
||||
\subfile{chapters/00_abstract/00_00_abstract.tex}
|
||||
\cleardoublepage%
|
||||
% TODO: Double check the autofilled Zotero references
|
||||
|
||||
\subfile{chapters/01_introduction/01_00_introduction.tex}
|
||||
\cleardoublepage%
|
||||
@@ -18,7 +14,10 @@
|
||||
\subfile{chapters/02_related_work/02_00_related_work.tex}
|
||||
\cleardoublepage%
|
||||
|
||||
\subfile{chapters/03_experiment_design/03_00_experiment_design.tex}
|
||||
\subfile{chapters/03_background/03_00_background.tex}
|
||||
\subfile{chapters/03_background/03_01_wasm.tex}
|
||||
\subfile{chapters/03_background/03_02_wamr.tex}
|
||||
\subfile{chapters/03_background/03_03_fail.tex}
|
||||
\cleardoublepage%
|
||||
|
||||
\subfile{chapters/04_experiment_setup/04_00_experiment_setup.tex}
|
||||
@@ -33,10 +32,10 @@
|
||||
\subfile{chapters/07_conclusion/07_00_conclusion.tex}
|
||||
\cleardoublepage%
|
||||
|
||||
% Appendix
|
||||
|
||||
\backmatter% % Backmatter breaks reference counters into appendices
|
||||
% \pagenumbering{Roman}
|
||||
\appendix
|
||||
% \pagenumbering{Roman}
|
||||
|
||||
\subfile{chapters/examples/examples.tex}
|
||||
\cleardoublepage%
|
||||
|
||||
\end{document}
|
||||
|
||||
+112
-54
@@ -1,68 +1,126 @@
|
||||
\author{Christoph Urlacher}
|
||||
\title{Experimental Evaluation of WebAssembly Under Transient Fault Conditions for Safety-Critical Systems}
|
||||
\thesistype{Master's Thesis}
|
||||
% \thesisid{IDIDID}
|
||||
% \birthday{1st of January 2000}
|
||||
% \birthplace{Ratingen}
|
||||
% \thesisstart{1st of July 2026}
|
||||
\thesisend{31st of December 2026}
|
||||
\birthday{1st of January 2000}
|
||||
\birthplace{Ratingen}
|
||||
\thesisstart{1st of July 2026}
|
||||
\thesisend{December 31st, 1900}
|
||||
\advisors{Prof.\ Dr.-ing.~Peter Ulbrich\\Dr.~Maximilian Seidler}
|
||||
\date{\today}
|
||||
|
||||
|
||||
\begin{titlepage}
|
||||
\setstretch{1.25}
|
||||
\definecolor{TUGreen}{rgb}{0.517,0.721,0.094}
|
||||
% \vspace*{-3cm}
|
||||
\newlength{\links}
|
||||
\setlength{\links}{-1.5cm}
|
||||
\sffamily
|
||||
\hspace*{\links}
|
||||
\begin{minipage}{12.5cm}
|
||||
\includegraphics[width=8cm]{tudo/tud_logo_rgb}
|
||||
\end{minipage}
|
||||
|
||||
\vspace*{4cm}
|
||||
\newgeometry{left=2.5cm,right=2.5cm,top=3cm}
|
||||
|
||||
\hspace*{\links}
|
||||
\hspace*{-0.2cm}
|
||||
\begin{minipage}{9cm}
|
||||
\large
|
||||
\begin{center}
|
||||
{\Large \thethesistype} \\
|
||||
\vspace*{1cm}
|
||||
\textbf{\thetitle} \\
|
||||
\vspace*{1cm}
|
||||
\theauthor\\
|
||||
\thethesisend%
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\normalsize
|
||||
\vspace*{5.5cm}
|
||||
\begin{center}
|
||||
|
||||
\vspace*{2.1cm}
|
||||
\includegraphics[width=6cm]{tud_logo_rgb.jpg}
|
||||
|
||||
\hspace*{\links}
|
||||
\begin{minipage}[b]{8cm}
|
||||
% \normalsize
|
||||
\raggedright%
|
||||
Advisors: \\
|
||||
\theadvisors%
|
||||
\end{minipage}
|
||||
\vspace{0.75cm}
|
||||
|
||||
\vspace*{2.5cm}
|
||||
\hspace*{\links}
|
||||
\begin{minipage}[b]{8cm}
|
||||
\raggedright%
|
||||
Technische Universität Dortmund \\
|
||||
Fakultät für Informatik\\
|
||||
Lehrstuhl 12 -- Arbeitsgruppe Systemsoftware\\
|
||||
\oldurl{https://sys.cs.tu-dortmund.de}
|
||||
\end{minipage}
|
||||
\begin{minipage}[b]{7cm}
|
||||
\raggedleft%
|
||||
In Kooperation mit:\\
|
||||
Fakultätsname\\
|
||||
Lehrstuhl-/Institutsbezeichnung
|
||||
\end{minipage}
|
||||
{\Large\thethesistype}
|
||||
|
||||
\vspace{0.75cm}
|
||||
|
||||
% Thesis title
|
||||
\rule{\textwidth}{0.25mm}\\
|
||||
\vspace{-5pt}
|
||||
\rule{\textwidth}{0.8mm}\\
|
||||
|
||||
{\huge \textsc{\thetitle\\}}
|
||||
|
||||
\rule{\textwidth}{0.8mm}\\
|
||||
\vspace{-5pt}
|
||||
\rule{\textwidth}{0.25mm}
|
||||
|
||||
\vspace{7.5em}
|
||||
|
||||
{submitted by} \\[.6em]
|
||||
{\huge \theauthor} \\[.2em]
|
||||
{from Ratingen}\\
|
||||
|
||||
\vfill
|
||||
|
||||
% Department
|
||||
Department of Computer Science\\
|
||||
Computer Science XII\\
|
||||
System Software Group\\
|
||||
Technical University of Dortmund\\
|
||||
|
||||
\vspace{1cm}
|
||||
|
||||
% Date
|
||||
\vspace{0.5cm}
|
||||
\thethesisend%
|
||||
\vspace{0.5cm}
|
||||
|
||||
% People
|
||||
\begin{tabular}{r l}
|
||||
Primary Reviewer: & Prof.\ Dr.-ing.~Peter Ulbrich \\
|
||||
Secondary Reviewer: & Someone \\
|
||||
Supervisor: & Someone \\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\end{center}
|
||||
|
||||
\end{titlepage}
|
||||
|
||||
% \begin{titlepage}
|
||||
% \setstretch{1.25}
|
||||
% \definecolor{TUGreen}{rgb}{0.517,0.721,0.094}
|
||||
% % \vspace*{-3cm}
|
||||
% \newlength{\links}
|
||||
% \setlength{\links}{-1.5cm}
|
||||
% \sffamily
|
||||
% \hspace*{\links}
|
||||
% \begin{minipage}{12.5cm}
|
||||
% \includegraphics[width=8cm]{tud_logo_rgb.jpg}
|
||||
% \end{minipage}
|
||||
%
|
||||
% \vspace*{4cm}
|
||||
%
|
||||
% \hspace*{\links}
|
||||
% \hspace*{-0.2cm}
|
||||
% \begin{minipage}{9cm}
|
||||
% \large
|
||||
% \begin{center}
|
||||
% {\Large \thethesistype} \\
|
||||
% \vspace*{1cm}
|
||||
% \textbf{\thetitle} \\
|
||||
% \vspace*{1cm}
|
||||
% \theauthor\\
|
||||
% \thethesisend%
|
||||
% \end{center}
|
||||
% \end{minipage}
|
||||
% \normalsize
|
||||
% \vspace*{5.5cm}
|
||||
%
|
||||
% \vspace*{2.1cm}
|
||||
%
|
||||
% \hspace*{\links}
|
||||
% \begin{minipage}[b]{8cm}
|
||||
% % \normalsize
|
||||
% \raggedright%
|
||||
% Advisors: \\
|
||||
% \theadvisors%
|
||||
% \end{minipage}
|
||||
%
|
||||
% \vspace*{2.5cm}
|
||||
% \hspace*{\links}
|
||||
% \begin{minipage}[b]{8cm}
|
||||
% \raggedright%
|
||||
% Technische Universität Dortmund \\
|
||||
% Fakultät für Informatik\\
|
||||
% Lehrstuhl 12 -- Arbeitsgruppe Systemsoftware\\
|
||||
% \oldurl{https://sys.cs.tu-dortmund.de}
|
||||
% \end{minipage}
|
||||
% \begin{minipage}[b]{7cm}
|
||||
% \raggedleft%
|
||||
% In Kooperation mit:\\
|
||||
% Fakultätsname\\
|
||||
% Lehrstuhl-/Institutsbezeichnung
|
||||
% \end{minipage}
|
||||
%
|
||||
% \end{titlepage}
|
||||
|
||||
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
+245
@@ -0,0 +1,245 @@
|
||||
@inproceedings{chenImprovingJavaVirtual2005,
|
||||
title = {Improving Java Virtual Machine Reliability for Memory-Constrained Embedded Systems},
|
||||
booktitle = {Proceedings of the 42nd Annual Conference on {{Design}} Automation - {{DAC}} '05},
|
||||
author = {Chen, Guangyu and Kandemir, Mahmut},
|
||||
date = {2005},
|
||||
pages = {690},
|
||||
publisher = {ACM Press},
|
||||
location = {San Diego, California, USA},
|
||||
doi = {10.1145/1065579.1065761},
|
||||
url = {http://portal.acm.org/citation.cfm?doid=1065579.1065761},
|
||||
urldate = {2026-03-26},
|
||||
abstract = {Dual-execution/checkpointing based transient error tolerance techniques have been widely used in the high-end mission critical systems. These techniques, however, are not very attractive for cost-sensitive embedded systems because they require extra resources (e.g., large memory, special hardware, etc), and thus increase overall cost of the system. In this paper, we propose a transient error tolerant Java Virtual Machine (JVM) implementation for embedded systems. Our JVM uses dual-execution and checkpointing to detect and recover from transient errors. However, our technique does not require any special hardware support (except for the memory page protection mechanism, which is commonly available in modern embedded processors), and the memory space overhead it incurs is not excessive. Therefore, it is suitable for memory-constrained embedded systems. We implemented our approach and performed experiments with seven embedded Java applications.},
|
||||
eventtitle = {The 42nd Annual Conference},
|
||||
isbn = {978-1-59593-058-3},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/FKKICG9F/Chen and Kandemir - 2005 - Improving java virtual machine reliability for memory-constrained embedded systems.pdf}
|
||||
}
|
||||
|
||||
@article{forinVitalCodedMicroprocessor1990,
|
||||
title = {Vital {{Coded Microprocessor Principles}} and {{Application}} for {{Various Transit Systems}}},
|
||||
author = {Forin, P.},
|
||||
date = {1990-09},
|
||||
journaltitle = {IFAC Proceedings Volumes},
|
||||
shortjournal = {IFAC Proceedings Volumes},
|
||||
volume = {23},
|
||||
number = {2},
|
||||
pages = {79--84},
|
||||
issn = {14746670},
|
||||
doi = {10.1016/S1474-6670(17)52653-1},
|
||||
url = {https://linkinghub.elsevier.com/retrieve/pii/S1474667017526531},
|
||||
urldate = {2026-03-30},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/77H4FFUQ/Forin - 1990 - Vital Coded Microprocessor Principles and Application for Various Transit Systems.pdf}
|
||||
}
|
||||
|
||||
@inproceedings{hoffmannPractitionersGuideSoftwareBased2014,
|
||||
title = {A {{Practitioner}}'s {{Guide}} to {{Software-Based Soft-Error Mitigation Using AN-Codes}}},
|
||||
booktitle = {2014 {{IEEE}} 15th {{International Symposium}} on {{High-Assurance Systems Engineering}}},
|
||||
author = {Hoffmann, Martin and Ulbrich, Peter and Dietrich, Christian and Schirmeier, Horst and Lohmann, Daniel and Schroder-Preikschat, Wolfgang},
|
||||
date = {2014-01},
|
||||
pages = {33--40},
|
||||
publisher = {IEEE},
|
||||
location = {Miami Beach, FL, USA},
|
||||
doi = {10.1109/HASE.2014.14},
|
||||
url = {http://ieeexplore.ieee.org/document/6754585/},
|
||||
urldate = {2026-01-05},
|
||||
abstract = {Arithmetic error coding schemes (AN codes1) are a well known and effective technique for soft error mitigation. Although coding theory being a rich area of mathematics, their implementation seems to be fairly easy. However, compliance with the theory can be lost easily while moving towards an actual implementation – finally jeopardizing the aspired fault-tolerance characteristics. In this paper, we present our experiences and lessons learned from implementing AN codes in the CoRed dependable voter. We focus on the challenges and pitfalls in the transition from maths to machine code for a binary computer from a systems perspective. Our results show, that practical misconceptions (such as the use of prime numbers) and architecturedependent implementation glitches occur at every stage of this transition. We identify typical pitfalls and describe practical measures to find and resolve them. Our measures eliminate all remaining SDCs in the CoRed voter, which is validated by an extensive fault-injection campaign that covers 100 percent of the fault space for 1-bit and 2-bit errors.},
|
||||
eventtitle = {2014 {{IEEE}} 15th {{International Symposium}} on {{High-Assurance Systems Engineering}} ({{HASE}})},
|
||||
isbn = {978-1-4799-3466-9 978-1-4799-3465-2},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/CY3ULLCA/Hoffmann et al. - 2014 - A Practitioner's Guide to Software-Based Soft-Error Mitigation Using AN-Codes.pdf}
|
||||
}
|
||||
|
||||
@article{polednaReplicaDeterminismDistributed1994,
|
||||
title = {Replica Determinism in Distributed Real-Time Systems: {{A}} Brief Survey},
|
||||
shorttitle = {Replica Determinism in Distributed Real-Time Systems},
|
||||
author = {Poledna, Stefan},
|
||||
date = {1994-05},
|
||||
journaltitle = {Real-Time Systems},
|
||||
shortjournal = {Real-Time Syst},
|
||||
volume = {6},
|
||||
number = {3},
|
||||
pages = {289--316},
|
||||
issn = {0922-6443, 1573-1383},
|
||||
doi = {10.1007/BF01088629},
|
||||
url = {http://link.springer.com/10.1007/BF01088629},
|
||||
urldate = {2026-03-26},
|
||||
abstract = {Replication of entities is a convenient technique to achieve fault-tolerance. The problem of replica determinism thereby is to assure, that replicated entities show consistent behavior in the absence of failures. Possible sources for replica non-determinism as well as basic requirements and strategies to enforce replica determinism axe presented. The problem of replica determinism enforcement under real-time constraints is surveyed in the context of the communication problem for distributed systems. Furthermore the close interdependence between replica determinism on the one side and synchronization strategies, handling of failures and redundancy preservation on the other side is reviewed. The impact of synchronous or asynchronous approaches on replication strategies is also discussed.},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/DB8GU2TK/Poledna - 1994 - Replica determinism in distributed real-time systems A brief survey.pdf}
|
||||
}
|
||||
|
||||
@incollection{schiffelANBANBDmemEncodingDetecting2010,
|
||||
title = {{{ANB-}} and {{ANBDmem-Encoding}}: {{Detecting Hardware Errors}} in {{Software}}},
|
||||
shorttitle = {{{ANB-}} and {{ANBDmem-Encoding}}},
|
||||
booktitle = {Computer {{Safety}}, {{Reliability}}, and {{Security}}},
|
||||
author = {Schiffel, Ute and Schmitt, André and Süßkraut, Martin and Fetzer, Christof},
|
||||
editor = {Schoitsch, Erwin},
|
||||
editora = {Hutchison, David and Kanade, Takeo and Kittler, Josef and Kleinberg, Jon M. and Mattern, Friedemann and Mitchell, John C. and Naor, Moni and Nierstrasz, Oscar and Pandu Rangan, C. and Steffen, Bernhard and Sudan, Madhu and Terzopoulos, Demetri and Tygar, Doug and Vardi, Moshe Y. and Weikum, Gerhard},
|
||||
editoratype = {redactor},
|
||||
date = {2010},
|
||||
volume = {6351},
|
||||
pages = {169--182},
|
||||
publisher = {Springer Berlin Heidelberg},
|
||||
location = {Berlin, Heidelberg},
|
||||
doi = {10.1007/978-3-642-15651-9_13},
|
||||
url = {http://link.springer.com/10.1007/978-3-642-15651-9_13},
|
||||
urldate = {2026-03-29},
|
||||
abstract = {It is expected that commodity hardware is becoming less reliable because of the continuously decreasing feature sizes of integrated circuits. Nevertheless, more and more commodity hardware with insufficient error detection is used in critical applications. One possible solution is to detect hardware errors in software using arithmetic AN-codes. These codes detect hardware errors independent of the actual failure modes of the underlying hardware. However, measurements have shown that AN-codes still exhibit large rates of undetected silent data corruptions (SDC). These high rates of undetected SDCs are caused by the insufficient protection of control and data flow through AN-codes. In contrast, ANB- and ANBD-codes promise much higher error detection rates because they also detect errors in control and data flow. We present our encoding compiler that automatically applies either an AN-, ANBor ANBD-code to an application. Our error injections show that AN-, ANB-, and ANBD-codes successfully detect errors and more important that indeed ANB- and ANBD-codes reduce the SDC rate more effectively than AN-codes. The difference between ANBD- and ANB-codes is also visible but less pronounced.},
|
||||
isbn = {978-3-642-15650-2 978-3-642-15651-9},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/VU7Y6B54/Schiffel et al. - 2010 - ANB- and ANBDmem-Encoding Detecting Hardware Errors in Software.pdf}
|
||||
}
|
||||
|
||||
@thesis{schiffelHardwareErrorDetection2011,
|
||||
type = {phdthesis},
|
||||
title = {Hardware {{Error Detection Using AN-Codes}}},
|
||||
author = {Schiffel, Ute},
|
||||
date = {2011},
|
||||
institution = {Technical University of Dresden},
|
||||
location = {Dresden},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/7BXMSTFW/Hardware_Error_Detection_Using_AN_Codes.pdf}
|
||||
}
|
||||
|
||||
@thesis{schirmeierEfficientFaultInjectionbasedAssessment,
|
||||
type = {phdthesis},
|
||||
title = {Efficient {{Fault-Injection-based Assessment}} of {{Software-Implemented Hardware Fault Tolerance}}},
|
||||
author = {Schirmeier, Horst},
|
||||
date = {2016},
|
||||
institution = {Technical University of Dortmund},
|
||||
location = {Dortmund},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/MIBRJ5DT/Schirmeier - Efficient Fault-Injection-based Assessment of Software-Implemented Hardware Fault Tolerance.pdf}
|
||||
}
|
||||
|
||||
@inproceedings{schirmeierFAILOpenVersatile2015,
|
||||
title = {{{FAIL}}*: {{An Open}} and {{Versatile Fault-Injection Framework}} for the {{Assessment}} of {{Software-Implemented Hardware Fault Tolerance}}},
|
||||
shorttitle = {{{FAIL}}*},
|
||||
booktitle = {2015 11th {{European Dependable Computing Conference}} ({{EDCC}})},
|
||||
author = {Schirmeier, Horst and Hoffmann, Martin and Dietrich, Christian and Lenz, Michael and Lohmann, Daniel and Spinczyk, Olaf},
|
||||
date = {2015-09},
|
||||
pages = {245--255},
|
||||
publisher = {IEEE},
|
||||
location = {Paris, France},
|
||||
doi = {10.1109/EDCC.2015.28},
|
||||
url = {https://ieeexplore.ieee.org/document/7371972/},
|
||||
urldate = {2026-03-29},
|
||||
abstract = {Due to voltage and structure shrinking, the influence of radiation on a circuit’s operation increases, resulting in future hardware designs exhibiting much higher rates of soft errors. Software developers have to cope with these effects to ensure functional safety. However, software-based hardware fault tolerance is a holistic property that is tricky to achieve in practice, potentially impaired by every single design decision. We present FAIL*, an open and versatile architecture-level fault-injection (FI) framework for the continuous assessment and quantification of fault tolerance in an iterative software development process. FAIL* supplies the developer with reusable and composable FI campaigns, advanced pre- and post-processing analyses to easily identify sensitive spots in the software, wellabstracted back-end implementations for several hardware and simulator platforms, and scalability of FI campaigns by providing massive parallelization. We describe FAIL*, its application to the development process of safety-critical software, and the lessons learned from a real-world example.},
|
||||
eventtitle = {2015 11th {{European Dependable Computing Conference}} ({{EDCC}})},
|
||||
isbn = {978-1-4673-9289-1},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/DVEUWLJJ/Schirmeier et al. - 2015 - FAIL An Open and Versatile Fault-Injection Framework for the Assessment of Software-Implemented Ha.pdf}
|
||||
}
|
||||
|
||||
@article{schirmeierFAILVersatileFaultInjection2012,
|
||||
title = {{{FAIL}}*: {{Towards}} a {{Versatile Fault-Injection Experiment Framework}}},
|
||||
author = {Schirmeier, Horst and Hoffmann, Martin and Kapitza, Rüdiger and Lohmann, Daniel and Spinczyk, Olaf},
|
||||
date = {2012-01},
|
||||
abstract = {Many years of research on dependable, faulttolerant software systems yielded many tool implementations for vulnerability analysis and experimental validation of resilience measures. We identify two disjoint classes of fault-injection (FI) experiment tools in the field, and argue that both are plagued by inherent deficiencies, such as insufficient target state access, little or no means to switch to another target system, and non-reusable experiment code.},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/G9SATNLR/Schirmeier et al. - FAIL Towards a Versatile Fault-Injection Experiment Framework.pdf}
|
||||
}
|
||||
|
||||
@book{slettenWebAssemblyDefinitiveGuide2021,
|
||||
title = {{{WebAssembly}}: The Definitive Guide: Safe, Fast, and Portable Code},
|
||||
shorttitle = {{{WebAssembly}}},
|
||||
author = {Sletten, Brian},
|
||||
date = {2021},
|
||||
edition = {First edition},
|
||||
publisher = {O'Reilly Media},
|
||||
location = {Sebastopol, CA},
|
||||
abstract = {"WebAssembly: The Definitive Guide is a thorough and accessible introduction to one of the most transformative technologies hitting our industry. What started as a way to use languages other than JavaScript in the browser has evolved into a comprehensive path toward portability, performance, increased security, and greater code reuse across an impressive collection of deployment targets. Author Brian Sletten introduces elements of this technology incrementally while building to several concrete, code-driven examples of practical, cutting-edge WebAssembly uses. Whether you work with enterprise software or embedded systems, or in entertainment, scientific computing, or startup environments, you'll learn how WebAssembly can have a positive impact on the way you develop software." -- Back cover},
|
||||
isbn = {978-1-4920-8984-1},
|
||||
pagetotal = {317},
|
||||
keywords = {Application software,Assembly languages (Electronic computers),Computer programs,Development,Développement,Développement Logiciels,Guides et manuels,Handbook,Handbooks and manuals,Internet programming,Langage assembleur (Langage de programmation),Logiciels d'application,Programmation Internet,Sites Web,Web site development},
|
||||
file = {/home/christoph/Notes/Zotero/storage/82VVGKJV/Sletten - 2021 - WebAssembly the definitive guide safe, fast, and portable code.pdf}
|
||||
}
|
||||
|
||||
@article{soloukiDependabilityEmbeddedSystems2024,
|
||||
title = {Dependability in {{Embedded Systems}}: {{A Survey}} of {{Fault Tolerance Methods}} and {{Software-Based Mitigation Techniques}}},
|
||||
shorttitle = {Dependability in {{Embedded Systems}}},
|
||||
author = {Solouki, Mohammadreza Amel and Angizi, Shaahin and Violante, Massimo},
|
||||
date = {2024},
|
||||
journaltitle = {IEEE Access},
|
||||
shortjournal = {IEEE Access},
|
||||
volume = {12},
|
||||
pages = {180939--180967},
|
||||
issn = {2169-3536},
|
||||
doi = {10.1109/ACCESS.2024.3509633},
|
||||
url = {https://ieeexplore.ieee.org/document/10772080/},
|
||||
urldate = {2026-03-26},
|
||||
abstract = {Fault tolerance is a critical aspect of modern computing systems, ensuring correct functionality in the presence of faults. This paper presents a comprehensive survey of fault tolerance methods and mitigation techniques in embedded systems, with a focus on both software and hardware faults. Emphasis is placed on real-time embedded systems, considering their resource constraints and the increasing interconnectivity of computing systems in commercial and industrial applications. The survey covers various fault tolerance methods, including hardware, software, and hybrid redundancy. Particular attention is given to software faults, acknowledging their significance as a leading cause of system failures, while also addressing hardware faults and their mitigation. Moreover, the paper explores the challenges posed by soft errors in modern computing systems. The survey concludes by emphasizing the need for continued research and development in fault tolerance methods, specifically in the context of real-time embedded systems, and highlights the potential for extending fault tolerance approaches to diverse computing environments.},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/7I9EXB4N/Solouki et al. - 2024 - Dependability in Embedded Systems A Survey of Fault Tolerance Methods and Software-Based Mitigation.pdf}
|
||||
}
|
||||
|
||||
@inproceedings{ulbrichEliminatingSinglePoints2012,
|
||||
title = {Eliminating {{Single Points}} of {{Failure}} in {{Software-Based Redundancy}}},
|
||||
booktitle = {2012 {{Ninth European Dependable Computing Conference}}},
|
||||
author = {Ulbrich, P. and Hoffmann, M. and Kapitza, R. and Lohmann, D. and Schroder-Preikschat, W. and Schmid, R.},
|
||||
date = {2012-05},
|
||||
pages = {49--60},
|
||||
publisher = {IEEE},
|
||||
location = {Sibiu},
|
||||
doi = {10.1109/EDCC.2012.21},
|
||||
url = {http://ieeexplore.ieee.org/document/6214760/},
|
||||
urldate = {2026-01-07},
|
||||
eventtitle = {2012 {{Ninth European Dependable Computing Conference}} ({{EDCC}})},
|
||||
isbn = {978-1-4673-0938-7 978-0-7695-4671-1},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/8QZAMSR7/Ulbrich et al. - 2012 - Eliminating Single Points of Failure in Software-Based Redundancy.pdf}
|
||||
}
|
||||
|
||||
@incollection{wapplerSoftwareEncodedProcessing2007,
|
||||
title = {Software {{Encoded Processing}}: {{Building Dependable Systems}} with {{Commodity Hardware}}},
|
||||
shorttitle = {Software {{Encoded Processing}}},
|
||||
booktitle = {Computer {{Safety}}, {{Reliability}}, and {{Security}}},
|
||||
author = {Wappler, Ute and Fetzer, Christof},
|
||||
editor = {Saglietti, Francesca and Oster, Norbert},
|
||||
editora = {Hutchison, David and Kanade, Takeo and Kittler, Josef and Kleinberg, Jon M. and Mattern, Friedemann and Mitchell, John C. and Naor, Moni and Nierstrasz, Oscar and Pandu Rangan, C. and Steffen, Bernhard and Sudan, Madhu and Terzopoulos, Demetri and Tygar, Doug and Vardi, Moshe Y. and Weikum, Gerhard},
|
||||
editoratype = {redactor},
|
||||
date = {2007},
|
||||
volume = {4680},
|
||||
pages = {356--369},
|
||||
publisher = {Springer Berlin Heidelberg},
|
||||
location = {Berlin, Heidelberg},
|
||||
doi = {10.1007/978-3-540-75101-4_34},
|
||||
url = {http://link.springer.com/10.1007/978-3-540-75101-4_34},
|
||||
urldate = {2026-03-26},
|
||||
abstract = {In future, the decreasing feature size and the reduced power supply will make it much more difficult to built reliable microprocessors. Economic pressure will most likely result in the reliability of microprocessors being tuned for the commodity market. In the dependability domain we expect the continued spreading of mixed-mode computing systems, i.e., systems that execute both critical and non-critical functionality. To permit the efficient execution of non-critical applications and the correct execution of critical applications, we introduce the concept of Software Encoded Processing (SEP). SEP enforces a crash failure semantics of the underlying CPU. It does not require the source code of encoded programs and provides probabilistic guarantees. To achieve this, arithmetic codes and signatures are used to detect corrupted data and faulty executions of programs.},
|
||||
isbn = {978-3-540-75100-7 978-3-540-75101-4},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/VQT3AEQF/Wappler and Fetzer - 2007 - Software Encoded Processing Building Dependable Systems with Commodity Hardware.pdf}
|
||||
}
|
||||
|
||||
@misc{wasm1spec,
|
||||
title = {{{WebAssembly}} 1.0 {{Specification}}},
|
||||
author = {{WebAssembly Community Group} and Rossberg, Andreas},
|
||||
date = {2019-07-20},
|
||||
url = {https://webassembly.github.io/spec/versions/core/WebAssembly-1.0.pdf},
|
||||
urldate = {2026-07-01},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/WQV9G6TQ/WebAssembly Community Group and Rossberg - 2019 - WebAssembly 1.0 Specification.pdf}
|
||||
}
|
||||
|
||||
@misc{wasm2spec,
|
||||
title = {{{WebAssembly}} 2.0 {{Specification}}},
|
||||
author = {{WebAssembly Community Group} and Rossberg, Andreas},
|
||||
date = {2025-09-16},
|
||||
url = {https://webassembly.github.io/spec/versions/core/WebAssembly-2.0.pdf},
|
||||
urldate = {2026-07-01},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/DKNDNCPF/WebAssembly Community Group and Rossberg - 2025 - WebAssembly 2.0 Specification.pdf}
|
||||
}
|
||||
|
||||
@misc{wasm3spec,
|
||||
title = {{{WebAssembly}} 3.0 {{Specification}} ({{Draft}})},
|
||||
author = {{WebAssembly Community Group} and Rossberg, Andreas},
|
||||
date = {2026-06-25},
|
||||
url = {https://webassembly.github.io/spec/core/_download/WebAssembly.pdf},
|
||||
urldate = {2026-07-01},
|
||||
langid = {english},
|
||||
file = {/home/christoph/Notes/Zotero/storage/8YB9FEXY/WebAssembly Community Group and Rossberg - 2026 - WebAssembly 3.0 Specification (Draft).pdf}
|
||||
}
|
||||
Reference in New Issue
Block a user