async-crashdump-debugging initiative

initiative status: active

What is this?

This page tracks the work of the async-crashdump-debugging initiative! To learn more about what we are trying to do, and to find out the people who are doing it, take a look at the charter.

Current status

The following table lists of the stages of an initiative, along with links to the artifacts that will be produced during that stage.

StageStateArtifact(s)
Proposal✅Proposal issue
Charter
Tracking issue
Experimental🦀Evaluation
Development💤Explainer
Feature complete💤Stabilization report
Stabilized💤

Key:

  • ✅ -- phase complete
  • 🦀 -- phase in progress
  • 💤 -- phase not started yet

How Can I Get Involved?

  • Check for 'help wanted' issues on this repository!
  • If you would like to help with development, please contact the owner to find out if there are things that need doing.
  • If you would like to help with the design, check the list of active design discussions first.
  • If you have questions about the design, you can file an issue, but be sure to check the FAQ or the design-discussions first to see if there is already something that covers your topic.
  • If you are using the feature and would like to provide feedback about your experiences, please [open a "experience report" issue].
  • If you are using the feature and would like to report a bug, please open a regular issue.

We also participate on Zulip, feel free to introduce yourself over there and ask us any questions you have.

Building Documentation

This repository is also an mdbook project. You can view and build it using the following command.

mdbook serve

📜 async-crashdump-debugging Charter

The goal of this initiative is to provide tools that simplify debugging crashdumps of async Rust programs.

Proposal

In particular the initiative strives to provide:

  • Debugger plugins for GDB and WinDbg/CDB that help with
    • finding executors from various runtimes (future-rs, Tokio, smol)
    • listing tasks currently being owned by a given executor
    • mapping a task object to the source definition it represents
    • creating logical stack traces that shows dependencies between tasks and resources
  • A test framework for debugger plugins
  • A guide for writing plugins for other debuggers
  • A guide for forking and extending debugging plugins in order to support custom, proprietary executor runtimes
  • Integration with tokio-console (?)

Debugging a crashdump of an async Rust program requires both intimiate knowledge of executor runtime internals and a certain level of expertise in using debuggers. It is the goal of this initiative to provide a toolbox that makes this task less daunting. A good portion of the more difficult debugger interactions can be automated via plugins.

Membership

RoleGithubZulip
Ownermichaelwoeristermw
Liaisonpnkfelixpnkfelix

🔬 Evaluation

The evaluation surveys the various design approaches that are under consideration. It is not required for all initiatives, only those that begin with a problem statement but without a clear picture of the best solution. Often the evaluation will refer to topics in the design-discussions for more detailed consideration.

📚 Explainer

The "explainer" is "end-user readable" documentation that explains how to use the feature being deveoped by this initiative. If you want to experiment with the feature, you've come to the right place. Until the feature enters "feature complete" form, the explainer should be considered a work-in-progress.

Design discussions

This directory hosts notes on important design discussions along with their resolutions. In the table of contents, you will find the overall status:

  • ✅ -- Settled! Input only needed if you have identified a fresh consideration that is not covered by the write-up.
  • 💬 -- Under active discussion. Check the write-up, which may contain a list of questions or places where feedback is desired.
  • 💤 -- Paused. Not under active discussion, but we may be updating the write-up from time to time with details.

😕 Frequently asked questions

This page lists frequently asked questions about the design. It often redirects to the other pages on the site.

What is the goal of this initiative?

See the Charter.

Who is working on it!

See the Charter.