nfs.proc.open results in a kernel string copy fault

David Smith dsmith@redhat.com
Wed Jan 17 15:45:00 GMT 2007


Michael Obster wrote:
> Hi,
> 
> perhaps someone can give me a hint. First of all I tried also the 
> snapshot 20070113 which did a complete system hang up. Using now the old 
> 20061223 snapshot.
> 
> When I'm trying to use a
> probe nfs.proc.open {
>   if (execname() != "staprun")
>         printf("%s: %s (%s) = ", execname(), name, argstr)
> }
> this results in a
> ERROR: kernel string copy fault at 0x000081a4 near identifier '$filp' at 
> /opt/systemtap/share/systemtap/tapset/nfs_proc.stp:1223:27
> when the insmod is executed.
> 
> As I have seen, there is a change in this file (snapshot 20070113). But 
> using the new snapshots hangs my system. Because I have no console, I 
> don't see whether the kernel gives me an Oops.
> 
> The kernel we are using here is not a standard kernel. It is a special 
> patched MontaVista Linux kernel with some additional patches for 
> perfctr. The version is 2.6.10 with a backport patch from 2.6.13 for the 
> kprobes interface compiled with gcc 3.4.3.
> 
> So I would be pleased for any hint!

Michael,

I'm unsure of how to help you.  I tried your script using CVS systemtap 
on RHEL4 x86_64 (2.6.9-42.0.3.EL) and beta RHEL5 x86 (2.6.18-1.2747.el5) 
and it worked on both (especially after adding a '\n' to the printf 
statement).

The only reference to '$filp' in probe nfs.proc.open is the following:

	filename = __file_filename($filp)

The __file_filename function is defined in tapset/vfs.stp, and it looks 
reasonable to me.

I might start debugging this by creating your own copy of nfs.proc.open 
without the $filp reference and see if that works for you.  If that 
works, I'd try looking at each pointer __file_filename has to 
dereference (file->f_dentry->d_name.name) and see if they make sense.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)



More information about the Systemtap mailing list