{{ message }}
Repository navigation
v2.1.0
Shadow v2.1.0 is a minor release following our significant redesign of Shadow in v2.0.0. See the v2.0.0 release notes for more details about Shadow's new multi-process architecture.
This v2.1.0 release has largely focused on improving support for running various types of applications in Shadow while smoothing some of the rough edges introduced in v2.0.0.
We plan to focus our next release on rust migration, and we expect that Rust will become Shadow's primary programming language in v2.2.0!
New features
- support for applications that depend on signals
- support for dynamically linked Go applications
- support for abstract-named unix sockets
- VDSO-based function interposition
- simulation progress messages (
general.progress) - custom capture sizes for the pcap writer (
host_defaults.pcap_capture_size) - system call latency modeling (
general.model_unblocked_syscall_latency). This feature allows Shadow to escape some "busy loops" it couldn't before, avoiding deadlock in e.g. some versions of curl, iperf, libopenblas, and the golang runtime. - a
--debug-hostsoption to make debugging managed processes easier
New system calls
select()getitimer()setitimer()SYS_rseq
New supported platforms
- Ubuntu 22.04
- Fedora 35 and 36
Changes
- significantly improved determinism
O_DIRECTflag (packet mode) support for pipesioctl()support for pipes- SYN packets have a sequence number and are now retransmitted if they are not acknowledged
- TCP sockets have finite-sized accept queues/backlogs
listen()can be called more than once for TCP sockets to set the backlog- improved error reporting if a process did not start or was killed unexpectedly (for example by the OS)
- improved
ioctl()file flag handling for regular files TCP_NODELAYcan be enabled for TCP sockets- added limited support for the
TCP_CONGESTIONsocket option - pcap writer supports UDP packets
- improved behaviour when one thread closes a file while another thread is blocked on a syscall that uses that file
Bug fixes
- fixed broken eventfd and exit syscalls
- fixed behaviour when reading/writing to a pipe
- fixed memory leak when calling
getservbyname_r() - fixed incorrect return value for
getaddrinfo() - host log level is propagated to the shim log level
- fixed crash on systems with 64-bit inodes
We've made many other internal improvements, added new test cases, and expanded our documentation.
