summaryrefslogtreecommitdiff
path: root/ext/web/blob.rs
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-06-29 10:01:54 -0600
committerGitHub <noreply@github.com>2023-06-29 16:01:54 +0000
commit98df69fd4cbe3687e2ff3519fbd6bff4e5f3101f (patch)
tree0c959f6b987f0398c29d7048ab1ec3f0734877cb /ext/web/blob.rs
parent93b3ff017078b2c1e993457ef43af6b52e715ba6 (diff)
fix(core): Ensure we don't lose the waker when polling an empty JoinSet (#19655)
This is a reproduction and fix for a very obscure bug where the Deno runtime locks up we end up polling an empty JoinSet and attempt to resolve ops after-the-fact. There's a small footgun in the JoinSet API where polling it while empty returns Ready(None), which means that it never holds on to the waker. This means that if we aren't testing for this particular return value and don't stash the waker ourselves for a future async op to eventually queue, we can end up losing the waker entirely and the op wakes up, notifies tokio, which notifies the JoinSet, which then has nobody to notify 😢. Co-authored-by: Luca Casonato <hello@lcas.dev> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Diffstat (limited to 'ext/web/blob.rs')
0 files changed, 0 insertions, 0 deletions