Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3070244pxy; Mon, 3 May 2021 14:28:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaTYq7e4SONrGPbL6Wt4g33ZiXr7ye7J9X+Pc+sfYBsmRPXVorszdCvLeg4/hfGGouDEko X-Received: by 2002:a17:906:2c16:: with SMTP id e22mr18471947ejh.395.1620077325389; Mon, 03 May 2021 14:28:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620077325; cv=none; d=google.com; s=arc-20160816; b=R0v8ifQmF204bUyyH2vGWebUCXrH20Z56m25KAU8VkhGOrd38cFrgVs77lTLpopc8c xIdWYAwO3VRUrMI5ovc5LygFlJKuQwyuVj6HsmfwXu/fPQNYHczpEbQn2c3xChXhFy+Y 2PEJ+S62Fli8SSkaamV5uUvVdzgl+rh3Zfbs8i4oDvtKiRammJpyMV2TAPrVMKrB97QT /iAuEYLaEiHPswqEu27aayb3ItwmmfybHonzv7sXl+3k/vZw2DQhSdCjsl6uNn18PWk7 IotA/d547DBQbzll13xKGis3VkZS+Vse2PN2wNHJiprQywuoia+UdaXnajpZ/tzFrzXi SE8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=XPeMU1gbb2Ouz0+R/qJWXXU61XPTpHJzJYNFXNLpGRA=; b=yU+PLkSQgkXdDBa71gxugM0TcIUle+EkJiFT7kjcxpXuawQi1qBvNPuXEILavrhBoc wRHKpdLKeOZfwgCSTtZJQnvzrDJToIzCLdsetKVYtCzbfmNIwz5z5pjt5dSeRsv+Zasz XFpVTYOs+yajvIiUoVkKxuHT/SqOpRfofJzVXQjfYHiKbVfzwixjHrYhUsyF/34WyL9G FE9PzrOIKhrMaBHKnzT+ptw6t78ib51krsGwpzE4AiD5w4D1L4nm9Ie5S0IVn6f+txSJ cSh8i4odFIzlYzKvZ6I1WOJhj4UFr1imwc+Sn5L+QYYKDp/dK1crQpKnXr1EenRLLUSM lfSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=yCaR+DVH; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z12si9563310edr.265.2021.05.03.14.28.21; Mon, 03 May 2021 14:28:45 -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-dk.20150623.gappssmtp.com header.s=20150623 header.b=yCaR+DVH; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229497AbhECV1H (ORCPT + 99 others); Mon, 3 May 2021 17:27:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229499AbhECV1G (ORCPT ); Mon, 3 May 2021 17:27:06 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FBAEC061574 for ; Mon, 3 May 2021 14:26:12 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id q10so4740343pgj.2 for ; Mon, 03 May 2021 14:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=XPeMU1gbb2Ouz0+R/qJWXXU61XPTpHJzJYNFXNLpGRA=; b=yCaR+DVH5sT8hRYk5O8m8/4/+XRDtTPPQt8QYb8IvpHwl98R7KbLM8Y56nM7f+6uMo z8WELQYH2AbDlTTqt0hhkF7HiQmSzX4+BLRBgC5cBMOH7V4M0CxuVwaqlCMq+E3bRn6F KmBEtor4deIjLvWflIHRUgumBkdhCBEFxrXaoG2B3SIfGLbadzIZnmsqp8jpdnEUlpcn gT0fiQt5N52MerEHJLg50MZXNb13s7lyzN6wAgy9EoVR72VnqnfC8T2j5+QM2nxNr9vL AkUMQb/i6CLpkXy38a9KK6Y1rcsns8jvckje1FrotQKTbgDHvm8QZdX9ICDaBu6BwbpQ CW1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=XPeMU1gbb2Ouz0+R/qJWXXU61XPTpHJzJYNFXNLpGRA=; b=pTi/qKRhEl4BdgDESaIEPtwHxkyte1ALWW8LkqjeEBAH2Uw/GqvyrDznQVwTO3rxhA UoOTb/J97g1N5pcMR+fvuxC2p5cx52Fy/e+FHMaiq9GB0iNOZOr7HIkY3a+4iOeZBEyx uqIitDMKhfC6M1KPq0CbzeAy9bR1ljJzKKcxrMFyapQmVo504KWCcX0OnNWSYA2XsN9c D0JAyzBDAzP3c/AotygmESXHZB3RCr1qrBylNFwWqHv0ypI7nG+3Y1nfA+AUYO0A1cqV a7ONxQU/fYq8MpZCnGJ+r8VuikwDF2KW/dopEzUHMKp9rbYxx9Xla8To4oVYrlFS8aw+ CEeQ== X-Gm-Message-State: AOAM532YubWSviTQSqQbuA0fUq0dpgJCiTWqLArLGl2VuasH5DRpHqlX nZf9VaJJYNR14lx7hOrSPRXJuw== X-Received: by 2002:a17:90a:73c4:: with SMTP id n4mr703803pjk.201.1620077171737; Mon, 03 May 2021 14:26:11 -0700 (PDT) Received: from ?IPv6:2600:380:4b2f:4dc3:5b46:253c:6ea5:c4fe? ([2600:380:4b2f:4dc3:5b46:253c:6ea5:c4fe]) by smtp.gmail.com with ESMTPSA id 123sm10083664pfx.180.2021.05.03.14.26.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 03 May 2021 14:26:11 -0700 (PDT) Subject: Re: [PATCH] io_thread/x86: don't reset 'cs', 'ss', 'ds' and 'es' registers for io_threads To: Linus Torvalds , Andy Lutomirski Cc: Thomas Gleixner , Stefan Metzmacher , Linux Kernel Mailing List , io-uring , the arch/x86 maintainers References: <8735v3ex3h.ffs@nanos.tec.linutronix.de> <3C41339D-29A2-4AB1-958F-19DB0A92D8D7@amacapital.net> From: Jens Axboe Message-ID: Date: Mon, 3 May 2021 15:26:10 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. -- Jens Axboe