Subject: [quicwg/base-drafts] Deadlocks, and how to avoid them (#3458)

From: Martin Thomson <[email-masked]>
Date: Thu, 13 Feb 2020 16:29:56 -0800

Much belated, this attempts to address the concerns about deadlocking.
Basically, this says that you should avoid instructions that don&#39;t have
flow control credit.  It doesn&#39;t say how an encoder might learn what
limits are, but we&#39;ve seen a range of tactics being used in
implementations and I don&#39;t want to get into transport API debates.

This doesn&#39;t cover the memory exhaustion attack that @kazuho suggests on
the issue; I think that is better covered more generally by the
connection-level flow control limits.

Closes #1420.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/3458

-- Commit Summary --

  * Deadlocks, and how to avoid them

-- File Changes --

    M draft-ietf-quic-qpack.md (20)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3458.patch
https://github.com/quicwg/base-drafts/pull/3458.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3458

---

From: Martin Thomson <[email-masked]>
Date: Thu, 13 Feb 2020 16:30:56 -0800

I debated adding another paragraph:

> These deadlocks can be rectified by cancellation of the affected streams, though is not possible for the encoder stream.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3458#issuecomment-586039545

---

From: ianswett <[email-masked]>
Date: Fri, 14 Feb 2020 09:49:28 -0800

ianswett commented on this pull request.

Thanks for adding this!

> @@ -281,6 +281,26 @@ table entries which have been acknowledged, but this could mean using
 literals. Since literals make the header block larger, this can result in the
 encoder becoming blocked on congestion or flow control limits.
 
+### Avoiding Flow Control Deadlocks
+
+Encoding using blocked streams can interact with flow control to produce

```suggestion
Writing instructions on blocked or soon to be blocked streams can interact with flow control to produce
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3458#pullrequestreview-359109199

---

From: Martin Thomson <[email-masked]>
Date: Sun, 16 Feb 2020 15:19:53 -0800

@martinthomson pushed 1 commit.

785b3c5f287ab00f4423d6ed096b98d11fe42d0e  Taking Ian's suggestion and rearranging slighty

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3458/files/be10ac0dba23109d2e7ae6eab509f222ee7686c0..785b3c5f287ab00f4423d6ed096b98d11fe42d0e

---

From: afrind <[email-masked]>
Date: Tue, 18 Feb 2020 15:13:51 -0800

Merged #3458 into master.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3458#event-3049346604