What's happening in Shadow 2021-07 #1485
sporksmith
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This is part of a series of periodic updates of development in Shadow. This work is sponsored by the NSF. Previous update: 2021-04.
Shadow 2.0.0-pre release
Shadow 2.0, which features the new process-based architecture is now in pre-release! We've merged the
dev
branch intomain
, and tagged v2.0.0-pre.1. For users, this means:Users migrating existing simulations and scripts should have a look at our migration guide.
Progress since the last update
We're still experimenting a bit with how to use GitHub's various project management tools. We've started using "projects" to represent Shadow releases. For example, you can see the issues for the v2.0.0 release here.
Notable changes since the April update: (By milestone; #'s are GitHub PR or issue #'s):
combination with preload-based interposition. More on that in "What's
next", below. So far we've already implemented and enabled it (thread_preload: use seccomp to interpose all syscalls #1452, seccomp: Disable Speculative Store Bypass mitigation #1471).
(Switch from graphml to gml #1369).
~/.shadow
to~/.local
. (Change install prefix to '~/.local' #1404)What's next
We'll be continuing to gain experience running Shadow experiments with the 2.0.0 pre-release. We will be working to fix bugs, tie up some loose ends and smooth out some rough edges, and generally stabilize the code as we continue to prepare for a 2.0.0 stable release.
We're currently tracking outstanding work on the 2.0.0 release page.
Seccomp
In the course of our work on the 2.x architecture we've largely been exploring two system call interposition mechanisms that allow us to co-opt running processes into a simulation -
LD_PRELOAD
(similar to what Shadow 1.x uses), andptrace
. While preload-based interposition has better performance, and plays better with debuggers, we've largely been focusing on the ptrace-based approach because it can reliably catch all syscalls without having to re-implement large parts of libc and/or rely on undocumented glibc implementation details. This has allowed us to work out all of the Shadow internals that needed to change to support interposition at the Linux system call interface.Recently, though, we added seccomp-based interposition to the preload-based interposition mode. This reliably catches any syscalls that would otherwise be missed by our
LD_PRELOAD
wrappers. We also have a working prototype of this mode of operation with thread support, which was previously the biggest missing functionality in preload-mode. Assuming thread support gets merged as expected and no other problems crop up, this is likely to become the new default mode of operation; it's faster than ptrace, and it allows us to trace the processes running in Shadow using debugging tools such asgdb
.Happy simulating!
The Shadow team
Beta Was this translation helpful? Give feedback.
All reactions