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

Martin Thomson <noreply@github.com> Tue, 18 February 2020 23:13 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AE8F612083A for <quic-issues@ietfa.amsl.com>; Tue, 18 Feb 2020 15:13:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7
X-Spam-Level:
X-Spam-Status: No, score=-7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tj2h88sW6DBG for <quic-issues@ietfa.amsl.com>; Tue, 18 Feb 2020 15:13:42 -0800 (PST)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 21F38120830 for <quic-issues@ietf.org>; Tue, 18 Feb 2020 15:13:42 -0800 (PST)
Received: from github-lowworker-f144ac1.va3-iad.github.net (github-lowworker-f144ac1.va3-iad.github.net [10.48.16.59]) by smtp.github.com (Postfix) with ESMTP id 56BC92C0B3C for <quic-issues@ietf.org>; Tue, 18 Feb 2020 15:13:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1582067621; bh=8gGsvh0nS4rpThRtnLrG0O65rovJhJcHIuGsmIUwCRI=; h=Date:From:To:Subject:From; b=br/gF0mpgLHWI2+qdFP6jDPjOHcq5JI9FqPVDX3aBp628QGxZOe/Ju9zcsJ6giQ23 BHniQw5gmTEOmo+AzeAvgUAWAgNzWTaqTx1p96gqjCHlILoFX5fTmnsIOMxdMs7pTR HjFTZCCKdBdX0XicsNEU3zMlKb+06gsut6RP02ao=
Date: Tue, 18 Feb 2020 15:13:41 -0800
From: Martin Thomson <noreply@github.com>
To: quic-issues@ietf.org
Message-ID: <quicwg/base-drafts/push/refs/heads/master/60d233-2c5f8f@github.com>
Subject: [quicwg/base-drafts] 2c5f8f: Deadlocks, and how to avoid them (#3458)
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-Auto-Response-Suppress: All
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/CPCiB65BHyCI-kPiOuPqgItF1xs>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Feb 2020 23:13:44 -0000

  Branch: refs/heads/master
  Home:   https://github.com/quicwg/base-drafts
  Commit: 2c5f8fcfc00e4b470564dbfc6ac4f9046d98c974
      https://github.com/quicwg/base-drafts/commit/2c5f8fcfc00e4b470564dbfc6ac4f9046d98c974
  Author: Martin Thomson <mt@lowentropy.net>
  Date:   2020-02-18 (Tue, 18 Feb 2020)

  Changed paths:
    M draft-ietf-quic-qpack.md

  Log Message:
  -----------
  Deadlocks, and how to avoid them (#3458)

* Deadlocks, and how to avoid them

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

This doesn'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.

* Taking Ian's suggestion and rearranging slighty