@@ -406,9 +406,26 @@ cfg_taskdump! {
406406/// # } 
407407/// ``` 
408408/// 
409+ /// This produces highly detailed traces of tasks; e.g.: 
410+ /// 
411+ /// ```plain 
412+ /// TASK 0: 
413+ /// ╼ dump::main::{{closure}}::a::{{closure}} at /tokio/examples/dump.rs:18:20 
414+ /// └╼ dump::main::{{closure}}::b::{{closure}} at /tokio/examples/dump.rs:23:20 
415+ ///    └╼ dump::main::{{closure}}::c::{{closure}} at /tokio/examples/dump.rs:28:24 
416+ ///       └╼ tokio::sync::barrier::Barrier::wait::{{closure}} at /tokio/tokio/src/sync/barrier.rs:129:10 
417+ ///          └╼ <tokio::util::trace::InstrumentedAsyncOp<F> as core::future::future::Future>::poll at /tokio/tokio/src/util/trace.rs:77:46 
418+ ///             └╼ tokio::sync::barrier::Barrier::wait_internal::{{closure}} at /tokio/tokio/src/sync/barrier.rs:183:36 
419+ ///                └╼ tokio::sync::watch::Receiver<T>::changed::{{closure}} at /tokio/tokio/src/sync/watch.rs:604:55 
420+ ///                   └╼ tokio::sync::watch::changed_impl::{{closure}} at /tokio/tokio/src/sync/watch.rs:755:18 
421+ ///                      └╼ <tokio::sync::notify::Notified as core::future::future::Future>::poll at /tokio/tokio/src/sync/notify.rs:1103:9 
422+ ///                         └╼ tokio::sync::notify::Notified::poll_notified at /tokio/tokio/src/sync/notify.rs:996:32 
423+ /// ``` 
424+ /// 
409425/// # Requirements 
410426/// 
411427/// ## Debug Info Must Be Available 
428+ /// 
412429/// To produce task traces, the application must **not** be compiled 
413430/// with split debuginfo. On Linux, including debuginfo within the 
414431/// application binary is the (correct) default. You can further ensure 
@@ -419,9 +436,30 @@ cfg_taskdump! {
419436/// split-debuginfo = "off" 
420437/// ``` 
421438/// 
439+ /// ## Unstable Features 
440+ /// 
441+ /// This functionality is **unstable**, and requires both the 
442+ /// `tokio_unstable` and `tokio_taskdump` cfg flags to be set. 
443+ /// 
444+ /// You can do this by setting the `RUSTFLAGS` environment variable 
445+ /// before invoking `cargo`; e.g.: 
446+ /// ```bash 
447+ /// RUSTFLAGS="--cfg tokio_unstable --cfg tokio_taskdump" cargo run --example dump 
448+ /// ``` 
449+ /// 
450+ /// Or by [configuring][cargo-config] `rustflags` in 
451+ /// `.cargo/config.toml`: 
452+ /// ```text 
453+ /// [build] 
454+ /// rustflags = ["--cfg tokio_unstable", "--cfg tokio_taskdump"] 
455+ /// ``` 
456+ /// 
457+ /// [cargo-config]: 
458+ ///     https://doc.rust-lang.org/cargo/reference/config.html 
459+ /// 
422460/// ## Platform Requirements 
423461/// 
424- /// Task dumps are supported on Linux atop x86 and x86_64. 
462+ /// Task dumps are supported on Linux atop aarch64,  x86 and x86_64. 
425463/// 
426464/// ## Current Thread Runtime Requirements 
427465/// 
@@ -431,6 +469,14 @@ cfg_taskdump! {
431469/// 
432470/// # Limitations 
433471/// 
472+ /// ## Performance 
473+ /// 
474+ /// Although enabling the `tokio_taskdump` feature imposes virtually no 
475+ /// additional runtime overhead, actually calling `Handle::dump` is 
476+ /// expensive. The runtime must synchronize and pause its workers, then 
477+ /// re-poll every task in a special tracing mode. Avoid requesting dumps 
478+ /// often. 
479+ /// 
434480/// ## Local Executors 
435481/// 
436482/// Tasks managed by local executors (e.g., `FuturesUnordered` and 
0 commit comments