When I use tokio-console to observe tasks on my server, I see plenty of warnings about tasks that have lost their waker.
I'm not implementing any Future
s myself, and not working with Waker
s directly. In my code the warnings point to Handle.spawn()
calls that I use to move futures from Actix-Web's runtime to a dedicated tokio runtime.
Is this an expected behavior? Does spawn()
require some special care to avoid losing wakers? Or is this a tokio bug?
╭Warnings──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│⚠ 43 tasks have lost their waker │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭Tasks (9195) ▶ Running (1) ⏸ Idle (72)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Warn▿ ID State Name Total Busy Idle Polls Target Location Fields │
│ ⚠ 1 500 ⏸ 1387.9044s 7.7468ms 1387.8966s 41 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.23/src/common/exec.rs:49:21 kind=task task.id=4624 │
│ ⚠ 1 46 ⏸ 1434.7280s 13.1538s 1421.5742s 45 tokio::task server/src/main.rs:1328:8 kind=task task.id=42 │
│ ⚠ 1 5429 ⏸ 658.7376s 3.6499s 655.0877s 68 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=27210 │
│ ⚠ 1 9497 ⏸ 112.8113s 2.2243s 110.5870s 43 tokio::task server/src/main.rs:1044:46 kind=task task.id=47029 │
│ ⚠ 1 282 ⏸ 1418.0028s 1.8127ms 1418.0009s 19 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.23/src/common/exec.rs:49:21 kind=task task.id=2451 │
│ ⚠ 1 164 ⏸ 1421.7893s 22.0456s 1399.7437s 10 tokio::task server/src/main.rs:1328:8 kind=task task.id=782 │
│ ⚠ 1 3144 ⏸ 1018.6552s 33.4192ms 1018.6218s 22 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=17936 │
│ ⚠ 1 5527 ⏸ 627.2128s 1.0006s 626.2122s 37 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=27940 │
│ ⚠ 1 24 ⏸ 1434.7994s 1.0185s 1433.7809s 3656 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=26 │
│ ⚠ 1 8114 ⏸ 292.2537s 1.7847s 290.4690s 325 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=42591 │
│ ⚠ 1 8992 ⏸ 189.8128s 5.2512s 184.5616s 372 tokio::task server/src/main.rs:1328:8 kind=task task.id=45444 │
│ ⚠ 1 5 ⏸ 1445.0162s 12.5179s 1432.4983s 43074 tokio::task server/src/main.rs:118:21 kind=task task.id=12 │
│ ⚠ 1 6 ⏸ 1445.0171s 2.3804s 1442.6367s 2225 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=11 │
│ ⚠ 1 7 ⏸ 1445.0192s 87.6610µs 1445.0191s 2 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=2 │
│ ⚠ 1 15 ⏸ 1434.7926s 2.9970ms 1434.7896s 2 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=37 │
│ ⚠ 1 19 ⏸ 1434.7994s 2.9487ms 1434.7964s 2 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=27 │
│ ⚠ 1 5540 ⏸ 627.0149s 17.8065ms 626.9971s 110 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.23/src/common/exec.rs:49:21 kind=task task.id=27986 │
│ ⚠ 1 22 ⏸ 1434.7288s 3.8506s 1430.8782s 25 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=41 │
│ ⚠ 1 33 ⏸ 1434.8045s 3.0358ms 1434.8015s 2 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=22 │
│ ⚠ 1 4315 ⏸ 822.8296s 2.7743s 820.0553s 14 tokio::task server/src/main.rs:1044:46 kind=task task.id=22680 │
│ ⚠ 1 30 ⏸ 1434.7927s 1.0939s 1433.6988s 3664 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=36 │
│ ⚠ 1 36 ⏸ 1434.8046s 1.0542s 1433.7503s 3690 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=21 │
│ ⚠ 1 7748 ⏸ 348.7509s 7.3059s 341.4450s 210 tokio::task server/src/main.rs:1328:8 kind=task task.id=40493 │
│ ⚠ 1 28 ⏸ 1434.7926s 328.3037ms 1434.4643s 3124 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=38 │
│ ⚠ 1 7516 ⏸ 390.9141s 6.0391s 384.8750s 139 tokio::task server/src/main.rs:1328:8 kind=task task.id=38992 │
│ ⚠ 1 434 ⏸ 1390.7964s 3.8085s 1386.9879s 520 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=3830 │
│ ⚠ 1 160 ⏸ 1421.7908s 5.2053s 1416.5855s 912 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=781 │
│ ⚠ 1 1227 ⏸ 1248.7096s 15.7769s 1232.9327s 2076 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=10515 │
│ ⚠ 1 2102 ⏸ 1197.8422s 13.2051s 1184.6371s 16 tokio::task server/src/main.rs:1328:8 kind=task task.id=13430 │
│ ⚠ 1 7749 ⏸ 348.7518s 3.3869s 345.3649s 36 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=40492 │
│ ⚠ 1 5424 ⏸ 658.7372s 4.4584s 654.2788s 7 tokio::task server/src/main.rs:1044:46 kind=task task.id=27211 │
│ ⚠ 1 68 ⏸ 1432.4212s 1.7776ms 1432.4194s 19 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.23/src/common/exec.rs:49:21 kind=task task.id=63 │
│>> ⚠ 1 23 ⏸ 1434.8045s 375.4976ms 1434.4290s 3125 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=23 │
│ ⚠ 1 21 ⏸ 1434.7961s 3.1808ms 1434.7929s 2 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=32 │
│ ⚠ 1 34 ⏸ 1434.7961s 307.2397ms 1434.4888s 3124 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=33 │
│ ⚠ 1 35 ⏸ 1434.7962s 964.6510ms 1433.8315s 3662 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-2.7.0/src/runtime.rs:80:20 kind=block_on task.id=31 │
│ ⚠ 1 7515 ⏸ 390.9146s 3.4207s 387.4939s 652 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=38991 │
│ ⚠ 1 4306 ⏸ 822.8316s 2.6076s 820.2240s 77 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=22679 │
│ ⚠ 1 2100 ⏸ 1197.8431s 921.3859ms 1196.9217s 16 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=13429 │
│ ⚠ 1 8991 ⏸ 189.8135s 2.2319s 187.5815s 673 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=45443 │
│ ⚠ 1 3145 ⏸ 1018.5131s 86.8039ms 1018.4263s 453 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.23/src/common/exec.rs:49:21 kind=task task.id=17945 │
│ ⚠ 1 20 ⏸ 1434.7994s 338.1718ms 1434.4612s 3124 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=28 │
│ ⚠ 1 9496 ⏸ 112.8117s 1.1366s 111.6750s 45 tokio::task /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.21.1/src/task/local.rs:317:32 kind=local task.id=47028