Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3082587pxy; Mon, 3 May 2021 14:50:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8TjGTMaJu7xMJHuClndoVGMo/Y0F0GNGFmiMzyAHkq2Z9eIbFQaX/Q8vwa4sd1GjaHdES X-Received: by 2002:a50:c44f:: with SMTP id w15mr22690011edf.79.1620078647058; Mon, 03 May 2021 14:50:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620078647; cv=none; d=google.com; s=arc-20160816; b=g/sjz3xHa00lufdVaUFkzilfaK1bwDy6Ycy6Zbr7PXCX5YNIvuCJgGICyrscklCqYK ezLq0YjBMpZ2ftj+LJfh2TqRzJFRkvt7Z0otlUPMKQligQo2ik2yAUtCyJofXn8GSRXg XQc8XSmiXBkrH9jH6jNKw1ikmZw52ylVCJxebr3iEX97JuupgXtu0C6xKgBnEjBiNiA6 JA1HQ1UrpCHyQaXAKlVnLCNZxz9M8CLvdDXLm1t0jZZoX+Am7QEHOpLFjOEUqxd0vHSr 0azsAtD0i1pR6ps3ga20a5hINx/Xneyvsbm9l+ZrFuVAVIT5YxDRM6gkuHlyK1cPnLSY cLgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Qp8MozAalBZX4zX8mJvTdYabA0m8YJzeIJSNA/Ny9Ec=; b=AXJK8FhZ13QdFDZXlAN62tOJ7Ipa8O8nVrQi/JmfoK1T4ngBVbw1ghU6PFwhTFqgKC 9aeoeFDXhbJ4TuFQ2WUbBHZFR/OtElZgBBJoZ3I4FTjvtVVVe/mDF37FS06Gr9l+H8S6 oUp5uk84djloi6sAJ4b0MERO5Qu+O2I0SUaiHwV7dJrk90siAB2TT+6g1N/UaajgkGPB pecCT//D/5RujaGXcO1HEr5b5Xucl75n56PgPnCF/bJ3X8gO+OSfNJPbIst3CBPzMaa7 C6ujdlMym4AqwkqkYThr2gXiR8OUHAmFb2EJe7DbbMhjGYCKqOXTuttrixpg9eSMU7fd tEKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jzfZ4s4Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x22si3900131edq.266.2021.05.03.14.50.22; Mon, 03 May 2021 14:50:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jzfZ4s4Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229499AbhECVuX (ORCPT + 99 others); Mon, 3 May 2021 17:50:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:52388 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229497AbhECVuX (ORCPT ); Mon, 3 May 2021 17:50:23 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9CFFA611CD for ; Mon, 3 May 2021 21:49:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620078569; bh=SUobvnxDOcS4NQCxjuHJDoDm7mOu/wNRf2lZIyJtqhY=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=jzfZ4s4ZvInoL7pl+G0Krxbae1u8JoPDd55ENwWWpGuYcMrPtNPRAh1siK2MmZh+m rvPBS/fv1uuas1Lrab3ZopvMWF5BiOHcsj1g0l247HrZ71ynq99i8E9Wxe4walT/vG OWOBnQ9IJW+ujkBS34fsh6iTD3CDJ+mflGLmoBSwCKsVdS0oIbKuuxmQfrkdeMFrZJ RYGcFEUtbQ1OeRiRHUosIJO7JBuWwlXnylLB56ZcHpLqFsmgCy1Usv5GzLkcGjFPzs HWiQY0lM98KLD08aWnyCOApw6texU+WhzD1Q2o1SL+PBUMyNNEnWo5TdmW6isjqFz0 +wOWxhN/mSC/g== Received: by mail-ed1-f45.google.com with SMTP id h10so8065659edt.13 for ; Mon, 03 May 2021 14:49:29 -0700 (PDT) X-Gm-Message-State: AOAM532/+04RjXIIAtoaxqoWTgZeIcMf5mdboGZlONx1m910OnQsEMIf MTMz6Ay5s/PO07a0KlU7LuGvJd/ZliPvBCEmLD0MSg== X-Received: by 2002:a05:6402:3063:: with SMTP id bs3mr22881433edb.84.1620078568184; Mon, 03 May 2021 14:49:28 -0700 (PDT) MIME-Version: 1.0 References: <8735v3ex3h.ffs@nanos.tec.linutronix.de> <3C41339D-29A2-4AB1-958F-19DB0A92D8D7@amacapital.net> In-Reply-To: From: Andy Lutomirski Date: Mon, 3 May 2021 14:49:16 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] io_thread/x86: don't reset 'cs', 'ss', 'ds' and 'es' registers for io_threads To: Jens Axboe Cc: Linus Torvalds , Andy Lutomirski , Thomas Gleixner , Stefan Metzmacher , Linux Kernel Mailing List , io-uring , "the arch/x86 maintainers" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 3, 2021 at 2:26 PM Jens Axboe wrote: > > On 5/3/21 2:37 PM, Linus Torvalds wrote: > > On Mon, May 3, 2021 at 1:15 PM Andy Lutomirski wrote: > >> > >> On Mon, May 3, 2021 at 12:15 PM Linus Torvalds > >> wrote: > >>> So generally, the IO threads are now 100% normal threads - it's > >>> literally just that they never return to user space because they are > >>> always just doing the IO offload on the kernel side. > >>> > >>> That part is lovely, but part of the "100% IO threads" really is that > >>> they share the signal struct too, which in turn means that they very > >>> much show up as normal threads. Again, not a problem: they really > >>> _are_ normal threads for all intents and purposes. > >> > >> I'm a bit confused, though. All the ptrace register access (AFAICS) > >> goes through ptrace_check_attach(), which should wait until the tracee > >> is stopped. Does the io_uring thread now stop in response to ptrace > >> stop requests? > > > > Yup. They really are 100% regular threads. Things like ^Z and friends > > also stop them now, and the freezer freezes them etc. > > > > And making PTRACE_ATTACH fail just causes gdb to fail. > > > >> Fair enough. But I would really, really rather that gdb starts fixing > >> its amazingly broken assumptions about bitness. > > > > "Preach it, Brother" > > That's actually what the original code did, and the "only" problem with > it was that gdb shits itself and just go into an infinite loop trying to > attach. And yes, that's most certainly a gdb bug, and we entertained a > few options for making that work. One was hiding the threads, but nobody > (myself included) liked that, because then we're special casing > something again, and for no other reason than gdb is buggy. > > On principle, I think it's arguably the right change to just -EINVAL the > attach. However, a part of me also finds it very annoying that anyone > attempting to debug any program that uses io_uring will not be able to > do so with a buggy gdb. That's regardless of whether or not you want to > look at the io threads or not, or even if you don't care about debugging > the io_uring side of things. And I'm assuming this will take a while to > get fixed, and then even longer to make its way back to distros. > > So... You should just make the call. At least then I can just tell > people that Linus made that decision :-) > > >>> So I think Stefan's patch is reasonable, if not pretty. Literally > >>> becasue of that "make these threads look even more normal" > >> > >> I think it's reasonable except for the bit about copying the segment > >> regs. Can we hardcode __USER_CS, etc, and, when gdb crashes or > >> otherwise malfunctions for compat programs, we can say that gdb needs > >> to stop sucking. > > > > So that was actually my initial suggestion. Stefan really does seem to > > care about compat programs. > > > > Any "gdb breaks" would be good to motivate people to fix gdb, but the > > thing is, presumably nobody actually wants to touch gdb with a ten > > foot pole. > > > > And a "let's break gdb to encourage people to fix it" only works if > > people actually _do_ fit it. Which doesn't seem to be happening. > > > > Two lines of kernel code seems to be the better option than hoping for > > gdb to be fixed. > > As far as I'm concerned, gdb works "well enough" with io threads as it > stands. Yes, it'll complain a bit, but nothing that prevents you from > attaching to a progrem. If we -EINVAL, then gdb will become useless for > debugging a program that uses io_uring. And I'm not holding my breath > while someone fixes that. To be clear, I'm suggesting that we -EINVAL the PTRACE_GETREGS calls and such, not the ATTACH. I have no idea what gdb will do if this happens, though. --Andy