reverie/safeptrace
Sean Lawlor ad12ef9ecb
Some checks failed
ci / Check (push) Has been cancelled
ci / Test Suite (push) Has been cancelled
ci / Clippy (push) Has been cancelled
Vendor ractor 0.12.4 and upgrade tokio to 1.41.0
Summary:
From release notes:

Ractor v0.12.4 is released!

In this release there are 2 primary changes
1. We're adding the ability to runtime inspect the message type of an untyped `ActorCell` which can be helpful for supervision flows
2. We're also adding helpers for interacting with a supervisor's children (retrieval of the children, stopping them, and draining them) without having to have the supervisor keep additional handles around

Both are in #277

Tokio is being upgraded to add support for `join_all()` in `JoinSet` which `ractor` leverages (easier to upgrade than backport a hack into ractor)

Reviewed By: Imxset21

Differential Revision: D64833735

fbshipit-source-id: 897302bf95467310131348f1ee8c1f766e81f725
2024-10-24 09:02:47 -07:00
..
src Update bitflags to 2.4 2024-01-16 00:38:02 -08:00
Cargo.toml Vendor ractor 0.12.4 and upgrade tokio to 1.41.0 2024-10-24 09:02:47 -07:00
README.md Prepare safeptrace to be published as a crate 2023-03-25 16:12:24 -07:00

A safe ptrace interface

This crate provides a safe and Rustic alternative to the infamous ptrace API. There are many extremely subtle aspects of the raw ptrace API and this crate helps avoid common pitfalls.

Note that this library is still rather low-level and does not claim to solve all your ptrace problems. You have been warned!

Features

  • Ergonomic interface that provides a state machine for ptrace states. This avoids the infamous ESRCH errors that can happen when you use the ptrace API incorrectly.
  • Provides an interface to read/write guest's memory (see "memory" feature flag).
  • Provides an optional and semi-experimental async interface, which can be used with tokio (see "notifier" feature).

Usage

Add this to your Cargo.toml file:

safeptrace = "0.1"

Feature Flags

"memory" (off by default)

Provides access to the guest's memory. Memory can only be safely accessed when the guest is in a stopped state, thus the MemoryAccess trait is only implemented for the Stopped type.

"notifier" (off by default)

Provides an async interface for ptrace using notifier threads. This is semi-experimental, but testing shows that it has very good performance. It works by spawning a separate thread for each thread being traced, waiting for ptrace events in a loop. Thus, there will be 1 thread per guest thread.

Use with:

safeptrace = { version = "0.1", features = ["async"] }