Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1010181pxb; Thu, 4 Mar 2021 00:24:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJw5LslaOJtDbIr4XbjGibAcIjvjdAd89p2h8+N9qZYNjWfke+kjxgn9i0+t4Jn6B5Ny1sKq X-Received: by 2002:a17:907:1b06:: with SMTP id mp6mr3025505ejc.408.1614846252310; Thu, 04 Mar 2021 00:24:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614846252; cv=none; d=google.com; s=arc-20160816; b=lUtofCw9J+sEMZb7Zuc4nhsYWU5o/N0hxHwR/NTyz1zAQzt7IJepKyVFF1FAbzzqRa FE5poU7WEY7vYE1pfFXHB9CcvUZAlNSuGjRWBVNe/6JaRNRe4mymejSljvTiqwZYTwUv 7IOPlfhC8UrQGWIBJ9KivQ5xDXfKY76g5sQ5jON0TSunAhcZXJsaJU1tf6F4AOCZhbwi RR3iO/wz/TE86G/Fdj8xvB/IoK2Y6RNnyg5Bt5D6ueB7c21hIuHTPXPbf0R1wgOy5WEx zqxvZa/XGAEmo7c89JDZRcw/7e2rheqvpOSjZdHwa+WrLDx7T57jPT7hNxvAZpQ1u/xA qBmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=MKkp+Ig7D8PNsx9Q3rSsfxgUxF6bZGGQ/lTf14si0C8=; b=vmHxT9h15uPqJ8dRsY9xcIMtKSDHX6YclO1qNTrWrH++7oD2onhcCjhAuiF+WRFmDz k8Z87Yu/5m3/QZ4e92MzxkKYE7gxAiHDSnBUaGr5K4N4YeYyRch6veJMmHT+XSn2gsfo DBGBWwSbWYVxuSm7yUfQhb6D8GLcIcDtNmG81s24MNaYa1NQVdhxciawopMqgf6FFFIy 8sfWv+z+iEPhfFyQ1io+yfyE9EUF9tFv+AOMByU5rc9euOoJiFubSP3meMGXOr5CErba EJeC9gGPMpu5wwXXsCdPj9X3KIboZDMYvLZNSxB4C1uvLx6WMFuR5uShoJK/rFXSUeGb kSVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=U8eO64NV; 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 e1si14529938edl.520.2021.03.04.00.23.47; Thu, 04 Mar 2021 00:24:12 -0800 (PST) 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=U8eO64NV; 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 S1352016AbhCCLur (ORCPT + 99 others); Wed, 3 Mar 2021 06:50:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:38932 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1578528AbhCCEtP (ORCPT ); Tue, 2 Mar 2021 23:49:15 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 996D464E86; Wed, 3 Mar 2021 04:48:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1614746912; bh=2Xca8x9wbooaqbFV/0T0htnTgUXTo0FSs3BlsceoobY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=U8eO64NVL5Eoo7yZfv5TElRsz7ky182deE0coW76Z0tm7yI96MLzsd1O65tuYNiwv TKTdYIBpxyRbeaEglZsuSwJ2IIAgFB5X52GacfYZveMtNfI7ZN+pmqjlraa0nnUgug RdAk6s3wqAVJlgbNnj7a7MVFSi5wD5FbJBN4e0qGZhb9gB9JunUEpzXBeSHbuJf3vo n9h9/u9IDfM8nlLaUza3nSpOSL66TUcmmenU5SwzVIN1OsnJwU5yY0Bmb/XP6iX2P9 H+FqqQ9VY19yFlR8nfVgDjbBEWRa3gIYnuVkD5DZBebdKZ45NXXqYglj6jf8k9Ba4p ydqOJKE0YRNog== Date: Wed, 3 Mar 2021 13:48:28 +0900 From: Masami Hiramatsu To: "Daniel Xu" Cc: linux-kernel@vger.kernel.org, "bpf@vger.kernel.org" , kuba@kernel.org, Steven Rostedt Subject: Re: Broken kretprobe stack traces Message-Id: <20210303134828.39922eb167524bc7206c7880@kernel.org> In-Reply-To: <1fed0793-391c-4c68-8d19-6dcd9017271d@www.fastmail.com> References: <1fed0793-391c-4c68-8d19-6dcd9017271d@www.fastmail.com> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Daniel, On Tue, 02 Mar 2021 17:15:13 -0800 "Daniel Xu" wrote: > Hi Masami, > > Jakub reported a bug with kretprobe stack traces -- wondering if you've gotten > any bug reports related to stack traces being broken for kretprobes. Yeah, stack dumper must check the stack entry is kretprobe'd and skip it. For example, ftrace checks it as below. /sys/kernel/debug/tracing # echo r vfs_read > kprobe_events /sys/kernel/debug/tracing # echo stacktrace > events/kprobes/r_vfs_read_0/trigger /sys/kernel/debug/tracing # echo 1 > events/kprobes/r_vfs_read_0/enable /sys/kernel/debug/tracing # head -20 trace # tracer: nop # # entries-in-buffer/entries-written: 15685/336094 #P:8 # # _-----=> irqs-off # / _----=> need-resched # | / _---=> hardirq/softirq # || / _--=> preempt-depth # ||| / delay # TASK-PID CPU# |||| TIMESTAMP FUNCTION # | | | |||| | | sh-132 [006] ...1 38.920352: => kretprobe_dispatcher => __kretprobe_trampoline_handler => trampoline_handler => [unknown/kretprobe'd] => [unknown/kretprobe'd] => __x64_sys_read => do_syscall_64 => entry_SYSCALL_64_after_hwframe > > I think (can't prove) this used to work: I'm not sure the bpftrace had correctly handled it or not. > > # bpftrace -e 'kretprobe:__tcp_retransmit_skb { @[kstack()] = count() }' > Attaching 1 probe... > ^C > > @[ > kretprobe_trampoline+0 > ]: 1 Would you know how the bpftrace stacktracer rewinds the stack entries? FYI, ftrace does it in trace_seq_print_sym()@kernel/trace/trace_output.c Thank you, > > fentry/fexit probes seem to work: > > # bpftrace -e 'kretfunc:__tcp_retransmit_skb { @[kstack()] = count() }' > Attaching 1 probe... > ^C > > @[ > ftrace_trampoline+10799 > bpf_get_stackid_raw_tp+121 > ftrace_trampoline+10799 > __tun_chr_ioctl.isra.0.cold+33312 > __tcp_retransmit_skb+5 > tcp_send_loss_probe+254 > tcp_write_timer_handler+394 > tcp_write_timer+149 > call_timer_fn+41 > __run_timers+493 > run_timer_softirq+25 > __softirqentry_text_start+207 > asm_call_sysvec_on_stack+18 > do_softirq_own_stack+55 > irq_exit_rcu+158 > sysvec_apic_timer_interrupt+54 > asm_sysvec_apic_timer_interrupt+18 > ]: 1 > @[ > ftrace_trampoline+10799 > bpf_get_stackid_raw_tp+121 > ftrace_trampoline+10799 > __tun_chr_ioctl.isra.0.cold+33312 > __tcp_retransmit_skb+5 > <...> > > which makes me suspect it's a kprobe specific issue. > > Thanks, > Daniel -- Masami Hiramatsu