From owner-freebsd-stable@freebsd.org Mon Dec 2 20:58:41 2019 Return-Path: Delivered-To: freebsd-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 050BA1B70BF for ; Mon, 2 Dec 2019 20:58:41 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47RcsX0tSyz4MHp for ; Mon, 2 Dec 2019 20:58:39 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: by mail-qt1-x841.google.com with SMTP id k11so1294912qtm.3 for ; Mon, 02 Dec 2019 12:58:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=nANP2Xm7AI8nFhDH9aN5C8mBc0CROAOc8ySVraP7P3U=; b=jwj/+7tMVZzBsFEj/xk0ggKzhK6YObDrYSm8nd0oSSrri/H7C4quIO6cby/ST9928m zMK5zmaRgymKbjl4BCrS7aW45fXc6we7Mg9RwZgF5mOl7RRfPBGbeuKXh6h7U1YtWBLK U73Ev1MTdiTxkrhLJsv5pRHEoB97RFGCeNjJFyUpCBI9Mn7G405nhCe6vPdiC9XRKAJR EBxPME91lcleilGerXpP6KkcNvTL3mH4KDAMbfIJRgxWayrbWJcZMANQylcT6zL5rCtM 0sV02wU2a8BQOGj2tTXcS4brYMxcdxk5NL9qCzbCFr6lV+gcQJM/lCaAh+gNPs4IjRgz XQ6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=nANP2Xm7AI8nFhDH9aN5C8mBc0CROAOc8ySVraP7P3U=; b=oYeh2bQYgMCqYP6OCtsIr/WNoREbZ91lK87gWGon2+a0jDDFVQcvFAAQ+oYz5vmipH MXrrgcnu8viiPW/yo5+XUBUGV4zr7j4ZLPL5N+vPMYj03rLhVn/oOTR49bc69l+XYHLR XgyAO4fT3xdHAiYe5Xjs3UDRGJBdhJ9IvMV2OgCwb2UZtqgDcWwxiNpZDqL/i3YHXGdN cW4AVreOULcEFVn3kny7ykHfz+amDnriVpqfOe9UQt8WaOhFgd2eef46FofAAs8Ggaem 4epTOcoS8cdcQTRm9kzs+f4jNp1exdsxlDx0AAoWjCHS/lqzp6e50tsjjOdI4Gt7Ou6A qYjQ== X-Gm-Message-State: APjAAAUZ3DNQn7JDMm3tfD7/p9ZQUT3oZ7RkaHD8PRfbqjZ2j9oLoa/l eypSOeUClb/r/yUmQy5wNvULVmscEPg= X-Google-Smtp-Source: APXvYqy3vUCHwYM0ODEiCD3Pnx5nwgDVWSNdK8g5KqJavSYmXKE78jB3p+PX7PlxQbyLkUuOu7f9Vw== X-Received: by 2002:aed:2f26:: with SMTP id l35mr1566099qtd.162.1575320318804; Mon, 02 Dec 2019 12:58:38 -0800 (PST) Received: from raichu (toroon0560w-lp130-05-69-158-183-252.dsl.bell.ca. [69.158.183.252]) by smtp.gmail.com with ESMTPSA id s63sm410068qkf.129.2019.12.02.12.58.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2019 12:58:38 -0800 (PST) Sender: Mark Johnston Date: Mon, 2 Dec 2019 15:58:36 -0500 From: Mark Johnston To: Peter Cc: freebsd-stable@freebsd.org Subject: Re: wrong value from DTRACE (uint32 for int64) Message-ID: <20191202205836.GF43802@raichu> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.12.2 (2019-09-21) X-Rspamd-Queue-Id: 47RcsX0tSyz4MHp X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=jwj/+7tM; dmarc=none; spf=pass (mx1.freebsd.org: domain of markjdb@gmail.com designates 2607:f8b0:4864:20::841 as permitted sender) smtp.mailfrom=markjdb@gmail.com X-Spamd-Result: default: False [-2.06 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; NEURAL_HAM_LONG(-1.00)[-0.999,0]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-stable@freebsd.org]; DMARC_NA(0.00)[freebsd.org]; RCVD_COUNT_THREE(0.00)[3]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[1.4.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; IP_SCORE(-0.36)[ip: (2.43), ipnet: 2607:f8b0::/32(-2.24), asn: 15169(-1.94), country: US(-0.05)]; FORGED_SENDER(0.30)[markj@freebsd.org,markjdb@gmail.com]; MID_RHS_NOT_FQDN(0.50)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; FROM_NEQ_ENVFROM(0.00)[markj@freebsd.org,markjdb@gmail.com]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Dec 2019 20:58:41 -0000 On Mon, Dec 02, 2019 at 08:44:59PM +0100, Peter wrote: > Hi @all, > > I felt the need to look into my ZFS ARC, but DTRACE provided misleading > (i.e., wrong) output (on i386, 11.3-RELEASE): > > # dtrace -Sn 'arc-available_memory { printf("%x %x", arg0, arg1); }' > DIFO 0x286450a0 returns D type (integer) (size 8) > OFF OPCODE INSTRUCTION > 00: 29010601 ldgs DT_VAR(262), %r1 ! DT_VAR(262) = "arg0" > 01: 23000001 ret %r1 > > NAME ID KND SCP FLAG TYPE > arg0 262 scl glb r D type (integer) (size 8) > > DIFO 0x286450f0 returns D type (integer) (size 8) > OFF OPCODE INSTRUCTION > 00: 29010701 ldgs DT_VAR(263), %r1 ! DT_VAR(263) = "arg1" > 01: 23000001 ret %r1 > > NAME ID KND SCP FLAG TYPE > arg1 263 scl glb r D type (integer) (size 8) > dtrace: description 'arc-available_memory ' matched 1 probe > 0 14 none:arc-available_memory 2fb000 2 > 0 14 none:arc-available_memory 4e000 2 > 1 14 none:arc-available_memory ffffb000 2 > 1 14 none:arc-available_memory ffffb000 2 > 1 14 none:arc-available_memory ffffb000 2 > 1 14 none:arc-available_memory 19000 2 > 0 14 none:arc-available_memory d38000 2 > > # dtrace -n 'arc-available_memory { printf("%d %d", arg0, arg1); }' > 1 14 none:arc-available_memory 81920 5 > 1 14 none:arc-available_memory 69632 5 > 1 14 none:arc-available_memory 4294955008 5 > 1 14 none:arc-available_memory 4294955008 5 > > > The arg0 Variable is shown here obviousely as an unsigned int32 value. But > in fact, the probe in the sourcecode in arc.c is a signed int64: > > DTRACE_PROBE2(arc__available_memory, int64_t, lowest, int, r); > > > User @shkhin in the forum pointed me to check the bare dtrace program, > unattached to the kernel code: > https://forums.freebsd.org/threads/dtrace-treats-int64_t-as-uint32_t-on-i386.73223/post-446517 > > And there everything appears correct. > > So two questions: > 1. can anybody check and confirm this happening? > 2. any idea what could be wrong here? (The respective variable in arc.c > bears the correct 64bit negative value, I checked that - and otherwise the > ARC couldn't shrink.) The DTRACE_PROBE* macros cast their parameters to uintptr_t, which will be 32 bits wide on i386. You might be able to work around the problem by casting arg0 to uint32_t in the script.