public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
* [Bug tapsets/5434] New: Error processing (missing) nfsservctl syscall
@ 2007-11-30  9:16 jmmv at NetBSD dot org
  2007-12-05 18:36 ` [Bug tapsets/5434] " dsmith at redhat dot com
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: jmmv at NetBSD dot org @ 2007-11-30  9:16 UTC (permalink / raw)
  To: systemtap

When running the following sample command shown in systemtap's web site:

# stap -vv -c df -e 'probe syscall.* { if (target()==pid()) log(name." ".argstr) }'

I get to the following error:

[...]
probe sys_vmsplice@fs/splice.c:1475 kernel pc=0xc0000000000ddb74
probe sys_wait4@kernel/exit.c:1732 kernel pc=0xc0000000000514b0
probe sys_waitid@kernel/exit.c:1698 kernel pc=0xc0000000000514f0
probe sys_write@fs/read_write.c:376 kernel pc=0xc0000000000b5990
probe sys_writev@fs/read_write.c:686 kernel pc=0xc0000000000b53f8
probe compat_sys_writev@fs/compat.c:1165 kernel pc=0xc0000000000f14e0
semantic error: unable to find local 'arg' near pc 0xc0000000000efb84
(alternatives: cmd notused notused2): identifier '$arg' at
/usr/local/share/systemtap/tapset/syscalls2.stp:66:56
Pass 2: analyzed script: 339 probe(s), 1007 function(s), 14 embed(s), 1
global(s) in 67440usr/680sys/70669real ms.
Pass 2: analysis failed.  Try again with more '-v' (verbose) options.

This is on a PlayStation 3 running Fedora 8, systemtap's sources from the git
repository (as of yesterday) and this kernel:

Linux ps3k.gso.ac.upc.edu 2.6.24-rc3 #2 SMP Fri Nov 30 09:51:06 CET 2007 ppc64
ppc64 ppc64 GNU/Linux

It was built by me and it does NOT have CONFIG_NFSD set in it.  If I set this
option in the kernel's configuration, the above command works correctly.

-- 
           Summary: Error processing (missing) nfsservctl syscall
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: tapsets
        AssignedTo: systemtap at sources dot redhat dot com
        ReportedBy: jmmv at NetBSD dot org


http://sourceware.org/bugzilla/show_bug.cgi?id=5434

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tapsets/5434] Error processing (missing) nfsservctl syscall
  2007-11-30  9:16 [Bug tapsets/5434] New: Error processing (missing) nfsservctl syscall jmmv at NetBSD dot org
@ 2007-12-05 18:36 ` dsmith at redhat dot com
  2008-11-02 17:04 ` mjw at redhat dot com
  2009-10-15 23:06 ` przemyslaw at pawelczyk dot it
  2 siblings, 0 replies; 4+ messages in thread
From: dsmith at redhat dot com @ 2007-12-05 18:36 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From dsmith at redhat dot com  2007-12-05 18:36 -------
You must not have CONFIG_COMPAT set either, since the definition of
syscall.nfsservctl looks like:

  probe syscall.nfsservctl =                                                      
                kernel.function("sys_nfsservctl") ?,                            
                kernel.function("compat_sys_nfsservctl") ?                      
  {                                                                               
        name = "nfsservctl"                                                     
        cmd = $cmd                                                              
        argp_uaddr = $arg                                                       
        resp_uaddr = $res                                                       
        argstr = sprintf("%s, %p, %p", _nfsctl_cmd_str($cmd), $arg, $res)       
  }

I'm unsure how we could solve this, since we don't have access to the CONFIG_*
defines at the probe level.  We could grab the value of either CONFIG_NFSD or
CONFIG_COMPAT in an embedded C function, but that doesn't help much.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5434

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tapsets/5434] Error processing (missing) nfsservctl syscall
  2007-11-30  9:16 [Bug tapsets/5434] New: Error processing (missing) nfsservctl syscall jmmv at NetBSD dot org
  2007-12-05 18:36 ` [Bug tapsets/5434] " dsmith at redhat dot com
@ 2008-11-02 17:04 ` mjw at redhat dot com
  2009-10-15 23:06 ` przemyslaw at pawelczyk dot it
  2 siblings, 0 replies; 4+ messages in thread
From: mjw at redhat dot com @ 2008-11-02 17:04 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From mjw at redhat dot com  2008-11-02 17:03 -------
Got another report about this.
The problem comes from this part in fs/compat.c:
#if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
[...]
asmlinkage long compat_sys_nfsservctl(int cmd,
                                struct compat_nfsctl_arg __user *arg,
                                union compat_nfsctl_res __user *res)
{
[...]
}
#else /* !NFSD */
long asmlinkage compat_sys_nfsservctl(int cmd, void *notused, void *notused2)
{
        return sys_ni_syscall();
}
#endif

So compat_sys_nfsservctl() has differently named arguments depending on whether
or not NFSD is configured in. I also don't know a nice solution for this. But it
breaks simple things like:
stap -e 'probe syscall.* {printf("%s(%s)\n", probefunc(), argstr)}' -c 'echo'

semantic error: unable to find local 'arg' near pc 0xffffffff802cce2f
(alternatives: cmd notused notused2): identifier '$arg' at
/usr/local/share/systemtap/tapset/syscalls2.stp:66:56
        source:         argstr = sprintf("%s, %p, %p", _nfsctl_cmd_str($cmd),
$arg, $res)

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5434

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tapsets/5434] Error processing (missing) nfsservctl syscall
  2007-11-30  9:16 [Bug tapsets/5434] New: Error processing (missing) nfsservctl syscall jmmv at NetBSD dot org
  2007-12-05 18:36 ` [Bug tapsets/5434] " dsmith at redhat dot com
  2008-11-02 17:04 ` mjw at redhat dot com
@ 2009-10-15 23:06 ` przemyslaw at pawelczyk dot it
  2 siblings, 0 replies; 4+ messages in thread
From: przemyslaw at pawelczyk dot it @ 2009-10-15 23:06 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From przemyslaw at pawelczyk dot it  2009-10-15 23:06 -------
(In reply to comment #1)
... 
> I'm unsure how we could solve this, since we don't have access to the CONFIG_*
> defines at the probe level.  We could grab the value of either CONFIG_NFSD or
> CONFIG_COMPAT in an embedded C function, but that doesn't help much.

We have access to the CONFIG_* since Frank's commit:
561079c PR10702: preprocessor conditional for kernel CONFIG_foo

So it was really easy to fix this. Commit:
b452838 PR5434: Fix syscall.nfsservctl.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


http://sourceware.org/bugzilla/show_bug.cgi?id=5434

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-10-15 23:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-30  9:16 [Bug tapsets/5434] New: Error processing (missing) nfsservctl syscall jmmv at NetBSD dot org
2007-12-05 18:36 ` [Bug tapsets/5434] " dsmith at redhat dot com
2008-11-02 17:04 ` mjw at redhat dot com
2009-10-15 23:06 ` przemyslaw at pawelczyk dot it

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).