From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8890 invoked by alias); 10 Jan 2013 19:52:05 -0000 Received: (qmail 8678 invoked by uid 48); 10 Jan 2013 19:51:28 -0000 From: "dsmith at redhat dot com" To: systemtap@sourceware.org Subject: [Bug tapsets/13074] Some nfs tapset probes broken under linux 3.1-rc1 Date: Thu, 10 Jan 2013 19:52:00 -0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: systemtap X-Bugzilla-Component: tapsets X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: dsmith at redhat dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: systemtap at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2013-q1/txt/msg00009.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=13074 --- Comment #3 from David Smith 2013-01-10 19:51:24 UTC --- Looking at today's rawhide kernel (3.8.0-0.rc2.git3.1.fc19.x86_64), things are even more odd: ==== # stap -L 'module("nfsv2").function("nfs_proc_lookup").*' module("nfsv2").function("nfs_proc_lookup@fs/nfs/proc.c:148").call $arg:struct nfs_diropargs $res:struct nfs_diropok $msg:struct rpc_message module("nfsv2").function("nfs_proc_lookup@fs/nfs/proc.c:148").return $return:int $arg:struct nfs_diropargs $res:struct nfs_diropok $msg:struct rpc_message ==== Here's the source to nfs_proc_lookup. Looking at this, it appears that stap has confused local variables for parameters: ==== static int nfs_proc_lookup(struct inode *dir, struct qstr *name, struct nfs_fh *fhandle, struct nfs_fattr *fattr) { struct nfs_diropargs arg = { .fh = NFS_FH(dir), .name = name->name, .len = name->len }; struct nfs_diropok res = { .fh = fhandle, .fattr = fattr }; struct rpc_message msg = { .rpc_proc = &nfs_procedures[NFSPROC_LOOKUP], .rpc_argp = &arg, .rpc_resp = &res, }; ==== Here's what "eu-readelf -N --debug-dump=info" reports for 'nfs_proc_lookup': ==== [ 31c90] subprogram name (strp) "nfs_proc_lookup" decl_file (data1) 1 decl_line (data1) 148 prototyped (flag_present) Yes type (ref4) [ 18e99] low_pc (addr) .text+0x0000000000000580 high_pc (addr) .text+0x000000000000063e frame_base (exprloc) [ 0] call_frame_cfa GNU_all_call_sites (flag_present) Yes sibling (ref4) [ 31dd5] [ 31cb1] formal_parameter name (string) "dir" decl_file (data1) 1 decl_line (data1) 148 type (ref4) [ 1e9f9] location (sec_offset) location list [ de7] [ 31cc0] formal_parameter name (strp) "name" decl_file (data1) 1 decl_line (data1) 148 type (ref4) [ 1ed6f] location (sec_offset) location list [ e5c] [ 31ccf] formal_parameter name (strp) "fhandle" decl_file (data1) 1 decl_line (data1) 149 type (ref4) [ 2ed02] location (sec_offset) location list [ e95] [ 31cde] formal_parameter name (strp) "fattr" decl_file (data1) 1 decl_line (data1) 149 type (ref4) [ 2e617] location (sec_offset) location list [ f21] [ 31ced] variable name (string) "arg" decl_file (data1) 1 decl_line (data1) 151 type (ref4) [ 2f1a1] location (exprloc) [ 0] fbreg -88 [ 31cfc] variable name (string) "res" decl_file (data1) 1 decl_line (data1) 156 type (ref4) [ 2f2f5] location (exprloc) [ 0] fbreg -104 [ 31d0b] variable name (string) "msg" decl_file (data1) 1 decl_line (data1) 160 type (ref4) [ 21ea5] location (exprloc) [ 0] fbreg -64 ==== Here's the relevant 'eu-readelf --debug-dump=loc' data: ==== [ de7] .text+0x0000000000000555 ...text+0x00000000000005ab [ 0] reg5 .text+0x00000000000005ab ...text+0x00000000000005d6 [ 0] reg3 .text+0x00000000000005d6 ...text+0x00000000000005e1 [ 0] GNU_entry_value: [ 0] reg5 [ 3] stack_value .text+0x00000000000005e1 ...text+0x00000000000005fc [ 0] reg3 .text+0x00000000000005fc ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg5 [ 3] stack_value [ e5c] .text+0x0000000000000555 ...text+0x0000000000000582 [ 0] reg4 .text+0x0000000000000582 ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg4 [ 3] stack_value [ e95] .text+0x0000000000000555 ...text+0x0000000000000577 [ 0] reg1 .text+0x0000000000000577...text+0x000000000000058e [ 0] fbreg -104 .text+0x000000000000058e ...text+0x00000000000005ab [ 0] breg1 0 .text+0x00000000000005ab ...text+0x00000000000005e1 [ 0] GNU_entry_value: [ 0] reg1 [ 3] stack_value .text+0x00000000000005e1 ...text+0x00000000000005f5 [ 0] breg1 0 .text+0x00000000000005f5 ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg1 [ 3] stack_value .text+0x00000000000005e1 ...text+0x00000000000005f5 [ 0] breg1 0 .text+0x00000000000005f5 ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg1 [ 3] stack_value [ f21] .text+0x0000000000000555 ...text+0x00000000000005ab [ 0] reg2 .text+0x00000000000005ab ...text+0x00000000000005e1 [ 0] GNU_entry_value: [ 0] reg2 [ 3] stack_value .text+0x00000000000005e1 ...text+0x00000000000005f5 [ 0] reg2 .text+0x00000000000005f5 ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg2 [ 3] stack_value [ f83] .text+0x00000000000005d6 ...text+0x00000000000005d8 [ 0] reg0 .text+0x00000000000005d8 ...text+0x00000000000005df [ 0] reg3 .text+0x00000000000005df ...text+0x00000000000005e1 [ 0] reg0 .text+0x00000000000005fc ...text+0x0000000000000607 [ 0] reg0 .text+0x0000000000000607 ...text+0x000000000000060e [ 0] reg3 [ ff2] .text+0x00000000000005b3 ...text+0x00000000000005d6 [ 0] reg3 .text+0x00000000000005d6 ...text+0x00000000000005e1 [ 0] GNU_entry_value: [ 0] reg5 [ 3] stack_value .text+0x00000000000005fc ...text+0x000000000000060e [ 0] GNU_entry_value: [ 0] reg5 [ 3] stack_value ==== Mark, got any thoughts as to what is going on here? -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.